summaryrefslogtreecommitdiff
path: root/compilerplugins
AgeCommit message (Collapse)Author
2017-10-24loplugin:includeformStephan Bergmann
Consistently use the #include "..." form for exactly those cases where the included file is located next to the including file, see the mail thread starting at <https://lists.freedesktop.org/archives/libreoffice/2017-October/078601.html> "C[++]: Normalizing include syntax ("" vs <>)". (For UNO API include files, see 189abcf0db61c41a565bd355294bf6e712fc3e5a "loplugin:includeform: UNO API include files".) (Some of the commits done earlier with messages containing "Change done in preparation of loplugin:includeform" etc. were based on a somewhat different earlier version of this plugin and would not be necessary with the current form. But they are harmless and reverting them would probably cause more noise than benefit, so just leave them in.) Change-Id: I9fe9268ed84d31b5df71857a2e535972b11254ce Reviewed-on: https://gerrit.libreoffice.org/43730 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-22loplugin:redundantcast: Do warn about convoluted dynamic_cast to selfStephan Bergmann
...that the compiler is free to elide anyway. (See 4e7ffc0a69dac31ca7e0f1649f1697a1ff8d6e5f "Avoid compiler eliding#redundant dynamic_cast" and 380d6afe5fd691f6ad4b17fc38b79b9fca4ba906 "Remove redundant asserts involving dynamic_cast".) Change-Id: I3f75154fee3e978b7ba95a5a27589417065599bd
2017-10-22Make sure TypeCheck has a non-deleted default ctorStephan Bergmann
...as needed by > core/compilerplugins/clang/check.cxx:19:19: error: call to implicitly-deleted default constructor of 'loplugin::TypeCheck' > ? *this : TypeCheck(); > ^ > core/compilerplugins/clang/check.hxx:76:5: note: explicitly defaulted function was implicitly deleted here > TypeCheck() = default; > ^ > core/compilerplugins/clang/check.hxx:78:27: note: default constructor of 'TypeCheck' is implicitly deleted because field 'type_' of const-qualified type 'const clang::QualType' would not be initialized > clang::QualType const type_; > ^ after https://llvm.org/svn/llvm-project/cfe/trunk@315194 "Make SourceLocation, QualType and friends have constexpr constructors" defaulted the clang::QualType ctor. Change-Id: Idaeaa4499cea877fd5d66c18b8fce24b7808ba04
2017-10-21loplugin:redundantcast handle dynamic_castNoel Grandin
Change-Id: I7855c76e820efce96778b1c19ec71dffcc4b4abb Reviewed-on: https://gerrit.libreoffice.org/43621 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-21Avoid loplugin:faileddyncast for "unnecessary", up-casting dynamic_castStephan Bergmann
Change-Id: Iecb943db0aff7ffc21cc2f6adb625be369255b32 Reviewed-on: https://gerrit.libreoffice.org/43606 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-20Fully ignore inappropriately named loplugins in unit-test modeStephan Bergmann
...even if they implement PPCallbacks, so filtering them out in HandleTranslationUnit was ineffective. Change-Id: I9df8103a50739f3176e6d63accfd0334da7faa9a Reviewed-on: https://gerrit.libreoffice.org/43575 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-18rename some fieldsNoel Grandin
in preparation for const-method detection Change-Id: Iecf7102892d664ded799615ce1a848a538dcfcef
2017-10-18loplugin:manualrefcountNoel Grandin
this is the code I used to find naked acquire/release stuff No need to run it all the time, so leave it in store Change-Id: I9ac4a6f5db7cd4cbb1b63698340425eed7cb8713
2017-10-17Move lotuswordpro include files to common include directoryStephan Bergmann
...that are included from both lotuswordpro/source/filter and lotuswordpro/source/filter/xfilter. Change done in preparation of loplugin:includeform. Change-Id: I7b65d3232e164af662b7de5bb49d59597803d41c Reviewed-on: https://gerrit.libreoffice.org/43453 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-17loplugin:finalclasses trim the output a littleNoel Grandin
Change-Id: Iad0f0ded624e95448421c19a04535c2511b66a02
2017-10-16Move svx include files to common include directoryStephan Bergmann
...that are included from various source directories. Change done in preparation of loplugin:includeform. Change-Id: I9191e80aa721c376f17219e4d10eb83929e38e14
2017-10-11Use unique class names for better FlameGraph resultsStephan Bergmann
...of measuring loplugin performance, when gathering data with perf and all plugins that used "Visitor" as class name were lumped together. (Cf. <https://whatofhow.wordpress.com/2016/06/28/plugin-flamed/>.) Change-Id: Ie482f443faced7469528da4772e735bc2eda596d Reviewed-on: https://gerrit.libreoffice.org/43324 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-09Move loplugin:bodynotinblock to store/, to improve performanceStephan Bergmann
...as it was the last remaining enabled-by-default plugin that calls expensive parentStmt. It isn't immediately clear to me how to rewrite the plugin to not call that, but a superset of this plugin's warnings are now also emitted by GCC 6 -Wmisleading-indentation. Change-Id: Ifa55cb14f6763594fe48926585df29d4d30355df
2017-10-06disable constparams lopluginNoel Grandin
increases compile time too much, I will run this by hand periodically Change-Id: I118567ef294847ff609d4de771d998ce3b57161b
2017-10-06Improve performance of loplugin:flattenNoel Grandin
...by avoiding calls to parentStmt. Change-Id: I4f3d66a0529e9c3abf5c963bcf70db7a2afa1bf9
2017-10-06Improve performance of loplugin:commaoperatorStephan Bergmann
...by avoiding calls to parentStmt, thereby also improving the precision of exactly which comma operators to ignore (which turned up a handful more finds). Also added tests. Change-Id: Ie74f824fd7f54131aab09b59086452fb4f3ff827 Reviewed-on: https://gerrit.libreoffice.org/43181 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-05loplugin:finalclasses in vclNoel Grandin
Change-Id: I7de9cd6c5569217aa8d379c6d112cd1874bca8e2 Reviewed-on: https://gerrit.libreoffice.org/43151 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-05Also suppress loplugin:flatten in C++ class member functions...Stephan Bergmann
...invovling preprocessing conditionals, to actually make the unhelpful warning on Windows about OleEmbeddedObject::changeState go away. And while at it, make the check for preprocessing conditionals more targeted (similar to 1084e8be44661aaeacb8801707701013eb3fcdbc "More targeted check for preprocessing conditionals in loplugin:blockblock"). Change-Id: I0300e0a547e969520a90cd126ea8f788cc17560f Reviewed-on: https://gerrit.libreoffice.org/42975 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-10-05loplugin:mergerclass merge FillAttrLB with SvxFillAttrBoxNoel Grandin
Change-Id: I5dfa7689eb219548bde7ce181a0a453c84b0f066 Reviewed-on: https://gerrit.libreoffice.org/43136 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-04loplugin:mergeclasses merge IInterface with SwDocNoel Grandin
Change-Id: I6d400540c878db4504f6830aa9a3a6a381162520 Reviewed-on: https://gerrit.libreoffice.org/43127 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-04Revert "check for unnecessary DLLPUBLIC annotations"Stephan Bergmann
This reverts commit a599eeab786ecbe1b5b6509e3c792e5c1ba31248, plus follow-up fa4431449d0306e8179f53a2a69c549800bd24bd "Avoid bogus loplugin:dllmacro 'unnecessary *DLLPUBLIC declaration ...'". See (abandoned) <https://gerrit.libreoffice.org/#/c/42983/> "loplugin:dllmacro: Handle implicit member functions" how this would have needed to be extended to give consistent results across Linux and macOS, but then would have started to remove DLLPUBLIC from entities that apparently need to at least have default type visibility on macOS and started to make tests fail.
2017-10-04More targeted check for preprocessing conditionals in loplugin:blockblockStephan Bergmann
Change-Id: Ib9b6b266ed4bf4d2672aed723c7f92f58c9007b3
2017-10-04Fix test, and add missing TraverseFunctionDecl base caseStephan Bergmann
Change-Id: I31f238fe931e8d890cd70b1a1eb52f042f487a76
2017-10-04Suppress loplugin:blockblock in functions involving preprocessing conditionalsStephan Bergmann
...as needed to avoid an unhelpful warning about Player::createPlayerWindow in avmedia/source/gstreamer/gstplayer.cxx when included from avmedia/source/gstreamer/gst_0_10.cxx (so that ENABLE_GTKSINK is not defined). Change-Id: I6de9cc59cf8e611c4c9d939dd837499b1d2c8787
2017-10-04move stuff in i18npool/i18nutil in own namespaceNoel Grandin
instead of trying to share the css::i18n namespace, which is just very confusing and should be left to actual UNO artifacts Change-Id: I2f5c36bf1af9a2a98c4f997dd450d015e75ed3f6 Reviewed-on: https://gerrit.libreoffice.org/43079 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-03new loplugin:finalclassesNoel Grandin
look for classes which are effectively final, but contain protected members. These members can be made private. Change-Id: If53d535b068b668d1aff548ebfd0fe6c51a48a0e
2017-10-03new loplugin:blockblockNoel Grandin
Change-Id: I7b68b70fa4c7234e8882f7627026959a596968fd Reviewed-on: https://gerrit.libreoffice.org/43025 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-30loplugin:constparams: Ignore functions whose address is takenStephan Bergmann
(unless as the callee of a function call). In response to <https://gerrit.libreoffice.org/#/c/42912/> "DO NOT MERGE - error in clang static plugin". Many of the whitelisted functions can now be taken off the list. Change-Id: I04c2ee445e7973a288f42fd663d8b2d78cd3c5aa Reviewed-on: https://gerrit.libreoffice.org/42958 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-30Suppress loplugin:flatten in functions involving preprocessing conditionalsStephan Bergmann
...as needed by clang-cl on Windows to avoid unhelpful warnings about OleEmbeddedObject::changeState (embeddedobj/source/msole/oleembed.cxx) containging an "if" in an "#ifdef _WIN32" block followed by "else throw". Change-Id: I95bed29b9003db08499156ae7f885aeeea5a0158 Reviewed-on: https://gerrit.libreoffice.org/42963 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-30Support loplugin in clang-clStephan Bergmann
This works at least with a recent Clang trunk (towards Clang 6.0). In order for the plugin.dll to find the LLVM/Clang symbols, it needs to be loaded into clang.exe not clang-cl.exe, so set CC/CXX to 'clang.exe --driver-mode=cl ...'. Buidling the plugin requires some linker flags that must go at the very end of the COMPILER_PLUGINS_CXX command line, after a /link switch, so introduce another COMPILER_PLUGINS_CXX_LINKFLAGS variable for that. Also, clang.lib is not installed as part of LLVM's 'cmake --build ... --target install' step, so is not available under CLANGDIR and needs to be taken from the build tree instead, so introduce another CLANGLIBDIR variable for that. autogen.input settings that work for me on Windows 8.1 with Microsoft Visual Studio 14.0 are: > CLANGDIR=C:/llvm/inst > CLANGLIBDIR=C:/llvm/build/lib > COMPILER_PLUGINS_CXX=C:/PROGRA~2/MICROS~3.0/VC/bin/amd64/cl.exe /IC:\PROGRA~2\MICROS~3.0\VC\INCLUDE /IC:\PROGRA~2\MICROS~3.0\VC\ATLMFC\INCLUDE /IC:\PROGRA~2\WI3CF2~1\10\include\100102~1.0\ucrt /IC:\PROGRA~2\WI3CF2~1\NETFXSDK\46D346~1.1\include\um /IC:\PROGRA~2\WI3CF2~1\8.1\include\shared /IC:\PROGRA~2\WI3CF2~1\8.1\include\um /IC:\PROGRA~2\WI3CF2~1\8.1\include\winrt > COMPILER_PLUGINS_CXX_LINKFLAGS=/LIBPATH:C:/PROGRA~2/MICROS~3.0/VC/LIB/amd64 /LIBPATH:C:/PROGRA~2/MICROS~3.0/VC/ATLMFC/LIB/amd64 /LIBPATH:C:/PROGRA~2/WI3CF2~1/10/lib/100102~1.0/ucrt/x64 /LIBPATH:C:/PROGRA~2/WI3CF2~1/NETFXSDK/46D346~1.1/lib/um/x64 /LIBPATH:C:/PROGRA~2/WI3CF2~1/8.1/lib/winv6.3/um/x64 (The last two are "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/ amd64/cl.exe" and translations of %INCLUDE% and %LIB% as set in the "VS2015 x64 Native Tools Command Prompt" shell. AC_CHECK_HEADER(clang/AST/RecursiveASTVisitor.h, ...) in configure.ac wouldn't like CXX to start with INCLUDE=... LIB=... environment variable settings, so it wouldn't work to instead pass %INCLUDE% and %LIB% to cl.exe that way. See <https://wiki.documentfoundation.org/Development/clang-cl> for general information about building with clang-cl on Windows.) There's still some room for improvement marked "TODO". (And some of the unused* plugins, which are not run by default anyway, use Unix-style functionality, so have been disabled for now.) Change-Id: I6c28bdeb801af39ce2bae03111f455e2338d66c9 Reviewed-on: https://gerrit.libreoffice.org/42931 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-30Access to ProcessEventsToSignal's bSignal is racyStephan Bergmann
...so spell out its single use, locking the appropriate mutex around the access Change-Id: I8e8f47de1979f5a80cf1ad65e5ec24d25145c463 Reviewed-on: https://gerrit.libreoffice.org/42908 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-29Avoid bogus loplugin:dllmacro "unnecessary *DLLPUBLIC declaration ..."Stephan Bergmann
...about the definition of __cxxabiv1::__cxa_exception in bridges/source/cpp_uno/gcc3_linux_x86-64/share.hxx, when a declaration of that struct has already been seen in /usr/include/c++/7/cxxabi.h in a #pragma GCC visibility push(default) ... #pragma GCC visibility pop block (so that decl->getAttr<VisibilityAttr>() would point at the first of those two pragmas). Change-Id: I4af56be8ce84ace57a809a09da5c44d86fc4237a
2017-09-29Adapt loplugin:unreffun to clang-cl (uses of DllMain and wmain)Stephan Bergmann
Change-Id: I6ef1c55ce0fb8fa350559612780a1091d8627d3e Reviewed-on: https://gerrit.libreoffice.org/42915 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-29Adapt loplugins to clang-cl's (implicit) -fdelayed-template-parsingStephan Bergmann
...which is there for MSVC compatibility, but can cause getBody() to return null even when doesThisDeclarationHaveABody() is true. And in staticmethods.cxx we need to check doesThisDeclarationHaveABody() instead of hasBody(): For some class template member functions that are only defined outside their class definition, as is the case for OSequenceIterator::hasMoreElements in include/comphelper/sequence.hxx, hasBody() may be true for the original member function declaration inside the class (as there is some later definition that does have a body), but isLateTemplateParsed() is not (it is only true for the later definition). So just skip any such declarations that are not definitions (which is sane anyway, as otherwise such functions could pointlessly be inspected multiple times). Change-Id: I724f652a8f060a931f8b5fc3e4feb5f307a922bf Reviewed-on: https://gerrit.libreoffice.org/42914 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-29More clang::*Type vs. llvm::*Type ambiguitiesStephan Bergmann
Change-Id: I52373c32818234e376d855684635f9bf1012ed5e
2017-09-29check for unnecessary DLLPUBLIC annotationsNoel Grandin
on classes which are fully defined in a header file Rename the dllprivate plugin to dllmacro and add the functionality there. Change-Id: I4581d551c46a8f61213d95973f323359d08278d8
2017-09-29loplugin:unusedfields improve finding calleeNoel Grandin
which makes absolutely no difference to the results, but anyhow, would be a shame to waste the work Change-Id: I4576528f30986a5ce522c76fdf21873f0ce23f0a
2017-09-29loplugin:flatten check for throw in then clauseNoel Grandin
also make the plugin ignore the case where we have var decl's in the clause we want to flatten, which could lead to problematic extension of variable lifetime Change-Id: I3061f7104e8c6a460bf74f5eac325a516ec50c59 Reviewed-on: https://gerrit.libreoffice.org/42889 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-29Adapt loplugin:reservedid to WindowsStephan Bergmann
Change-Id: I41ccccd7ad77bc4ecf2ff7fcd9496af656ad952e
2017-09-28Look through derived-to-base ImpliciCastStephan Bergmann
...as happens on Windows when looking at maControlToPropertyMap.clear(); in PrintDialog::dispose (vcl/source/window/printdlg.cxx), where std::map's clear happens to be declared at some base class std::_Tree. Change-Id: I41810514bca59af8b4f2812d9412ce6a8d43576c
2017-09-28loplugin:stringconstant: Simplify construction of non-ASCII OUStringStephan Bergmann
Change-Id: If80c53978106789824e6154db396baeecc1969dd Reviewed-on: https://gerrit.libreoffice.org/42876 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-27update unusedfields loplugin resultsNoel Grandin
Change-Id: I4bdf5701fe9a4dec618440db1fe69e5aad7a60bb
2017-09-27disable flatten lopluginNoel Grandin
<noelgrandin> sberg, new plugin flatten just went active <sberg> noelgrandin, with a measure to avoid extending lifetime of (problematic) local vars? <noelgrandin> sberg, no <sberg> noelgrandin, how can you make it active then? <noelgrandin> sberg, ok, will disable Change-Id: I595d1a50ff34417faf73b777714f9dc92e2a43d2
2017-09-27loplugin:flatten in variousNoel Grandin
Change-Id: I42dca691ffadbddad38a7e8f978b1da9d5d9a7b0 Reviewed-on: https://gerrit.libreoffice.org/42842 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-27loplugin:stringconstant: Also handle u8"..." stringsStephan Bergmann
(just in case) Change-Id: Id8ce7436bacba874d9bc04915e42622e3cfca67a
2017-09-26Rename the basegfx::tools namespace to basegfx::utilsTor Lillqvist
Reduce potential confusion with the global tools namespace. Will hopefully make it possible to remove the annoying initial :: when referring to the global tools namespace. Unless we have even more tools subnamespaces somewhere. Thorsten said it was OK. Change-Id: Id088dfe8f4244cb79df9aa988995b31a1758c996 Reviewed-on: https://gerrit.libreoffice.org/42644 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2017-09-26improve unnecessarycatchthrow pluginNoel Grandin
it is not legal to eliminate a catch/re-throw where the re-throw expliciting mentions the exception variable and the exception variable is a non-final class Change-Id: I7fd88b0d004d2efa66aef2c0876e07f203da3c28 Reviewed-on: https://gerrit.libreoffice.org/42782 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-26loplugin:redundantcast: cstyle_cast within reinterpret_castStephan Bergmann
Change-Id: Ie31c9dd6d8741aa856553b798bb5b7f695a3fe0f Reviewed-on: https://gerrit.libreoffice.org/42776 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-09-25Fix typosAndrea Gelmini
Change-Id: I879a52820d78d9151ef64dd21612379f617f66e2 Reviewed-on: https://gerrit.libreoffice.org/42726 Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com>
2017-09-23loplugin:flatten in svl..svxNoel Grandin
and implement a check in the plugin to prevent us modifying the same patch of source code twice. This logic should probably be moved into plugin.cxx at some point. Change-Id: I7ebff6424cc8733bb2c8f7dba75eaaec68649290 Reviewed-on: https://gerrit.libreoffice.org/42660 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>