summaryrefslogtreecommitdiff
path: root/compilerplugins
AgeCommit message (Collapse)AuthorFilesLines
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
2017-06-06Avoid loplugin:unreffunStephan Bergmann1-0/+1
Change-Id: I75ea46f257046bb42b2bfad3a5bd4450868e0d69
2017-06-05Improved loplugin:cstylecast to reference typesStephan Bergmann1-5/+4
Change-Id: Ie95ab6d588cfe40cc9748ce526b80d06fe825da5
2017-06-05Improved loplugin:redundantcast, const/static_cast combinationsStephan Bergmann2-1/+58
Change-Id: I3b24327835cd4e1842ee6e9b87ab06efa25a4bbf
2017-06-05Reduce loplugin:redundantcast warnings about functional casts even futherStephan Bergmann2-5/+12
Change-Id: I8884e17c453831e048c43012ee176093c5b2f99e
2017-06-05Fix typosAndrea Gelmini1-1/+1
Change-Id: I9eb05432732a04e816946fbb13001df100a31f73 Reviewed-on: https://gerrit.libreoffice.org/38395 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-06-02Reduce loplugin:redundantcast warnings about functional casts even futherStephan Bergmann3-9/+12
Change-Id: Ieae9b5c9c7c6d9b8459e5d163f55d8f5024adfae
2017-06-02Improved loplugin:redundantcast const_cast handlingStephan Bergmann2-13/+119
Change-Id: I4c24ff5d9d5e74bef2a4040c6308c504282af55d
2017-06-02Reorganize testsStephan Bergmann1-4/+14
Change-Id: Ic3d9e55b2730a3ea01cc6c7c9fbdd80a1e653c7e
2017-06-02Make loplugin:redundantcast functional cast warnings more verboseStephan Bergmann3-9/+9
(useful when types involve typedefs) Change-Id: I93e8962fd4b9c4ef79990e057dfa07538380008c
2017-06-02Improved loplugin:redundantcast static_cast handlingStephan Bergmann5-16/+257
Change-Id: I74e4ebda40f95661c5ae344132fcabbbf08ab0a4
2017-06-01Improve suppression of loplugin:redundantcast in CPPUNIT_ASSERTStephan Bergmann2-34/+14
Change-Id: I65f95e7245f08592ea11cc75e1cf34dcbdf16b40
2017-06-01remove overly large loplugin result fileNoel Grandin1-292268/+0
should not have been committed in the first place, was an accident Change-Id: Ie38cc77624bae5b3f9cc110085d0fe19b26c75c6
2017-06-01Fix typosAndrea Gelmini1-1/+1
Change-Id: Ic7fbd750321e4cfde1cfb0e04ffb545bb1f66d9c Reviewed-on: https://gerrit.libreoffice.org/37921 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2017-06-01Avoid "default initialization ... without ... default constructor" errorStephan Bergmann1-1/+1
Change-Id: Ic336b33bd747cd55955231cbe0b5a9d474adf3ab
2017-05-31Add some loplugin:redundantcast testsStephan Bergmann1-0/+13
Change-Id: I5c39a745b70655f92953ec785d01a3a52d9ec42b
2017-05-31The updated values of t1, t2 are unusedStephan Bergmann1-7/+3
...since f1bbda1c26dc16642038ea70288eec60b43520b6 "loplugin:cstylecast: deal with remaining pointer casts" Change-Id: Idecc702344c674e6f39051e4f8c2114017e317cb
2017-05-31DataRecursionQueue was only introduced in Clang 3.8Stephan Bergmann1-3/+10
(r253948 "Use data recursion in RecursiveASTVisitor when traversing Stmt and Expr nodes") Change-Id: I393474048ecbe0f6b7f19f00c2f830f495b2b6f0
2017-05-30Restrict loplugin:redundantcast to "real" castsStephan Bergmann1-11/+13
Change-Id: Ifc9de898e5c9a084cbfd739625c679185c3a1534
2017-05-30Traverse InitListExpr only onceStephan Bergmann1-0/+9
Arbitrarily chosing to traverse the semantic instead of the syntactic form. Change-Id: Id1b4e49421a5550bb2fa9f0d7e6f83bf7abb6ebb
2017-05-30Make loplugin:redundantcast accept bool(FD_ISSET(...)) againStephan Bergmann1-0/+24
Change-Id: I4e96c55c246cf806f17df31844a00d0e8a5e4f56
2017-05-30teach redundantcast plugin about functional castsNoel Grandin3-4/+66
Change-Id: Iac8ccd17d9e46ebb2cb55db7adb06c469bbd4ea0 Reviewed-on: https://gerrit.libreoffice.org/37910 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-25loplugin:constantparamNoel Grandin6-4/+299000
add the results files so I can just see the diff in future Change-Id: Ia20a1aa6418be95ed620719cde340c00b7b053e1 Reviewed-on: https://gerrit.libreoffice.org/37988 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-24loplugin:unusedfieldsNoel Grandin2-41/+27
Change-Id: Ib91c6d23a1af3735d9c030eaf9efae817f513c58 Reviewed-on: https://gerrit.libreoffice.org/37982 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-23enhance useuniqueptr lopluginNoel Grandin2-12/+34
teach it to look for the following sequence in a destructor: delete m_pfoo; m_pfoo = nullptr; Change-Id: Icd6271a63a024e32b53cc9e599f8f59952160380 Reviewed-on: https://gerrit.libreoffice.org/37900 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-21Fix typosAndrea Gelmini1-2/+2
Change-Id: I438b6719817e0bbb47370ec54561eed2bc402cba Reviewed-on: https://gerrit.libreoffice.org/37783 Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com> Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
2017-05-19...and re-eanble loplugin:stringcopy againStephan Bergmann3-76/+79
<http://reviews.llvm.org/D22128> "Make CastExpr::getSubExprAsWritten look through implicit temporary under CK_ConstructorConversion" was biting me again. (I had originally developed loplugin:stringcopy against a Clang build that includes my local fix for that issue. I really need to see to get that resolved upstream...) (And while 957874168491f4b030fda85c65dd969aae82a670 "loplugin:stringcopy" was actually a false positive, it doesn't hurt either, so just keep it.) Change-Id: I726956adfbe67681005173cfdfed2e4b4cd6253d
2017-05-19Disable loplugin:stringcopy for nowStephan Bergmann1-1/+1
Some versions of Clang apparently have an issue with CastExpr::getSubExprAsWritten, causing false postivies as in 957874168491f4b030fda85c65dd969aae82a670 "loplugin:stringcopy", where getSubExprAsWritten in > CXXFunctionalCastExpr 0x114a333a8 'class rtl::OUString' functional cast to class rtl::OUString <ConstructorConversion> > `-CXXBindTemporaryExpr 0x114a33388 'class rtl::OUString' (CXXTemporary 0x114a33380) > `-CXXConstructExpr 0x114a33348 'class rtl::OUString' 'void (class rtl::OUString &&)' elidable > `-MaterializeTemporaryExpr 0x114a33330 'class rtl::OUString' xvalue > `-CXXBindTemporaryExpr 0x114a33310 'class rtl::OUString' (CXXTemporary 0x114a33308) > `-ImplicitCastExpr 0x114a332f0 'class rtl::OUString' <UserDefinedConversion> > `-CXXMemberCallExpr 0x114a332c8 'class rtl::OUString' > `-MemberExpr 0x114a33290 '<bound member function type>' .operator OUString 0x1149b3b60 > `-DeclRefExpr 0x114a324b8 'class jfw::CXmlCharPtr' lvalue Var 0x114a31ce0 'sUser' 'class jfw::CXmlCharPtr' erroneously returns the MaterializeTemporaryExpr instead of looking through all the way down to the DeclRefExpr. Will need further investigation. Change-Id: I579cd6047b8bbf8833123ce5ad47ae7e3a33eb12
2017-05-19loplugin:stringcopyStephan Bergmann2-0/+76
Change-Id: Ib04ef019996888166c25ad140b7c718a173a782a
2017-05-19loplugin:unusedfieldsNoel Grandin3-37/+862
make it a little smarter in dealing with fields that are smart pointers Change-Id: I44072105170882dc29fb19558f1065cffc7e5f11 Reviewed-on: https://gerrit.libreoffice.org/37751 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-18Remove unnecessary restrictionsStephan Bergmann1-13/+0
Change-Id: Idc0db273f7ad2d6b11113752ca01a1f2a327e991
2017-05-18Rewrite in macro argumentsStephan Bergmann1-0/+10
Change-Id: I6ae619edac26fe06d1f86f139b7cf71ce31146d4
2017-05-18Avoid nested automatic rewritesStephan Bergmann1-1/+28
...which would come out garbled. One place is > bool bRet = SfxItemState::SET == pSet->GetItemState( i, rAttr.Which() != RES_TXTATR_AUTOFMT, &pItem ); in SwAttrHandler::PushAndChg (sw/source/core/text/atrstck.cxx) Change-Id: I1486313b25850dc59e10edb38b8bd28a30e6aa63
2017-05-18Refuse to rewrite in workdirStephan Bergmann2-0/+27
...instead of merely getting a warning from PluginHandler::HandleTranslationUnit after the fact. Such automatic rewriting should probably never be what one wants. Change-Id: I3829007224a197ebb4d55d24323b375cbbdf815c
2017-05-18Adapt pathname checks to mixed usage of \ and / on WindowsStephan Bergmann24-187/+253
Change-Id: I91bc89a9076c6642e06b238f65f2d31a1d20c6b5