Commit Graph

2178 Commits

Author SHA1 Message Date
Frank Derry Wanye 5a87f81fe9 new altera unroll loops check
This lint check is a part of the FLOCL (FPGA Linters for OpenCL)
project out of the Synergy Lab at Virginia Tech.

FLOCL is a set of lint checks aimed at FPGA developers who write code
in OpenCL.

The altera unroll loops check finds inner loops that have not been
unrolled, as well as fully-unrolled loops that should be partially
unrolled due to unknown loop bounds or a large number of loop
iterations.

Based on the Altera SDK for OpenCL: Best Practices Guide.
2021-03-22 13:09:53 -04:00
Nathan James 4dd92d61db
[clang-tidy] Fix bugprone-terminating-continue when continue appears inside a switch
Don't emit a warning if the `continue` appears in a switch context as changing it to `break` will break out of the switch rather than a do loop containing the switch.
Fixes https://llvm.org/PR49492.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D98338
2021-03-20 10:59:37 +00:00
Nathan James 9a5af541ee
[clang-tidy] Remove readability-deleted-default
The deprecation notice was cherrypicked to the release branch in f8b3298924 so its safe to remove this for the 13.X release cycle.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D98612
2021-03-16 14:03:33 +00:00
Dmitry Polukhin da55af7f1d [clang-tidy] Enable modernize-concat-nested-namespaces also on headers
For some reason the initial implementation of the check had an explicit check
for the main file to avoid being applied in headers. This diff removes this
check and add a test for the check on a header.

Similar approach was proposed in D61989 but review there got stuck.

Test Plan: added new test case

Differential Revision: https://reviews.llvm.org/D97563
2021-03-15 07:32:45 -07:00
Nathan James 0333dde923
[clang-tidy] Fix readability-identifer-naming duplicating prefix or suffix for replacements.
If a identifier has a correct prefix/suffix but a bad case, the fix won't strip them when computing the correct case, leading to duplication when the are added back.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D98521
2021-03-15 14:20:48 +00:00
Jinzheng Tu 481079e284 [NFC] Unify FIME with FIXME in comments
There are 5 occurrences FIME and 15333 FIXME. All of them should be FIXME.

Reviewed By: alexfh

Differential Revision: https://reviews.llvm.org/D98321
2021-03-10 14:00:51 +01:00
Fangrui Song 46bf25a7c5 [test] Update tests 2021-03-09 22:32:28 -08:00
Nathan James 3bca86170d [clang-tidy][NFC] Remove unsupported language version checks from vector 2021-03-05 15:35:34 +00:00
Martin Boehme e67d91faec [clang-tidy] Use-after-move: Ignore moves inside a try_emplace.
We have no way to reason about the bool returned by try_emplace, so we
simply ignore any std::move()s that happen in a try_emplace argument.
A lot of the time in this situation, the code will be checking the
bool and doing something else if it turns out the value wasn't moved
into the map, and this has been causing false positives so far.

I don't currently have any intentions of handling "maybe move" functions
more generally.

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D98034
2021-03-05 15:05:09 +01:00
Jens Massberg bff7faea20 [clang-tidy] Add options to describe individual core increments to readability-function-cognitive-complexity check.
Often you are only interested in the overall cognitive complexity of a
function and not every individual increment. Thus the flag
'DescribeBasicIncrements' is added. If it is set to 'true', each increment
is flagged. Otherwise, only the complexity of function with complexity
of at least the threshold are flagged.

By default 'DescribeBasisIncrements' is set to 'true', which is the original behavior of the check.

Added a new test for different flag combinations.

(The option to ignore macros which was original part of this patch will be added in another path)

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D96281
2021-03-04 21:02:27 +01:00
Nathan James a85eb11129
[clang-tidy] Extend LoopConvert on array with `!=` comparison
Enables transforming loops of the form:
```
for (int i = 0; I != container.size(); ++I) { container[I]...; }
for (int i = 0; I != N; ++I) { FixedArrSizeN[I]...; }
```

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97940
2021-03-04 18:58:59 +00:00
Nathan James 1a91b8232a
[clang-tidy][NFC] Use equalsBoundNode matchers to simplify LoopConvertCheck
Make use of the `equalsBoundNode` matcher to ensure Init, Conditon and Increment variables all refer to the same variable during matching.

