Closed Bug 1475882 Opened 6 years ago Closed 6 years ago

Enable more clang-tidy/clang-analyzer checks

Categories

(Developer Infrastructure :: Source Code Analysis, defect, P3)

defect

Tracking

(firefox-esr52 wontfix, firefox-esr60 wontfix, firefox61 wontfix, firefox62 wontfix, firefox63 fixed)

RESOLVED FIXED
Tracking Status
firefox-esr52 --- wontfix
firefox-esr60 --- wontfix
firefox61 --- wontfix
firefox62 --- wontfix
firefox63 --- fixed

People

(Reporter: cpeterson, Assigned: cpeterson)

References

(Blocks 1 open bug)

Details

Attachments

(11 files)

59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
59 bytes, text/x-review-board-request
andi
: review+
Details
These checks have few or no warnings in mozilla-central. :D

See https://clang-analyzer.llvm.org/available_checks.html for more info on the following checks:

clang-analyzer-cplusplus.NewDelete
clang-analyzer-cplusplus.NewDeleteLeaks
clang-analyzer-unix.cstring.BadSizeArg
clang-analyzer-unix.cstring.NullArg
clang-analyzer-unix.Malloc

See https://clang.llvm.org/extra/clang-tidy/checks/list.html for more info on the following checks:

bugprone-suspicious-memset-usage
misc-macro-repeated-side-effects
misc-string-constructor
misc-string-integer-assignment
misc-swapped-arguments
misc-unused-alias-decls
Comment on attachment 8992246 [details]
Bug 1475882 - Enable clang-tidy's clang-analyzer-cplusplus.NewDelete check.

https://reviewboard.mozilla.org/r/257076/#review263968

Thank you!
Attachment #8992246 - Flags: review?(bpostelnicu) → review+
I'm gonna run these patches also on automation to make sure nothing boogie is happening: https://treeherder.mozilla.org/#/jobs?repo=try&revision=e87c1e134645010667310e312fed69266994ac17
Comment on attachment 8992246 [details]
Bug 1475882 - Enable clang-tidy's clang-analyzer-cplusplus.NewDelete check.

https://reviewboard.mozilla.org/r/257076/#review263972

::: commit-message-6a320:1
(Diff revision 1)
> +Bug 1475882 - Enable clang-tidy's clang-analyzer-cplusplus.NewDelete check. r?andi

I know I am bikesheding but this isn't a clang-tidy checker but clang-analyzer. :)

(different architecture and upstream)
Summary: Enable more clang-tidy checks → Enable more clang-tidy/clang-analyzer checks
Comment on attachment 8992247 [details]
Bug 1475882 - Enable clang-tidy's clang-analyzer-cplusplus.NewDeleteLeaks check.

https://reviewboard.mozilla.org/r/257078/#review264014

As Sylvestre said earlier this is a clang analyzer checker, even if it's used through clang-tidy interface.
Attachment #8992247 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992248 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.cstring.BadSizeArg check.

https://reviewboard.mozilla.org/r/257080/#review264036

::: tools/clang-tidy/test/clang-analyzer-unix.cstring.BadSizeArg.cpp:4
(Diff revision 1)
> +// https://clang-analyzer.llvm.org/available_checks.html
> +
> +#include <string.h>
> +

Please see how clang-analyzer-security.insecureAPI.mktemp test is implemented. We don't really want here to include system headers but to declare de signature for each function that we call.
Attachment #8992248 - Flags: review?(bpostelnicu)
Comment on attachment 8992249 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.cstring.NullArg check.

https://reviewboard.mozilla.org/r/257082/#review264048

::: tools/clang-tidy/test/clang-analyzer-unix.cstring.NullArg.cpp:4
(Diff revision 1)
> +// https://clang-analyzer.llvm.org/available_checks.html
> +
> +#include <string.h>
> +

Same comments as per my previous review, you can do something similar to this: 
https://treeherder.mozilla.org/#/jobs?repo=try&revision=6b15d6904a5f62c9085f5ed9b6b032093f3b5d08&selectedJob=188367458
Ofcourse including stren declaration in structures.h.
Attachment #8992249 - Flags: review?(bpostelnicu)
Comment on attachment 8992250 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.Malloc check.

https://reviewboard.mozilla.org/r/257084/#review264066

::: tools/clang-tidy/test/clang-analyzer-unix.Malloc.cpp:4
(Diff revision 1)
> +// https://clang-analyzer.llvm.org/available_checks.html
> +
> +#include <stdlib.h>
> +

As per previous comments, let's do something like this please: https://treeherder.mozilla.org/#/jobs?repo=try&revision=152544ed0b689e695be95fe75b2f5fafac7ddbba
Attachment #8992250 - Flags: review?(bpostelnicu)
Comment on attachment 8992251 [details]
Bug 1475882 - clang-tidy: Enable bugprone-suspicious-memset-usage check.

https://reviewboard.mozilla.org/r/257086/#review264068

::: tools/clang-tidy/test/bugprone-suspicious-memset-usage.cpp:4
(Diff revision 1)
> +// https://clang.llvm.org/extra/clang-tidy/checks/bugprone-suspicious-memset-usage.html
> +
> +#include <string.h>
> +

