Commit Graph

109 Commits

Author SHA1 Message Date
Noel Grandin
13341ffa49 teach unnecessaryparen plugin about other kinds of statements
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-06 08:31:52 +02:00
Noel Grandin
4b2262ab5b new loplugin unnecessaryparen
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-05 11:08:48 +02:00
Stephan Bergmann
65d6c64259 loplugin:casttovoid
Change-Id: I427b15b35ef6e7c803cb8a00c961d35175ae8cb2
2017-07-03 12:34:38 +02:00
Noel Grandin
979d58c9a9 loplugin:unusedfields in toolkit..xmloff
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-30 19:50:30 +02:00
Stephan Bergmann
09031ef2fe Avoid getQualifiedNameAsString
Change-Id: I448bfd63f1a2fb9cac3366146b10ff6a465e6db7
2017-06-30 11:16:03 +02:00
Noel Grandin
4cc2fc6cef unusedfields loplugin writeonly analysis improvements
(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-29 11:00:57 +02:00
Noel Grandin
497e40ad03 improve refcounting loplugin
to find ref-counted classes being managed via other smart pointer
classes.
Hopefully prevent needing fixes like
642ae256ea
"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-29 09:35:30 +02:00
Noel Grandin
71112060e0 loplugin:oncevar various
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-29 08:18:35 +02:00
Noel Grandin
03ee996717 loplugin:unusedfields fix more false +
deal with fields assigned to local variables, and some general cleanup

Change-Id: I894c74a01e9e28935ecd84308c2e92b080afafc6
2017-06-20 10:02:32 +02:00
Noel Grandin
9d9d024ffb loplugin:unusedfields fix some more false positives
in the write-only analysis

Change-Id: Ic570416e855b8ec38d54f6f6f1adef4819ea53ee
2017-06-20 10:01:48 +02:00
Noel Grandin
9c2b43e86f improve oncevar loplugin
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-20 07:49:45 +02:00
Noel Grandin
3b60f59bc5 loplugin:unusedfields fix false positive
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-20 07:49:27 +02:00
Noel Grandin
45c06838e9 only unit-test one loplugin at a time
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-19 11:34:15 +02:00
Stephan Bergmann
423dacde87 Generalize loplugin:stringcopy to loplugin:redundantcopy
(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-13 17:00:30 +02:00
Stephan Bergmann
690f2f5c46 Avoid loplugin:unreffun
Change-Id: I75ea46f257046bb42b2bfad3a5bd4450868e0d69
2017-06-06 08:04:06 +02:00
Stephan Bergmann
0f84a32f5b Improved loplugin:redundantcast, const/static_cast combinations
Change-Id: I3b24327835cd4e1842ee6e9b87ab06efa25a4bbf
2017-06-05 21:17:59 +02:00
Stephan Bergmann
0763d8413e Reduce loplugin:redundantcast warnings about functional casts even futher
Change-Id: I8884e17c453831e048c43012ee176093c5b2f99e
2017-06-05 21:17:55 +02:00
Stephan Bergmann
c855400e96 Reduce loplugin:redundantcast warnings about functional casts even futher
Change-Id: Ieae9b5c9c7c6d9b8459e5d163f55d8f5024adfae
2017-06-02 14:00:08 +02:00
Stephan Bergmann
95645cbf0a Improved loplugin:redundantcast const_cast handling
Change-Id: I4c24ff5d9d5e74bef2a4040c6308c504282af55d
2017-06-02 13:31:37 +02:00
Stephan Bergmann
5872221094 Reorganize tests
Change-Id: Ic3d9e55b2730a3ea01cc6c7c9fbdd80a1e653c7e
2017-06-02 10:39:53 +02:00
Stephan Bergmann
1fce984051 Make loplugin:redundantcast functional cast warnings more verbose
(useful when types involve typedefs)

Change-Id: I93e8962fd4b9c4ef79990e057dfa07538380008c
2017-06-02 10:35:05 +02:00
Stephan Bergmann
beae2dd6c8 Improved loplugin:redundantcast static_cast handling
Change-Id: I74e4ebda40f95661c5ae344132fcabbbf08ab0a4
2017-06-02 09:38:15 +02:00
Stephan Bergmann
93aeaa75a4 Improve suppression of loplugin:redundantcast in CPPUNIT_ASSERT
Change-Id: I65f95e7245f08592ea11cc75e1cf34dcbdf16b40
2017-06-01 14:37:02 +02:00
Stephan Bergmann
82dc186a2a Avoid "default initialization ... without ... default constructor" error
Change-Id: Ic336b33bd747cd55955231cbe0b5a9d474adf3ab
2017-06-01 09:23:52 +02:00
Stephan Bergmann
967e9e6bbb Add some loplugin:redundantcast tests
Change-Id: I5c39a745b70655f92953ec785d01a3a52d9ec42b
2017-05-31 18:04:22 +02:00
Noel Grandin
2ccde70d60 teach redundantcast plugin about functional casts
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-30 08:50:31 +02:00
Noel Grandin
d1e47b1428 enhance useuniqueptr loplugin
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-23 09:31:20 +02:00
Stephan Bergmann
b6778e921f loplugin:stringcopy
Change-Id: Ib04ef019996888166c25ad140b7c718a173a782a
2017-05-19 17:20:05 +02:00
Noel Grandin
f12096272e spelling, implictly->implicitly
Change-Id: I2d733ed3ce9395d11700d739cbd6d123649b4013
2017-05-03 11:18:21 +02:00
Stephan Bergmann
5a4d03131f loplugin:salunicodeliteral
For the c-char in the u'...' literal, the preceding commits consistently use:

* a simple-escape-sequence if the original code already used one
* \0 for U+0000
* the (\ escaped, for ' and \) source character matching U+0020..7E (even if it
  is not a basic source character)
* a consistently four-digit hexadecimal-escape-sequence otherwise, \xNNNN

For non-surrogate code points, the last case could probably also use \uNNNN
universal-character-names.  However, for one, it isn't quite clear to me whether
conversion of such to members of the execution chacacter set in character
literals (in translation phase 5) is implementation-specific.  And for another,
the current C++ standard references the dated (no pun intended) ISO/IEC
10646-1:1993 specification, rather than the current ISO/IEC 10646:2014, and
requires that a universal-characrer-name designate a character with a specific
"character short name in ISO/IEC 10646", but I do not find a specification of a
"short name" in ISO/IEC 10646:2014 and don't have access to ISO/IEC
10646-1:1993, so am not sure whether that would e.g. cover noncharacters like
U+FFFF.

(The only exception is one occurrence of u'\x6C' in bestFitOpenSymbolToMSFont,
filter/source/msfilter/util.cxx, where it is clear from the context that the
value denotes neither a Unicode code point nor a UTF-16 code unit, but rather an
index into the Wingdings font glyph table.)

Change-Id: If36b94168428ba1e05977c370aceaa7e90131e90
2017-04-28 18:27:01 +02:00
Stephan Bergmann
a528392e71 Fixed/improved loplugin:cppunitassertequals
* 994e38e336 "loplugin: use TypeCheck instead of
  getQualifiedNameAsString" had effectively disabled this plugin (Asserter is a
  struct, not a namespace).  Fixed that.

* Also improved the checks, for one removing the---expensive---use of
  Plugin::parentStmt, for another making the plugin look into (...), !..., and
  ...&&... expressions.

* However, as the plugin had effectively already been disabled (see above) when
  it was switched on generally with 839e53b933
  "compilerplugins: enable loplugin:cppunitassertequals by default", it now hit
  way more places than I had initially anticipated.  To keep the amount of work
  manageable, midway-through I disabled looking into ...&&... expressions for
  now.  That will be enabled (and resulting warnings fixed) in follow-up
  commits.

* Checks like

    CPPUNIT_ASSERT(a == b)

  that actually want to check a specific overloaded operator == implementation,
  rather than using such an operator == to actually check that a and b are
  equal, can be rewritten as

    CPPUNIT_ASSERT(operator ==(a, b))

  to avoid false warnings from this plugin.

Change-Id: If3501020e2d150ad0f2454a65a39081e31470c0f
2017-04-28 14:23:35 +02:00
Noel Grandin
be8b9b4d29 loplugin:redundantcast find cstyle arithmetic casts
Change-Id: If7c259f0d12a41182f476ddb558f7cb5f76f9577
Reviewed-on: https://gerrit.libreoffice.org/36253
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-07 12:16:13 +00:00
Stephan Bergmann
2258f33a5f Make loplugin:loopvartoosmall find more suspicious cases
...where the "controlling expression" of any sort of loop contains a sub-
expression of the form

  var < val

where the type of var is smaller than that of val.  Theoretically, this could
turn up lots of false positives, but practically it didn't run into any.  Most
findings have been cleaned up over the last weeks.  There's just a handful
remaining places that are hard to clean up, so I flagged them here with
(deliberately awkward) sal::static_int_cast for later clean-up.

Change-Id: I0f735d46dda15b9b336150095df65cf247e9d6d3
Reviewed-on: https://gerrit.libreoffice.org/35682
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-03-25 16:21:34 +00:00
Stephan Bergmann
5d8e6901ec Add loplugin:redundantinline
...after it had recently been run with 6cb9e6dad7
"Remove redundant 'inline' keyword"

Change-Id: I7f3ee2ff1c32988dcff7245c64b50fe20b0a5e79
Reviewed-on: https://gerrit.libreoffice.org/35681
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-03-25 16:21:04 +00:00
Noel Grandin
7299481834 loplugin:redundantcast find redundant c-style enum casts
Change-Id: I2dab376d87804521aed6b6bd41ad7762830fa349
Reviewed-on: https://gerrit.libreoffice.org/35467
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-03-22 06:47:35 +00:00
Stephan Bergmann
f2b4d84971 Fix loplugin:unnecessaryoverride
(user-provided virtual dtor in class with dependent base)

Change-Id: I37b3cc3d32e76a0286ecc91f999920e3dfe706cc
2017-03-13 14:22:08 +01:00
Noel Grandin
198c41c4fe new loplugin unoany
Change-Id: I5d6c4a67cb2a09e7cd5bd620c6b262d188701b89
Reviewed-on: https://gerrit.libreoffice.org/34714
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-28 10:17:47 +00:00
Stephan Bergmann
440720e14d loplugin:redundantcast: Avoid double warnings on some const_cast
Change-Id: I1e6140fef55054899dd32465726e804fc6006394
2017-02-16 17:43:23 +01:00
Stephan Bergmann
6d3db33328 Capture loplugin:redundantcast status-quo wrt const_cast
...including some double-warnings that'll get cleaned up shortly

Change-Id: I14e9796f2846a6bb61e4c93dfb23cba6488ea2e6
2017-02-16 17:36:21 +01:00
Noel Grandin
dce867e8c4 loplugin:stringconstant handle calls to constructors with one arg
Change-Id: Ide9148a908bef46ba14640dfa6f556beaf6e3f60
Reviewed-on: https://gerrit.libreoffice.org/33772
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-01 07:57:16 +00:00
Noel Grandin
1c3e84d819 teach lolugin:stringconstant about calling constructors
so we can remove unnecessary calls to the OUString(literal) constructor
when calling constructors like this:
   Foo(OUString("xxx"), 1)

Change-Id: I1de60ef561437c86b27dc9cb095a5deb2e103b36
Reviewed-on: https://gerrit.libreoffice.org/33698
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-01-31 08:56:20 +00:00
Noel Grandin
4511431fb6 improve "unnecessary user-declared destructor" check
to look for inline&empty destructors, where we can just let
the compiler do it's thing

Change-Id: Ibde8800bdfed6b77649c30ebc19921167c33dec3
Reviewed-on: https://gerrit.libreoffice.org/32999
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-01-27 09:49:04 +00:00
Stephan Bergmann
aee1d799be Make test work with older Clang
For some reason, e.g. Clang 3.8.1 doesn't evaluate std::strlen here (though it
apparently does in other places in this file).

Change-Id: Ib2b7dcc1d7b6ae47ef285bd2edb65e399dc11b79
Reviewed-on: https://gerrit.libreoffice.org/33547
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-01-26 08:36:51 +00:00
Tor Lillqvist
907a9ce8b8 Bypass some lines that cause problems with Clang 3.8.1 at least
Change-Id: I05202ee6b2f083e8aacf0a2a8f8d7b8b361a5df8
2017-01-25 11:56:54 +02:00
Stephan Bergmann
236f69e710 Minor loplugin:stringconstant improvements
Change-Id: I0b39526c0f0854ddbb29e77ece303cf2bdd842c4
2017-01-25 07:58:10 +01:00
Stephan Bergmann
ce38f88151 New loplugin:externvar
Change-Id: Ie5404f11cbc5b05bd18455ae81526eb2de01548c
2017-01-09 15:44:47 +01:00
Stephan Bergmann
9d7802e7fc Make move detection in loplugin::passstuffbyref work for parenthesized cases
Change-Id: I56754a718af9433c0fa654ccb8eb34da00e75420
2016-12-16 15:16:37 +01:00
Stephan Bergmann
a9659f30d6 No need for rtl::Reference friend, no need for #include vclptr.hxx
Change-Id: I7bdd15a93e728ef7e98a53001c6eb6b56f761a6d
2016-12-09 20:01:52 +01:00
Miklos Vajna
dc1925e6f0 sw: remove some inline version control in uibase
Change-Id: I7125b6f8593cac2c33916341f5649f57044ad045
Reviewed-on: https://gerrit.libreoffice.org/31761
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
2016-12-08 16:24:12 +00:00
Stephan Bergmann
03c215ab07 loplugin:unnecessaryoverride (dtors)
Change-Id: Ia38672028668959bf3d5541fe4ddb9fb72848617
2016-12-05 09:06:14 +01:00