Reviewed By: steveire

Differential Revision: https://reviews.llvm.org/D97639
2021-03-03 02:51:34 +00:00
Felix Berger a189b3b9e8 [clang-tidy] performance-for-range-copy: Don't trigger on implicit type conversions.
This disables the check for false positive cases where implicit type conversion
through either an implicit single argument constructor or a member conversion
operator is triggered when constructing the loop variable.

Fix the test cases that meant to cover these cases.

Differential Revision: https://reviews.llvm.org/D97577

Reviewed-by: hokein
2021-03-02 20:02:48 -05:00
Nathan James 00c7d6699a
[cte][NFC] Remove all references to stdlib stream headers.
Inclusion of iostream is frobidden and using other stream classes from standard library is discouraged as per https://llvm.org/docs/CodingStandards.html#include-iostream-is-forbidden

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D97771
2021-03-02 21:57:16 +00:00
Stephen Kelly 7b6fc9a105 [clang-tidy] Simplify unused RAII check
Fix handling of default construction where the constructor has a default arg.

Differential Revision: https://reviews.llvm.org/D97142
2021-03-02 21:33:34 +00:00
Nathan James abbe9e227e
[clang-tidy] Added command line option `fix-notes`
Added an option to control whether to apply the fixes found in notes attached to clang tidy errors or not.
Diagnostics may contain multiple notes each offering different ways to fix the issue, for that reason the default behaviour should be to not look at fixes found in notes.
Instead offer up all the available fix-its in the output but don't try to apply the first one unless `-fix-notes` is supplied.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D84924
2021-03-01 22:07:11 +00:00
Nathan James 8bfc141931
[clang-tidy] Added option to uniqueptr delete release check
Adds an option, `PreferResetCall`, currently defaulted to `false`, to the check.
When `true` the check will refactor by calling the `reset` member function.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97630
2021-03-01 21:52:13 +00:00
Nathan James 8f9f7d02aa
[clang-tidy] Tweak misc-static-assert fix in c++17
If C++17 mode is enabled and the assert doesn't have a string literal, we can emit a static assert with no message in favour of one with an empty message.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97313
2021-03-01 18:51:50 +00:00
Nathan James 8adfb38224
[clang-tidy] Simplify diagnostics for UniqueptrResetRelease check
Tweak the diagnostics to create small replacements rather than grabbing source text from the lexer.
Also simplified the diagnostic message.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97632
2021-03-01 18:40:37 +00:00
Nathan James 82289aa6c8
[clang-tidy] Remove OptionError
The interface served a purpose, but since the ability to emit diagnostics when parsing configuration was added, its become mostly redundant. Emitting the diagnostic and removing the boilerplate is much cleaner.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97614
2021-03-01 17:55:17 +00:00
Stephen Kelly 415acb2c59 Revert "[clang-itdy] Simplify virtual near-miss check"
This reverts commit 9a4b574dd6.
2021-02-27 19:30:38 +00:00
Stephen Kelly 42ce00ec39 [clang-tidy] Simplify suspicious memset usage check
Differential Revision: https://reviews.llvm.org/D97150
2021-02-27 12:17:09 +00:00
Stephen Kelly 302cc8421e [clang-tidy] Simplify boolean expr check
Differential Revision: https://reviews.llvm.org/D97153
2021-02-27 12:13:24 +00:00
Stephen Kelly b672870886 [clang-tidy] Simplify special member functions check
Differential Revision: https://reviews.llvm.org/D97152
2021-02-27 12:13:24 +00:00
Stephen Kelly a5feefa3c7 [clang-tidy] Simplify redundant branch condition check
Differential Revision: https://reviews.llvm.org/D97151
2021-02-27 12:13:23 +00:00
Stephen Kelly df42f9950d [clang-tidy] Simplify suspicious enum usage check
Differential Revision: https://reviews.llvm.org/D97149
2021-02-27 12:11:45 +00:00
Stephen Kelly 35763baf9a [clang-tidy] Simplify redundant member init check
Differential Revision: https://reviews.llvm.org/D97147
2021-02-27 12:11:44 +00:00
Stephen Kelly 9ba557cc03 [clang-tidy] Simplify default member init check
Differential Revision: https://reviews.llvm.org/D97145
2021-02-27 12:11:43 +00:00
Stephen Kelly 296c6e85c1 [clang-tidy] Simplify shrink to fit check
Differential Revision: https://reviews.llvm.org/D97144
2021-02-27 12:11:42 +00:00
Stephen Kelly a5e3d87f66 [clang-tidy] Handle uninstantiated templates in redundant get check
Differential Revision: https://reviews.llvm.org/D96222
2021-02-27 12:08:41 +00:00
Nathan James 1a721b6a26
[clang-tidy][NFC] Tweak some generation of diag messages
Fix up cases where diag is called by piecing together a string in favour of placeholders.
Fix up cases where select could be used instead of duplicating the message for sake of 1 word difference.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97488
2021-02-26 19:10:25 +00:00
Nathan James a34532c330
[clang-tidy] Fix readability-avoid-const-params-in-decls removing const in template paramaters
Fixes https://bugs.llvm.org/show_bug.cgi?id=38035

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D96209
2021-02-24 15:54:10 +00:00
Nathan James e96f9cca3b
[clang-tidy] Remove IncludeInserter from MoveConstructorInit check.
This check registers an IncludeInserter, however the check itself doesn't actually emit any fixes or includes, so the inserter is redundant.