Let's use the official test uit for this checker: https://github.com/llvm-mirror/clang-tools-extra/blob/release_50/test/clang-tidy/bugprone-suspicious-memset-usage.cpp or just declare:

void *memset(void *, int, __SIZE_TYPE__);
Attachment #8992251 - Flags: review?(bpostelnicu)
Comment on attachment 8992252 [details]
Bug 1475882 - Enable clang-tidy's misc-macro-repeated-side-effects check.

https://reviewboard.mozilla.org/r/257088/#review264072

thank you!
Attachment #8992252 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992253 [details]
Bug 1475882 - clang-tidy: Enable misc-string-constructor check.

https://reviewboard.mozilla.org/r/257090/#review264074

::: tools/clang-tidy/test/misc-string-constructor.cpp:4
(Diff revision 1)
> +// https://clang.llvm.org/extra/clang-tidy/checks/bugprone-string-constructor.html
> +
> +#include <string>
> +

As per previous remarks, let's not include please <string> and let's declare our container, for example:

https://github.com/Microsoft/clang-tools-extra/blob/master/test/clang-tidy/misc-string-constructor.cpp
Attachment #8992253 - Flags: review?(bpostelnicu)
Comment on attachment 8992254 [details]
Bug 1475882 - clang-tidy: Enable misc-string-integer-assignment check.

https://reviewboard.mozilla.org/r/257092/#review264078

::: tools/clang-tidy/test/misc-string-integer-assignment.cpp:4
(Diff revision 1)
> +// https://clang.llvm.org/extra/clang-tidy/checks/bugprone-string-integer-assignment.html
> +
> +#include <string>
> +

Same applies here regarding the string container, https://github.com/llvm-mirror/clang-tools-extra/blob/release_50/test/clang-tidy/misc-string-integer-assignment.cpp
Attachment #8992254 - Flags: review?(bpostelnicu)
Comment on attachment 8992255 [details]
Bug 1475882 - Enable clang-tidy's misc-swapped-arguments check.

https://reviewboard.mozilla.org/r/257094/#review264080

Thank you!
Attachment #8992255 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992256 [details]
Bug 1475882 - Enable clang-tidy's misc-unused-alias-decls check.

https://reviewboard.mozilla.org/r/257096/#review264082
Attachment #8992256 - Flags: review?(bpostelnicu) → review+
Thanks! I'll fix the clang-analyzer commit messages and add the function prototypes to structures.h instead of #including system header files.
Keywords: leave-open
Here is a green static-analysis autotest with my fixes on Try:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=1d54e6995143bf4e4acaae4ef32661a746ede538
Pushed by cpeterson@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/138f27a016f6
clang-analyzer: Enable clang-analyzer-cplusplus.NewDelete check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/082c2cd47f1c
clang-analyzer: Enable clang-analyzer-cplusplus.NewDeleteLeaks check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/6a5e540c17f3
clang-tidy: Enable misc-macro-repeated-side-effects check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/191a529a0208
clang-tidy: Enable misc-swapped-arguments check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/13739445a00b
clang-tidy: Enable misc-unused-alias-decls check. r=andi
Comment on attachment 8992254 [details]
Bug 1475882 - clang-tidy: Enable misc-string-integer-assignment check.

https://reviewboard.mozilla.org/r/257092/#review264482
Attachment #8992254 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992253 [details]
Bug 1475882 - clang-tidy: Enable misc-string-constructor check.

https://reviewboard.mozilla.org/r/257090/#review264484
Attachment #8992253 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992248 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.cstring.BadSizeArg check.

https://reviewboard.mozilla.org/r/257080/#review264486
Attachment #8992248 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992249 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.cstring.NullArg check.

https://reviewboard.mozilla.org/r/257082/#review264488
Attachment #8992249 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992250 [details]
Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.Malloc check.

https://reviewboard.mozilla.org/r/257084/#review264490
Attachment #8992250 - Flags: review?(bpostelnicu) → review+
Comment on attachment 8992251 [details]
Bug 1475882 - clang-tidy: Enable bugprone-suspicious-memset-usage check.

https://reviewboard.mozilla.org/r/257086/#review264492
Attachment #8992251 - Flags: review?(bpostelnicu) → review+
(In reply to Chris Peterson [:cpeterson] from comment #35)
> Here is a green static-analysis autotest with my fixes on Try:
> 
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=1d54e6995143bf4e4acaae4ef32661a746ede538
Thank you very much for doing this!
Pushed by cpeterson@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/21408667426c
clang-analyzer: Enable clang-analyzer-unix.cstring.BadSizeArg check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/8a9e7ed36126
clang-analyzer: Enable clang-analyzer-unix.cstring.NullArg check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/f6ee4608a559
clang-analyzer: Enable clang-analyzer-unix.Malloc check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/be36725735f0
clang-tidy: Enable bugprone-suspicious-memset-usage check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/ffa7c88ba619
clang-tidy: Enable misc-string-constructor check. r=andi
https://hg.mozilla.org/integration/mozilla-inbound/rev/3a3725565d12
clang-tidy: Enable misc-string-integer-assignment check. r=andi
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Product: Firefox Build System → Developer Infrastructure
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: