summaryrefslogtreecommitdiff
path: root/compilerplugins
AgeCommit message (Collapse)AuthorFilesLines
2017-07-07loplugin:unnecessaryparen handle parens inside call exprNoel Grandin2-1/+32
stick to single-arg function calls, sometimes parens in multi-arg calls might be there for clarity Change-Id: Ib80190c571ce65b5d219a88056687042de749e74 Reviewed-on: https://gerrit.libreoffice.org/39676 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-06loplugin:unusedfields in scNoel Grandin4-461/+66
found a couple more by running make build-nocheck to exclude testing code Also, teach unusedfields loplugin about operator<<, since referring to a field in an ostream operator<< does not indicate a real use, it's normally for debugging Change-Id: I3dce22bf5afda2fd09e01de9bf1d0ef85e535aa8 Reviewed-on: https://gerrit.libreoffice.org/39625 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-06teach unnecessaryparen plugin about other kinds of statementsNoel Grandin2-10/+48
i.e. do / while / switch Change-Id: Id0985015cc425557f9984734701d56466f8a6088 Reviewed-on: https://gerrit.libreoffice.org/39601 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-06loplugin unnecessaryparan improvementsNoel Grandin1-2/+9
Change-Id: I73e945d6ec53537a0da45f6b6291018c7f251a7e Reviewed-on: https://gerrit.libreoffice.org/39587 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-05new loplugin unnecessaryparenNoel Grandin2-0/+104
Change-Id: Ic883a07b30069ca6342d7521c8ad890f4326f0ec Reviewed-on: https://gerrit.libreoffice.org/39549 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-05loplugin:unusedfields variousNoel Grandin3-1789/+36
Change-Id: Ia7bcf2471381aa6a2768ea795fe6572e38209100
2017-07-05loplugin:unusedfields connectivityNoel Grandin1-44/+0
Change-Id: I056b36249803982e451b887cc73b49a851144b7e Reviewed-on: https://gerrit.libreoffice.org/39498 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields in cui..idlNoel Grandin1-20/+0
Change-Id: Icb393cc0b2f79ded154e186ab6975b95e5126903 Reviewed-on: https://gerrit.libreoffice.org/39496 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04typo in commentStephan Bergmann1-2/+2
Change-Id: I816f2dad87d798296e60a5eb8842a147f504b90b
2017-07-04loplugin:unusedfields in editengNoel Grandin1-32/+0
Change-Id: I9806d87028a11a8103c35004c87b5098ca591409 Reviewed-on: https://gerrit.libreoffice.org/39495 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields l10ntools..rscNoel Grandin1-8/+0
Change-Id: I78785eeab436910c9e8733924a7c43fa998ba36f Reviewed-on: https://gerrit.libreoffice.org/39491 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields in formulaNoel Grandin1-12/+0
Change-Id: I5d8fe8869087efda68d040448b2d9e0e7e5611f6 Reviewed-on: https://gerrit.libreoffice.org/39493 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields in frameworkNoel Grandin1-10/+0
Change-Id: Ibb602e037bcee518c31dfe9734a5c5773cff23ab Reviewed-on: https://gerrit.libreoffice.org/39492 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields in sdNoel Grandin1-30/+0
Change-Id: I42def3dc21ae1a18e1c98d1aeeff4ed4425e941a Reviewed-on: https://gerrit.libreoffice.org/39479 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfields in sfx2Noel Grandin1-10/+0
Change-Id: I9f57545ca4ee5159a095f9b35267d298ccc7fb4e Reviewed-on: https://gerrit.libreoffice.org/39476 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:unusedfieldsNoel Grandin1-12/+0
Change-Id: I6bf3de7ba6e6bff2fd607156a0dcdd554887e491 Reviewed-on: https://gerrit.libreoffice.org/39475 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-04loplugin:casttovoid: fix containsPreprocessingConditionalInclusion()Stephan Bergmann1-2/+15
...and re-enable plugin Change-Id: I0b42cfc0f0b45711e714e6661ae9dd39f05f8960
2017-07-03loplugin:unusedfields in slideshow..svtoolsNoel Grandin1-18/+0
Change-Id: I74d5a4b8cfc4b18267f99648a3112b163c91fd8c Reviewed-on: https://gerrit.libreoffice.org/39474 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-03Disable loplugin:casttovoid for nowStephan Bergmann1-1/+1
I'd accidentally developed it against a Clang built without LLVM_ENABLE_ASSERTIONS=ON, so only saw issues with containsPreprocessingConditionalInclusion() now. Change-Id: I5da6775a06de748e78b34a42f63b0543c3893124
2017-07-03loplugin:casttovoidStephan Bergmann6-73/+714
Change-Id: I427b15b35ef6e7c803cb8a00c961d35175ae8cb2
2017-07-03Work around bug in Clang 3.8Stephan Bergmann1-4/+20
...that causes > clang/lib/AST/Type.cpp:1878: bool clang::Type::isConstantSizeType() const: Assertion `!isDependentType() && "This doesn't make sense for dependent types"' failed. compilation failure in PCodeBufferWalker in basic/source/comp/codegen.cxx > static T readParam( sal_uInt8 const *& pCode ) > { > short nBytes = sizeof( T ); > T nOp1=0; > for ( int i=0; i<nBytes; ++i ) > nOp1 |= *pCode++ << ( i * 8); > return nOp1; > } with loplugin:oncevar. Change-Id: I25417076549ea538adf013282f3657e0d642d776
2017-07-03loplugin:unusedfields in svxNoel Grandin1-34/+0
Change-Id: I027b70ee92ab07eb68452457c3ee45de3ad22c8b Reviewed-on: https://gerrit.libreoffice.org/39412 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-03loplugin:unusedfields in swNoel Grandin1-36/+0
Change-Id: I807f93757bfddf17f71568f1e3c174229f169f18 Reviewed-on: https://gerrit.libreoffice.org/39409 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-30loplugin:unusedfields in toolkit..xmloffNoel Grandin5-985/+659
Change-Id: I4964ff97e0a1735dc08c6ad204cae0b08e9ffc2c Reviewed-on: https://gerrit.libreoffice.org/39406 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-30Actually print parent nameStephan Bergmann1-3/+5
Change-Id: Iba9bacc0ecaf5288f5c53f6fa73340504c646b4f
2017-06-30Avoid getQualifiedNameAsStringStephan Bergmann3-38/+63
Change-Id: I448bfd63f1a2fb9cac3366146b10ff6a465e6db7
2017-06-29fix some crashes in unusedfields pluginNoel Grandin1-24/+26
for some reason the insideMoveOrCopyDecl pointer to MethodDecl becomes bad during AST traversal, but the pointers to RecordDecl seem stable? Change-Id: Ida939f5ca4780e674b245411f7395f147258544e
2017-06-29unusedfields loplugin writeonly analysis improvementsNoel Grandin3-13/+67
(1) ignore reads inside copy/move constructors/operator= (2) fix false+ when assigning to array field (3) ignore reference ("&") fields Change-Id: I69a1a1c567a0b28a783e605982e5150811b6cc4a
2017-06-29improve refcounting lopluginNoel Grandin2-13/+84
to find ref-counted classes being managed via other smart pointer classes. Hopefully prevent needing fixes like 642ae256ea5b8083ba0b3c097ca8ea52304b9cdb "ChangedUIEventListener is refcounted, mustn't be helt by unique_ptr" Change-Id: I6b0c5f8f87ce3546a8a1104ce1000470c09459bd Reviewed-on: https://gerrit.libreoffice.org/39378 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-29loplugin:oncevar variousNoel Grandin2-7/+11
Change-Id: I8b82d46d4688b1a59d6fe1b05da7d5c8dfc13ca6 Reviewed-on: https://gerrit.libreoffice.org/38766 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-26Fix loplugin:vclwidgets' disposeOnce checkStephan Bergmann1-16/+27
Found when trying to temporarily add a SAL_DEBUG to (otherwise empty) ~NotebookbarTabControl (sfx2/source/notebookbar/NotebookbarTabControl).
2017-06-26update constantfunction lopluginNoel Grandin1-0/+24
didn't find anything useful, so just updating the exclusion lists Change-Id: I66d37aee185290f454e5ac0baeafd1f67bfaf106 Reviewed-on: https://gerrit.libreoffice.org/39254 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-26extensions: remove COMPMOD preprocessor definesJochen Nitschke1-1/+1
COMPMOD_RESPREFIX=abp was unused ever since initial commit in 2001. COMPMOD_NAMESPACE was used to set the namespace name qualifier of the helper in componentmodule.hxx to the extension's namespace name. I don't see why this is necessary as the helper is always compiled in a separate extension library. Change-Id: I287607008db3dc0ebc32731536747a921c91807d Reviewed-on: https://gerrit.libreoffice.org/39184 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-23std::string -> StringRefStephan Bergmann1-3/+3
Change-Id: I06145822290ae4b3690a792eb4d2ad79437fd9cc
2017-06-21Fix compilation with Clang 3.9.1Tor Lillqvist1-1/+1
Change-Id: I6e96064a001fd511864665fe0ef8b60d45462c12
2017-06-21loplugin:unusedfields in svx part1Noel Grandin1-301/+2437
Change-Id: I6621e0dda5a5dc3e68c7b1613975c075e2879912 Reviewed-on: https://gerrit.libreoffice.org/39006 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-20-Werror=unused-functionStephan Bergmann1-9/+0
Change-Id: Iecc7d68ad18e90bf84d358af92194c230efc2671
2017-06-20fix for older clang in lopluginsNoel Grandin1-1/+4
since commit 03ee996717dcf9e20529a6a3295df69d0d86dcce "loplugin:unusedfields fix more false +" Change-Id: Ief935fea8c554707db38b4ede4fab2ec1adca997
2017-06-20reformat some loplugin codeNoel Grandin22-360/+341
to match our more normal conventions. Also drop the 'using std' and some other cruft Change-Id: I02ef81c5427188bc03a20b157a57a900a9d7bf0d
2017-06-20loplugin:unusedfields fix more false +Noel Grandin2-59/+53
deal with fields assigned to local variables, and some general cleanup Change-Id: I894c74a01e9e28935ecd84308c2e92b080afafc6
2017-06-20loplugin:unusedfields fix some more false positivesNoel Grandin2-2/+33
in the write-only analysis Change-Id: Ic570416e855b8ec38d54f6f6f1adef4819ea53ee
2017-06-20improve oncevar lopluginNoel Grandin3-166/+342
we look for any kind of scalar variable now that deserves to be inlined, and we check for variables that cannot be inlined because they are being passed by reference, or modified, or have their address taken Change-Id: Ia744a180e91d1516140a1555d4514f6fa4de1c0b Reviewed-on: https://gerrit.libreoffice.org/38966 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-20loplugin:unusedfields fix false positiveNoel Grandin6-22/+101
When the field in question is read from inside a constructor initializer. In the process, create some needed infrastructure in the plugin classes. Change-Id: I2f440efa6912801a236727c9fe3180404616958c Reviewed-on: https://gerrit.libreoffice.org/38960 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-19only unit-test one loplugin at a timeNoel Grandin8-21/+30
tell the plugin code when we are unit-testing it, so we can suppress all the warnings except for the plugin we are currently testing Change-Id: I240c8e37eba90c219e53c29531a3a43bc841a1c8
2017-06-19Make SfxItemSet ranges correct by construction: Fix static casesStephan Bergmann2-0/+172
...with the aid of an extended compilerplugins/clang/store/sfxitemsetrewrite.cxx (which in turn needed a small addition to compilerplugins/clang/check.hxx). Enable svl::detail::validGap check for the static case, but keep it disabled for now for the dynamic case. Change-Id: I4846ba8e99aff94a86518e2cb5044e575093386e
2017-06-16Make SfxItemSet ranges correct by constructionStephan Bergmann1-0/+262
This is a follow-up to 45a7f5b62d0b1b21763c1c94255ef2309ea4280b "Keep WID ranges sorted, and join adjacent ones". While SfxItemSet::MergeRange relies on the m_pWhichRanges being sorted (and, under DBG_UTIL, asserts if they are not), the various SfxItemSet constructors curiously only check (via assert or DBG_ASSERT) that each individual range has an upper bound not smaller than its lower bound. Arguably, all SfxItemSet instances should fulfill the stronger guarantees required and checked by MergeRange. And in many cases the ranges are statically known, so that the checking can happen at compile time. Therefore, replace the two SfxItemSet ctors taking explicit ranges with two other ctors that actually do proper checking. The (templated) overload taking an svl::Items struct should be used in all cases where the range values are statically known at compile time, while the overload taking a std::initializer_list<Pair> is for the remaining cases (that can only do runtime checking via assert). Most of those latter cases are simple cases with a single range covering a single item, but a few are more complex. (At least some of the uses of the existing SfxItemSet overload taking a const sal_uInt16* pWhichPairTable can probably also be strengthened, but that is left for another day.) This commit is the first in a series of two. Apart from the manual changes to compilerplugins/clang/store/sfxitemsetrewrite.cxx, include/svl/itemset.hxx, and svl/source/items/itemset.cxx, it only consists of automatic rewriting of the relevant SfxItemSet ctor calls (plus a few required manual fixes, see next). But it does not yet check that the individual ranges are properly sorted (see the TODO in svl::detail::validGap). That check will be enabled, and the ensuing manual fixes will be made in a follow-up commit, to reduce the likelyhood of accidents. There were three cases of necessary manual intervention: * sw/source/core/unocore/unostyle.cxx uses eAtr of enum type RES_FRMATR in braced-init-list syntax now, so needs explicit narrowing conversion to sal_uInt16. * In sw/source/uibase/uiview/formatclipboard.cxx, the trailiing comma in the definition of macro FORMAT_PAINTBRUSH_FRAME_IDS needed to be removed manually. * In svx/source/svdraw/svdoashp.cxx, svx/source/svdraw/svdotext.cxx, sw/source/uibase/app/docstyle.cxx, sw/source/uibase/shells/frmsh.cxx, sw/source/uibase/shells/grfsh.cxx, and sw/source/uibase/shells/textsh1.cxx, some comments had to be put back (see "TODO: the replaced range can contain relevant comments" in compilerplugins/clang/store/sfxitemsetrewrite.cxx). A few uses of the variadic form erroneously used nullptr instead of 0 for termination. But this should have been harmless even if promoted std::nullptr_t is larger than promoted sal_uInt16, assuming that the part of the nullptr value that was interpreted as sal_uInt16/promoted int was all-zero bits. Similarly, some uses made the harmless error of using 0L instead of 0. Change-Id: I2afea97282803cb311b9321a99bb627520ef5e35 Reviewed-on: https://gerrit.libreoffice.org/38861 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-06-15improve unusedfields lopluginNoel Grandin2-10/+34
to ignore assignments when doing writeonly analysis Change-Id: I9eb6f2594003a610582dbc20acb7ccf14ef72c6c
2017-06-13Generalize loplugin:stringcopy to loplugin:redundantcopyStephan Bergmann2-8/+16
(such redundant std::unique_ptr copies could happen when changing parts of the code base to make use of std::unique_ptr individually) Change-Id: Ib48a45a212f9426a775c7f379bc5d3c92230218a
2017-06-08DbgCheckItemSet is goneStephan Bergmann1-2/+0
...since 87c9465262680dec09efb869800859aa65ab1d19 "Bin unused function DbgCheckItemSet" Change-Id: I109598dc5e087697d77b96a0ba2fb178d47b3aa6
2017-06-06getBody() can be null for a defaulted dtorStephan Bergmann1-3/+3
Not sure why that started to pop up only now, maybe something changed with recent Clang trunk. Change-Id: Ib6587b66afbf3e43d92c78432c0bfd61c74ba6c5