From what I can tell the fixes were removed in D26453(rL290051) but the inserter was left in, probably an oversight.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97243
2021-02-23 13:48:07 +00:00
Balázs Kéri 2c54b29337 [clang-tidy] Extending bugprone-signal-handler with POSIX functions.
An option is added to the check to select wich set of functions is
defined as asynchronous-safe functions.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D90851
2021-02-23 14:48:00 +01:00
Florian Schmaus 6c78711f10
[clang-tidy] Install run-clang-tidy.py in bin/ as run-clang-tidy
The run-clang-tidy.py helper script is supposed to be used by the
user, hence it should be placed in the user's PATH. Some
distributions, like Gentoo [1], won't have it in PATH unless it is
installed in bin/.

Furthermore, installed scripts in PATH usually do not carry a filename
extension, since there is no need to know that this is a Python
script. For example Debian and Ubuntu already install this script as
'run-clang-tidy' [2] and hence build systems like Meson also look for
this name first [3]. Hence we install run-clang-tidy.py as
run-clang-tidy, as suggested by Sylvestre Ledru [4].

1: https://bugs.gentoo.org/753380
2: 60aefb1417/debian/clang-tidy-X.Y.links.in (L2)
3: b6dc4d5e5c/mesonbuild/scripts/clangtidy.py (L44)
4: https://reviews.llvm.org/D90972#2380640

Reviewed By: sylvestre.ledru, JonasToth

Differential Revision: https://reviews.llvm.org/D90972
2021-02-23 12:38:27 +00:00
Nathan James a2e15fa532
[clang-tidy] Harden PreferMemberInitializerCheck
Prevent warning when the values are initialized using fields that will be initialized later or VarDecls defined in the constructors body.
Both of these cases can't be safely fixed.
Also improve logic of finding where to insert member initializers, previously it could be confused by in class member initializers.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97132
2021-02-22 19:41:11 +00:00
Balázs Kéri 7dc7f0c2ec [clang-tidy] Add new check 'concurrency-thread-canceltype-asynchronous' and alias 'cert-pos47-c'.
Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D96719
2021-02-22 12:42:20 +01:00
Nathan James 557d2ade01
[NFC] Refactor PreferMemberInitializerCheck 2021-02-20 23:35:58 +00:00
Stephen Kelly 77056fe58e [clang-tidy] Simplify throw keyword missing check
Extend test to verify that it does not match in template instantiations.

