summaryrefslogtreecommitdiff
path: root/compilerplugins/clang
AgeCommit message (Collapse)Author
2018-10-03loplugin:unusedfieldsNoel Grandin
Change-Id: I3d2cdd80b542dbdbd29971ef837111191809f081 Reviewed-on: https://gerrit.libreoffice.org/61282 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-10-03loplugin:unusedmethodsNoel Grandin
Change-Id: I7db0c27ff2213210ed4b46ebbadc1a2f74a18257 Reviewed-on: https://gerrit.libreoffice.org/61249 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-10-03loplugin:unusedfieldsNoel Grandin
Change-Id: Idf6f7f2946eecada64d2a586194533840ec8cc63 Reviewed-on: https://gerrit.libreoffice.org/61248 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-10-01Add loplugin:includeform documentationStephan Bergmann
Change-Id: I5a8c6ab0a967d9da2e1764301cd54f87f467a653 Reviewed-on: https://gerrit.libreoffice.org/61176 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-10-01implicitboolconversion: ignore quint64 bitfieldJan-Marek Glogowski
Change-Id: I97380455b9f526b75c7d3855d188d2f659035ba2 Reviewed-on: https://gerrit.libreoffice.org/61170 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-28loplugin:unusedmethodsNoel Grandin
Change-Id: I5f9ef043d76c55f2c761fd08a2bc1dae66b675c8 Reviewed-on: https://gerrit.libreoffice.org/61073 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-28Fix typoAndrea Gelmini
Change-Id: I3473cb5a565aba822428178030572325425c6a13 Reviewed-on: https://gerrit.libreoffice.org/61030 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2018-09-28loplugin:unusedfieldsNoel Grandin
Change-Id: I355fad84ed8765e8eb3fadb7c239b3b902ec1747 Reviewed-on: https://gerrit.libreoffice.org/61059 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-28Fix E_SUCCEDED -> E_SUCCEEDEDAndrea Gelmini
It passed "make check" on Linux. Change-Id: I96b34c818f6d4170c110ecd1fb93af79c3279e57 Reviewed-on: https://gerrit.libreoffice.org/61028 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2018-09-27loplugin:methodcycles more graph theory for the winNoel Grandin
implemeent a reduction approach, which is good at finding virtual methods that only themselves or their virtual partners. The accessibility GetVisArea stuff is dead since commit 891e41fac81fbd8d5cdb277b26639abfd25a7143 Date: Wed Apr 4 11:23:22 2018 +0200 dead code in AccessibleTextHelper_Impl::UpdateVisibleChildren Change-Id: I78d9d8bca585ecec8394f2c3fe2baa93db0e58f5 Reviewed-on: https://gerrit.libreoffice.org/60912 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-24loplugin:external (clang-cl)Stephan Bergmann
Including: * expanding STDAPI to its definition (as per <https://msdn.microsoft.com/library/ms686631(vs.85).aspx> "STDAPI"), to add __declspec(dllexport) into its middle, in extensions/source/activex/so_activex.cxx; as discussed in the comments at <https://gerrit.libreoffice.org/#/c/60691/> "Get rid of Windows .def files in setup_native, use __declspec(dllexport)", having a function both listed in a .def file EXPORTS and marking it dllexport is OK, and the latter helps the heuristics of loplugin:external; however, the relevant functions in extensions/source/activex/so_activex.cxx probably don't even need to be exported in the first place? * follow-up loplugin:salcall in sal/osl/w32/file-impl.hxx Change-Id: Ida6e17eba19cfa3d7e5c72dda57409005c0a0191 Reviewed-on: https://gerrit.libreoffice.org/60938 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-23loplugin:unusedmethodsNoel Grandin
Change-Id: I9dac9260af9955dc4a66b34c33265c6e36094322 Reviewed-on: https://gerrit.libreoffice.org/60911 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-22Always disable loplugin:expressionalwayszero, to avoid false positivesStephan Bergmann
bdade7e3fc33c1832c6f6a472443fca8238738d2 "tdf#105444 DOCX import: don't put extra paragraphs in comments" caused > /home/sbergman/lo2/core/writerfilter/source/dmapper/DomainMapper_Impl.cxx:441:22: error: expression always evaluates to zero, lhs=0 rhs=unknown [loplugin:expressionalwayszero] > (sizeof(SAL_NEWLINE_STRING)-1 == 2 && xCursor->getString() == "\n")) > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ now with sufficiently new Clang, and the code looks reasonable, and there's no apparent way to avoid such false positives in the plugin. (It could check for a sub-expression of the problematic expression being an object-like macro, but SAL_NEWLINE_STRING could just as well be a variable instead of a macro. That variable would need to be defined in some #if to have different values on different platforms, so the plugin could theoretically check for such conditional inclusion, but it's not clear whether that's worth it and would even be a useful heuristic to not produce neither too many false positives nor too many false negatives.) So just disable the plugin for good. Change-Id: I85dc8573735ccac4e19be20ab7443cbaa85a3164 Reviewed-on: https://gerrit.libreoffice.org/60907 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-21new loplugin:methodcyclesNoel Grandin
look for closed cycles of methods i.e. unused code that would not otherwise be found by the unusedmethods loplugin Change-Id: I3fb052132d97aabca573bb8e9fc424201b1e2042 Reviewed-on: https://gerrit.libreoffice.org/60875 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-20Replace SAL_FINAL with final in internal codeStephan Bergmann
Change-Id: Ib0d3324d7021ba1a8ff9779807d0a900be5e6226 Reviewed-on: https://gerrit.libreoffice.org/60802 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-18loplugin:unusedmethodsNoel Grandin
Change-Id: I5f63ac44654ed3fc658e72e0d1148a5a22decc47 Reviewed-on: https://gerrit.libreoffice.org/60662 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-18loplugin:unusedfields improve search for unused collection fieldsNoel Grandin
look for collection-like fields that are never added to, and are therefore effectively unused Change-Id: Id52c5500ea5e3d2436fb5915aebb86278bf2d925 Reviewed-on: https://gerrit.libreoffice.org/60661 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-18loplugin:useuniqueptr check more local variablesNoel Grandin
Change-Id: I8387731747ee6eb7d74037c0eff7fc9ac0b884c8 Reviewed-on: https://gerrit.libreoffice.org/60619 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-17loplugin:staticconstfield improvementsNoel Grandin
Change-Id: Ia0a19736dfd4500bb17b04c072710f8ee8744031 Reviewed-on: https://gerrit.libreoffice.org/60526 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-17New loplugin:externalStephan Bergmann
...warning about (for now only) functions and variables with external linkage that likely don't need it. The problems with moving entities into unnamed namespacs and breaking ADL (as alluded to in comments in compilerplugins/clang/external.cxx) are illustrated by the fact that while struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { struct S2: S1 { int f() { return 1; } }; int f(S2 s) { return s.f(); } } int main() { return f(N::S2()); } returns 1, both moving just the struct S2 into an nunnamed namespace, struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { namespace { struct S2: S1 { int f() { return 1; } }; } int f(S2 s) { return s.f(); } } int main() { return f(N::S2()); } as well as moving just the function f overload into an unnamed namespace, struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { struct S2: S1 { int f() { return 1; } }; namespace { int f(S2 s) { return s.f(); } } } int main() { return f(N::S2()); } would each change the program to return 0 instead. Change-Id: I4d09f7ac5e8f9bcd6e6bde4712608444b642265c Reviewed-on: https://gerrit.libreoffice.org/60539 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-16rename conststringfield loplugin to staticconstfieldNoel Grandin
in preparation for making it more general Change-Id: I2fc8d0f99140dc7ef72341f8cbf28d6536ebd61f Reviewed-on: https://gerrit.libreoffice.org/60525 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-14Check that loplugin:unreffun warns for explicitly "extern" functionsStephan Bergmann
Change-Id: Ic43f007af4480b358916c2b27796a9b248ea9eb7 Reviewed-on: https://gerrit.libreoffice.org/60496 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-14Improve loplugin:simplifyconstruct warningsStephan Bergmann
Change-Id: I0a64d0eb9938d5a99416dbe4078ba4c05e5d588b Reviewed-on: https://gerrit.libreoffice.org/60465 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-13loplugin:simplifyconstruct exclude std::unique_ptr with custom deleterNoel Grandin
Change-Id: I8f4ba883747a2aace88786ef807fd7c338bef5da
2018-09-13new loplugin simplifyconstructNoel Grandin
no need to init smart pointers with nullptr, they all have default constructors that do this already Change-Id: Ief20c060daa0def8c1aa82f1cf8dc4bc696761e9 Reviewed-on: https://gerrit.libreoffice.org/59818 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-13new loplugin:constfieldsNoel Grandin
look for fields which are only assigned to in the constructor, so they can be made const Change-Id: I0b76817c2181227b04f6a29d6a808f5e31999765 Reviewed-on: https://gerrit.libreoffice.org/60393 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-12loplugin:unusedmethodsNoel Grandin
Change-Id: I0f96c41ab61bd4bfaf6c36d78d0a2ca768da0032 Reviewed-on: https://gerrit.libreoffice.org/60314 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11loplugin:unusedfieldsNoel Grandin
Change-Id: Ic7871f3a40668ba73aa0f0067a45455920d55890 Reviewed-on: https://gerrit.libreoffice.org/60313 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11loplugin:unusedmethodsNoel Grandin
Change-Id: I34009aabf0befb346470b5c0d96ad8fc476b7c4e Reviewed-on: https://gerrit.libreoffice.org/60300 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11loplugin:unusedfieldsNoel Grandin
Change-Id: I876183559a7d9f1e6d914fbf37d7ffe91459144e Reviewed-on: https://gerrit.libreoffice.org/60278 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11loplugin:constantparamNoel Grandin
Change-Id: Ia11bf93768d5f722b7fe62df15f24809cb7e7f04 Reviewed-on: https://gerrit.libreoffice.org/60280 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11fix loplugin:unusedmethodsNoel Grandin
revert the part of commit 9f4d23c15115d64febd6bf01f870cc157badd350 Date: Mon Aug 13 17:24:26 2018 +0200 filter out some of the AST in the plugins that applied to this plugin. Turns out it really needs to see __all__ the code in order to produce good results. Change-Id: If580a701049d2570f2a833327b2189641090079b Reviewed-on: https://gerrit.libreoffice.org/60279 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11prevent crashes when running the global-analysis pluginsNoel Grandin
Change-Id: Ib50583289afd6212d5d5aedd3d6b7ede75902052 Reviewed-on: https://gerrit.libreoffice.org/60277 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-08Replace find_if with proper quantifier algorithmsArkadiy Illarionov
Missed in 085269d25a705b656436feac47149296b4b4b35d Change-Id: I3cfab57232908b48d090658e0fbc948d62b3fc6f Reviewed-on: https://gerrit.libreoffice.org/60180 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-07weld writer page style dialog and SvxBorderBackgroundDlgCaolán McNamara
writer, format page is complete Change-Id: I09f6e4354461c4374cdb0d0e0754dfee35415b45 Reviewed-on: https://gerrit.libreoffice.org/60058 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-09-03loplugin:useuniqueptr update exclusionsNoel Grandin
Change-Id: I9c741dbaba772550b4d68406fff50d8b0ac60874 Reviewed-on: https://gerrit.libreoffice.org/59923 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-30Fix typosAndrea Gelmini
Change-Id: Ia658776bce8744e7b771559ca12b94a20923fc52 Reviewed-on: https://gerrit.libreoffice.org/59782 Tested-by: Jenkins Reviewed-by: Jens Carl <j.carl43@gmx.de>
2018-08-29new loplugin:oustringbufferNoel Grandin
look for places where we are appending the temporary result of adding strings together, to an OUStringBuffer, where we could rather call append repeatedly and avoid the temporary creation Change-Id: I481435124291ac7fb54b91a78344a9fe5b379a82 Reviewed-on: https://gerrit.libreoffice.org/59708 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-23filter out AST in more pluginsNoel Grandin
I seem to have missed quite a few in commit 9f4d23c15115d64febd6bf01f870cc157badd350 filter out some of the AST in the plugins This nets me another 14% improvement Change-Id: I39b980b49ced560f768045dbedd3ddfef29306c1 Reviewed-on: https://gerrit.libreoffice.org/59501 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-23Avoid warnings about unused private fieldsStephan Bergmann
Change-Id: If8fa47120f8dd7453a30f28ca9f726cbcbb80dc2
2018-08-22new loplugin:conststringfieldNoel Grandin
Look for const string fields which can be static, and mostly convert them to OUStringLiteral And add a getLength() method to OUStringLiteral to make the transition easier. Remove dead code in XclExpRoot::GenerateDefaultEncryptionData, default password is never empty. Change-Id: Iae75514d9dbb87289fd5b016222f640abe755091 Reviewed-on: https://gerrit.libreoffice.org/59204 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-22improvements to loplugin:useuniqueptrNoel Grandin
find more patterns of deleting member data Change-Id: I8913e364200dad8405bac30dd8cab2a68c8bee8f Reviewed-on: https://gerrit.libreoffice.org/59233 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-22rename FontSelectPatternAttributes to FontSelectPatternCaolán McNamara
Change-Id: I2c018e2e61707c0d89178b0cb38a0918906e23cb Reviewed-on: https://gerrit.libreoffice.org/59390 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-21loplugin useuniqueptr improvementNoel Grandin
passing owning pointers to constructors Change-Id: I4e64cabbf449393b77162a845b3138be415e2dc9 Reviewed-on: https://gerrit.libreoffice.org/59346 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-19Translate German variable namesJohnny_M
Change-Id: I6b5fb91cbf32ce082fb77989e1b9ac5e8ecfe438 Reviewed-on: https://gerrit.libreoffice.org/59283 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
2018-08-18new loplugin intvsfloatNoel Grandin
This was a good idea from mike kaganski as a consequence of https://gerrit.libreoffice.org/55359 Unfortunately, clang/llvm is not yet up to the job of doing floating point evaluation, I get tons of crashes all over the evaluate infrastruction inside clang, so this will need to wait until clang's code matures. So park it in store for now Change-Id: I5ba4de8323e462b4fd4db301e4d116a81fd56ed3 Reviewed-on: https://gerrit.libreoffice.org/59254 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-17update loplugin returnconstantNoel Grandin
to find more stuff, and return less false positives Change-Id: I24cacbb825c1f7484fd568230051b1a57dbc663f Reviewed-on: https://gerrit.libreoffice.org/59137 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-17Avoid loplugin:redundantcast false positive involving decltypeStephan Bergmann
..with libc++ on macOS: > /Users/stephan/Software/lo2/core/sw/source/core/doc/CntntIdxStore.cxx:238:44: error: static_cast from 'decltype(__x.base() - __y.base())' (aka 'long') prvalue to 'long' prvalue is redundant [loplugin:redundantcast] > const MarkEntry aEntry = { static_cast<long>(ppBkmk - pMarkAccess->getAllMarksBegin()), false, pBkmk->GetMarkPos().nContent.GetIndex() }; > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Change-Id: I94ab3d828482462c0fde26e19c9cc6508efa00fe Reviewed-on: https://gerrit.libreoffice.org/59240 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-08-16Adapt loplugin:ptrvector to libc++ (on macOS)Stephan Bergmann
...where it produced false positive > /Users/stephan/Software/lo2/core/UnoControls/source/controls/progressmonitor.cxx:245:21: error: do not call operator== on a std container containing a unique_ptr const class std::__1::__wrap_iter<class std::__1::unique_ptr<struct unocontrols::IMPL_TextlistItem, struct std::__1::default_delete<struct unocontrols::IMPL_TextlistItem> > *> [loplugin:ptrvector] > if (itr != maTextlist_Top.end()) > ^ Change-Id: I8a8b6f30145e6aff2caa03c03f0fd20af0ba42b5 Reviewed-on: https://gerrit.libreoffice.org/59181 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-08-14Adapt new code to getLocStart renameStephan Bergmann
Change-Id: I96cabd351e06de6b3e728c456bd05156572822c9