hanchenye-llvm-project/clang-tools-extra/clang-tidy/bugprone
Jonas Toth 6b3d33e996 [clang-tidy] new check: bugprone-too-small-loop-variable
The new checker searches for those for loops which has a loop variable with a "too small" type which means this type can't represent all values which are part of the iteration range.

For example:

```
int main() {
  long size = 300000;
  for( short int i = 0; i < size; ++i) {}
}
```

The short type leads to infinite loop here because it can't store all values in the `[0..size]` interval. In a real use case, size means a container's size which depends on the user input. Which means for small amount of objects the algorithm works, but with a larger user input the software will freeze.

The idea of the checker comes from the LibreOffice project, where the same check was implemented as a clang compiler plugin, called `LoopVarTooSmall` (LLVM licensed).
The idea is the same behind this check, but the code is different because of the different framework.

Patch by ztamas.

Reviewers: alexfh, hokein, aaron.ballman, JonasToth, xazax.hun, whisperity

Reviewed By: JonasToth, whisperity

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

llvm-svn: 346665
2018-11-12 16:01:39 +00:00
..
ArgumentCommentCheck.cpp [clang-tidy] NFC refactor lexer-utils to be usable without ASTContext 2018-10-05 14:15:19 +00:00
ArgumentCommentCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
AssertSideEffectCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
AssertSideEffectCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
BoolPointerImplicitConversionCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
BoolPointerImplicitConversionCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
BugproneTidyModule.cpp [clang-tidy] new check: bugprone-too-small-loop-variable 2018-11-12 16:01:39 +00:00
CMakeLists.txt [clang-tidy] new check: bugprone-too-small-loop-variable 2018-11-12 16:01:39 +00:00
CopyConstructorInitCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
CopyConstructorInitCheck.h [clang-tidy] Add a check for undelegated copy of base classes 2017-11-17 12:23:30 +00:00
DanglingHandleCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
DanglingHandleCheck.h [clang-tidy] rename_check.py misc-dangling-handle bugprone-dangling-handle 2017-11-24 09:52:05 +00:00
ExceptionEscapeCheck.cpp [clang-tidy] Optimize query in bugprone-exception-escape 2018-10-13 10:34:52 +00:00
ExceptionEscapeCheck.h [clang-tidy] Exception Escape Checker 2018-07-13 13:09:40 +00:00
FoldInitTypeCheck.cpp [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
FoldInitTypeCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
ForwardDeclarationNamespaceCheck.cpp [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
ForwardDeclarationNamespaceCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
ForwardingReferenceOverloadCheck.cpp Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
ForwardingReferenceOverloadCheck.h Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
InaccurateEraseCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
InaccurateEraseCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
IncorrectRoundingsCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
IncorrectRoundingsCheck.h Fixed filename in a comment. NFC 2018-03-15 08:26:58 +00:00
IntegerDivisionCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
IntegerDivisionCheck.h
LambdaFunctionNameCheck.cpp [AST] Refactor PredefinedExpr 2018-10-27 19:21:19 +00:00
LambdaFunctionNameCheck.h Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
MacroParenthesesCheck.cpp [clang-tidy] rename_check.py {misc,bugprone}-macro-parentheses 2018-03-15 08:25:39 +00:00
MacroParenthesesCheck.h [clang-tidy] rename_check.py {misc,bugprone}-macro-parentheses 2018-03-15 08:25:39 +00:00
MacroRepeatedSideEffectsCheck.cpp Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
MacroRepeatedSideEffectsCheck.h Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
MisplacedOperatorInStrlenInAllocCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
MisplacedOperatorInStrlenInAllocCheck.h [clang-tidy] Misplaced Operator in Strlen in Alloc 2017-11-23 12:33:12 +00:00
MisplacedWideningCastCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
MisplacedWideningCastCheck.h Rename a few checks from misc- to bugprone-. 2018-02-28 14:47:20 +00:00
MoveForwardingReferenceCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
MoveForwardingReferenceCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
MultipleStatementMacroCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
MultipleStatementMacroCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
ParentVirtualCallCheck.cpp [clang-tidy] Fix ParentVirtualCallCheck for old MSVS compilers 2018-04-13 08:43:47 +00:00
ParentVirtualCallCheck.h [clang-tidy] Check if grand-..parent's virtual method was called instead of overridden parent's. 2018-04-06 20:02:50 +00:00
SizeofContainerCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SizeofContainerCheck.h [clang-tidy] rename_check.py misc-sizeof-container bugprone-sizeof-container 2018-03-15 08:26:47 +00:00
SizeofExpressionCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SizeofExpressionCheck.h [clang-tidy] Check for sizeof that call functions 2018-04-03 15:10:24 +00:00
StringConstructorCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
StringConstructorCheck.h [clang-tidy] rename_check.py misc-string-constructor bugprone-string-constructor 2017-11-23 13:49:14 +00:00
StringIntegerAssignmentCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
StringIntegerAssignmentCheck.h Rename more checks from misc- to bugprone-. 2018-02-28 23:30:29 +00:00
StringLiteralWithEmbeddedNulCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
StringLiteralWithEmbeddedNulCheck.h Rename more checks from misc- to bugprone-. 2018-02-28 23:30:29 +00:00
SuspiciousEnumUsageCheck.cpp Rename more checks from misc- to bugprone-. 2018-02-28 23:30:29 +00:00
SuspiciousEnumUsageCheck.h Rename more checks from misc- to bugprone-. 2018-02-28 23:30:29 +00:00
SuspiciousMemsetUsageCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SuspiciousMemsetUsageCheck.h
SuspiciousMissingCommaCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SuspiciousMissingCommaCheck.h Rename more checks from misc- to bugprone-. 2018-02-28 23:30:29 +00:00
SuspiciousSemicolonCheck.cpp [clang-tidy] NFC refactor lexer-utils to be usable without ASTContext 2018-10-05 14:15:19 +00:00
SuspiciousSemicolonCheck.h [clang-tidy] Another batch of checks to rename from misc- to bugprone-. 2018-02-28 23:47:15 +00:00
SuspiciousStringCompareCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SuspiciousStringCompareCheck.h [clang-tidy] Another batch of checks to rename from misc- to bugprone-. 2018-02-28 23:47:15 +00:00
SwappedArgumentsCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
SwappedArgumentsCheck.h [clang-tidy] Another batch of checks to rename from misc- to bugprone-. 2018-02-28 23:47:15 +00:00
TerminatingContinueCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
TerminatingContinueCheck.h [clang-tidy] Add terminating continue check 2018-05-14 10:10:02 +00:00
ThrowKeywordMissingCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
ThrowKeywordMissingCheck.h [clang-tidy] New checker for exceptions that are created but not thrown 2018-02-15 09:08:51 +00:00
TooSmallLoopVariableCheck.cpp [clang-tidy] new check: bugprone-too-small-loop-variable 2018-11-12 16:01:39 +00:00
TooSmallLoopVariableCheck.h [clang-tidy] new check: bugprone-too-small-loop-variable 2018-11-12 16:01:39 +00:00
UndefinedMemoryManipulationCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
UndefinedMemoryManipulationCheck.h
UndelegatedConstructorCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
UndelegatedConstructorCheck.h [clang-tidy] Another batch of checks to rename from misc- to bugprone-. 2018-02-28 23:47:15 +00:00
UnusedRaiiCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
UnusedRaiiCheck.h [clang-tidy] rename_check.py misc-unused-raii bugprone-unused-raii --check_class_name=UnusedRAIICheck 2018-03-15 08:27:42 +00:00
UnusedReturnValueCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
UnusedReturnValueCheck.h [clang-tidy] New check bugprone-unused-return-value 2018-03-19 13:02:32 +00:00
UseAfterMoveCheck.cpp [clang-tidy] Sequence statements with multiple parents correctly (PR39149) 2018-10-04 11:36:39 +00:00
UseAfterMoveCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00
VirtualNearMissCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
VirtualNearMissCheck.h [clang-tidy] Move a few more checks from misc to bugprone. 2017-11-24 14:16:29 +00:00