Differential Revision: https://reviews.llvm.org/D96132
2021-02-20 22:07:20 +00:00
Stephen Kelly 6852a29a3b [clang-tidy] Simplify function complexity check
Update test to note use of lambda instead of the invisible operator().

Differential Revision: https://reviews.llvm.org/D96131
2021-02-20 22:06:16 +00:00
Stephen Kelly 9a4b574dd6 [clang-itdy] Simplify virtual near-miss check
Diagnose the problem in templates in the context of the template
declaration instead of in the context of all of the (possibly very many)
template instantiations.

Differential Revision: https://reviews.llvm.org/D96224
2021-02-20 22:02:00 +00:00
Stephen Kelly e8b8f89602 [clang-tidy] Simplify braced init check
The normalization of matchers means that this now works in all language
modes.

Differential Revision: https://reviews.llvm.org/D96135
2021-02-20 20:09:13 +00:00
Jonas Otto af06ff1cf8 add -use-color option to clang-tidy-diff.py
Clang-tidy seems to output color only when printing directly to
terminal, but an option to force color-output has been added in
https://reviews.llvm.org/D7947
2021-02-18 09:12:48 -05:00
Stephen Kelly ca4485d9fc [clang-tidy] Simplify const params check
Differential Revision: https://reviews.llvm.org/D96141
2021-02-17 10:20:12 +00:00
Stephen Kelly 6c2eca96a2 [clang-tidy] Simplify inefficient algorithm check
The normalization of matchers means that this now works in all language
modes.

Differential Revision: https://reviews.llvm.org/D96140
2021-02-17 10:19:44 +00:00
Stephen Kelly d20961c657 [clang-tidy] Simplify delete null ptr check
Because it no longer relies on finding implicit casts, this check now
works on templates which are not instantiated in the translation unit.

Differential Revision: https://reviews.llvm.org/D96138
2021-02-17 10:18:36 +00:00
Stephen Kelly f2f920b987 [clang-tidy] Simplify inaccurate erase check
The normalization of matchers means that this now works in all language
modes.

Differential Revision: https://reviews.llvm.org/D96139
2021-02-13 13:51:27 +00:00
Stephen Kelly 1709bb8c73 [clang-tidy] Simplify static assert check
Differential Revision: https://reviews.llvm.org/D96223
2021-02-13 13:49:01 +00:00
Yitzhak Mandelbaum 33f35a4b79 [clang-tidy] Fix `TransformerClangTidyCheck`'s handling of include insertions.
Currently, all include insertions are directed to the main file. However,
Transformer rules can specify alternative destinations for include
insertions. This patch fixes the code to associate the include with the correct
file.

This patch was tested manually. The clang tidy unit test framework does not
support testing changes to header files. Given that this is a bug fix for a live
bug, the patch relies on manual testing rather than blocking on upgrading the
unit test framework.

Differential Revision: https://reviews.llvm.org/D96542
2021-02-12 16:23:53 +00:00
poelmanc 98146c1f5d
[clang-tidy] fix modernize-use-nullptr false positive with spaceship operator comparisons
`clang-tidy -std=c++20` with `modernize-use-nullptr` mistakenly inserts `nullptr` in place of the comparison operator if the comparison internally expands in the AST to a rewritten spaceship operator. This can be reproduced by running the new `modernize-use-nullptr-cxx20.cpp` test without applying the supplied patch to `UseNullptrCheck.cpp`; the current clang-tidy will mistakenly replace:
```result = (a1 < a2);```
with
```result = (a1 nullptr a2);```

Reviewed By: njames93

Differential Revision: https://reviews.llvm.org/D95714
2021-02-09 14:02:45 +00:00