summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra
Commit message (Collapse)AuthorAgeFilesLines
* Revert r253401, "[clang-tidy] add check ↵NAKAMURA Takumi2015-11-187-258/+0
| | | | | | | | cppcoreguidelines-pro-bounds-constant-array-index" cppcoreguidelines-pro-bounds-constant-array-index.cpp is failing in several hosts. llvm-svn: 253428
* [clang-tidy] add check cppcoreguidelines-pro-bounds-constant-array-indexMatthias Gehre2015-11-177-0/+258
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This check flags all array subscriptions on static arrays and std::arrays that either have a non-compile-time-constant index or are out of bounds. Dynamic accesses into arrays are difficult for both tools and humans to validate as safe. array_view is a bounds-checked, safe type for accessing arrays of data. at() is another alternative that ensures single accesses are bounds-checked. If iterators are needed to access an array, use the iterators from an array_view constructed over the array. This rule is part of the "Bounds safety" profile of the C++ Core Guidelines, see https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-bounds2-only-index-into-arrays-using-constant-expressions Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D13746 llvm-svn: 253401
* Fix bug 25362 "cppcoreguidelines-pro-bounds-array-to-pointer-decay does not ↵Matthias Gehre2015-11-173-2/+23
| | | | | | | | | | | | | | | | | | | | | | | | | consider const" Summary: The current matcher is implicitCastExpr(unless(hasParent(explicitCastExpr()))) but the AST in the bug is `-CXXStaticCastExpr 0x2bb64f8 <col:21, col:55> 'void *const *' static_cast<void *const *> <NoOp> `-ImplicitCastExpr 0x2bb64e0 <col:47> 'void *const *' <NoOp> `-ImplicitCastExpr 0x2bb64c8 <col:47> 'void **' <ArrayToPointerDecay> `-DeclRefExpr 0x2bb6458 <col:47> 'void *[2]' lvalue Var 0x2bb59d0 'addrlist' 'void *[2]' i.e. an ImplicitCastExpr (const cast) between decay and explicit cast. Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14517 llvm-svn: 253399
* modularize: add install ruleSaleem Abdulrasool2015-11-171-0/+4
| | | | | | | This allows modularize to be installed. Previously, no install rule would be created for it. llvm-svn: 253310
* Add a new clang-tidy checker that flags throw expressions whose thrown type ↵Aaron Ballman2015-11-167-0/+210
| | | | | | | | is not nothrow copy constructible. While the compiler is free to elide copy constructor calls in some cases, it is under no obligation to do so, which makes the code a portability concern as well as a security concern. This checker corresponds to the CERT secure coding rule: https://www.securecoding.cert.org/confluence/display/cplusplus/ERR60-CPP.+Exception+objects+must+be+nothrow+copy+constructible llvm-svn: 253246
* [clang-tidy] Test commit (playing with git-svn)Alexander Kornienko2015-11-162-4/+3
| | | | llvm-svn: 253203
* [clang-tidy] Remove unused #includes.Alexander Kornienko2015-11-131-2/+0
| | | | | | | | | | Summary: Testing Phab with git-svn Reviewers: alexfh Differential Revision: http://reviews.llvm.org/D14649 llvm-svn: 253036
* Fix bug in suggested fix that truncated variable names to 1 character.Samuel Benzaquen2015-11-112-32/+63
| | | | | | | | | | | | | | Summary: Fix bug in suggested fix that truncated variable names to 1 character. Also, rework the suggested fix to try to remove unnecessary whitespace. Reviewers: alexfh, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D13899 llvm-svn: 252773
* [clang-tidy] misc-macro-parentheses: fix fp when using object member pointersDaniel Marjamaki2015-11-102-1/+4
| | | | | | Fixes http://llvm.org/PR25208. llvm-svn: 252608
* Rewording some of this documentation to describe the check instead of try to ↵Aaron Ballman2015-11-092-10/+3
| | | | | | rationalize the behavior of the check. The links already provide sufficient rationale. llvm-svn: 252496
* Add ExtraArgs and ExtraArgsBefore options to enable clang warnings via ↵Alexander Kornienko2015-11-096-4/+58
| | | | | | | | | | | | | | configuration files. Summary: This patch depends on http://reviews.llvm.org/D14191 Reviewers: djasper, klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14192 llvm-svn: 252485
* [clang-tidy] Fix message style (capitalization, trailing period).Alexander Kornienko2015-11-092-20/+19
| | | | llvm-svn: 252471
* [clang-tidy] add new check cppcoreguidelines-pro-type-cstyle-castMatthias Gehre2015-11-087-0/+302
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This check flags all use of c-style casts that perform a static_cast downcast, const_cast, or reinterpret_cast. Use of these casts can violate type safety and cause the program to access a variable that is actually of type X to be accessed as if it were of an unrelated type Z. Note that a C-style (T)expression cast means to perform the first of the following that is possible: a const_cast, a static_cast, a static_cast followed by a const_cast, a reinterpret_cast, or a reinterpret_cast followed by a const_cast. This rule bans (T)expression only when used to perform an unsafe cast. This rule is part of the "Type safety" profile of the C++ Core Guidelines, see https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-type4-dont-use-c-style-texpression-casts-that-would-perform-a-static_cast-downcast-const_cast-or-reinterpret_cast. Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14096 llvm-svn: 252425
* Allow the alias to be of a different type.Angel Garcia Gomez2015-11-062-13/+38
| | | | | | | | | | | | Summary: Consider a declaration an alias even if it doesn't have the same unqualified type than the container element, as long as one can be converted to the other using only implicit casts. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D14442 llvm-svn: 252315
* Use the old index identifier by default, instead of 'elem'.Angel Garcia Gomez2015-11-067-484/+304
| | | | | | | | | | | | Summary: Use the old index name in the cases where the check would come up with an invented name. Reviewers: klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14438 llvm-svn: 252308
* Avoid naming conflicts with the old index in modernize-loop-convert.Angel Garcia Gomez2015-11-062-5/+23
| | | | | | | | | | | | Summary: The old index declaration is going to be removed anyway, so we can reuse its name if it is the best candidate for the new index. Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14437 llvm-svn: 252303
* Fix another case where loop-convert wasn't handling correctly data members.Angel Garcia Gomez2015-11-062-3/+28
| | | | | | | | | | | | | | | Summary: If the container expression was obtained from the point where "size" (which usually is a const method) is invoked, then the topmost node in this expression may be an implicit cast to const. When the container is a data member, the check was trying to obtain the member expression directly and was failing in the case mentioned above. This is solved by ignoring implicit casts. Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14378 llvm-svn: 252278
* [clang-tidy] readability-named-parameter: don't complain about implicit ↵Alexander Kornienko2015-11-062-0/+6
| | | | | | | | parameters Fixes http://llvm.org/PR24464. llvm-svn: 252248
* Refactor: Simplify boolean conditional return statements in ↵Alexander Kornienko2015-11-051-4/+1
| | | | | | | | | | clang-apply-replacements Differential revision: http://reviews.llvm.org/D10025 Patch by Richard Thomson! llvm-svn: 252207
* Accommodate interface change in r252134.Alexander Kornienko2015-11-051-1/+2
| | | | llvm-svn: 252138
* Improve modernize-make-unique matcher.Angel Garcia Gomez2015-11-042-3/+10
| | | | | | | | | | | | Summary: "std::unique_ptr<int>" is not the same type as "std::unique_ptr<int, std::default_delete<int>>", unless we insert a "hasCanonicalType" in the middle. Probably it also happens in other cases related to default template argument. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D14291 llvm-svn: 252041
* Handle correctly containers that are data members in modernize-loop-convert.Angel Garcia Gomez2015-11-037-36/+67
| | | | | | | | | | | | | | | | Summary: I recently found that the variable naming wasn't working as expected with containers that are data members. The new index always received the name "Elem" (or equivalent) regardless of the container's name. The check was assuming that the container's declaration was a VarDecl, which cannot be converted to a FieldDecl (a data member), and then it could never retrieve its name. This also fixes some cases where the check failed to find the container at all (so it didn't do any fix) because of the same reason. Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14289 llvm-svn: 251943
* Improve more the const-detection in modernize-loop-convert.Angel Garcia Gomez2015-11-032-4/+69
| | | | | | | | | | | | Summary: The previous change was focused in detecting when a non-const object was used in a constant way. Looks like I forgot the most important and trivial case: when the object is already constant. Failing to detect this cases results in compile errors, due to trying to bind a constant object to a non-const reference in the range-for statement. This change should fix that. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D14282 llvm-svn: 251940
* Make the modernize-loop-convert's const-detection smarter.Angel Garcia Gomez2015-11-027-69/+393
| | | | | | | | | | | | | | | | Summary: Now, it detects that several kinds of usages are can't modify the elements. Examples: -When an usage is a call to a const member function or operator of the element. -If the element is used as an argument to a function or constructor that takes a const-reference or a value. -LValue to RValue conversion, if the element is a fundamental type (which allows the use of most of the builtin operators). Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14198 llvm-svn: 251808
* Fix another crash in the redundant-void-arg check.Angel Garcia Gomez2015-11-022-3/+12
| | | | | | | | | | | | Summary: The check was assuming that a definition of a function always has a body, but a declaration that explicitly defaults or deletes a function is a definition too. Reviewers: alexfh Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D14238 llvm-svn: 251807
* Remove unreachable that was reached in modernize-use-nullptr.Angel Garcia Gomez2015-11-022-5/+18
| | | | | | | | | | | | Summary: When traversing the parent map, the check assumed that all the nodes would be either Stmt or Decl. After r251101, this is no longer true: there can be TypeLoc and NestedNameSpecifierLoc nodes. Reviewers: alexfh Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D14229 llvm-svn: 251803
* Fix crash in redundant-void-arg check.Angel Garcia Gomez2015-11-022-10/+30
| | | | | | | | | | | | | | Summary: When applying this check to the unit tests, it would hit an assertion: llvm/tools/clang/lib/Lex/Lexer.cpp:1056: clang::SourceLocation clang::Lexer::getSourceLocation(const char*, unsigned int) const: Assertion `PP && "This doesn't work on raw lexers"' failed. Reviewers: klimek, LegalizeAdulthood, alexfh Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14204 llvm-svn: 251792
* Try to fix buildbots failure.Angel Garcia Gomez2015-11-022-2/+2
| | | | | | | | | | Summary: Add -fexceptions flag to enable exceptions. Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14225 llvm-svn: 251790
* modernize-use-default supports copy constructor and copy-assignment operator.Angel Garcia Gomez2015-11-023-90/+839
| | | | | | | | | | | | Summary: the check will now warn when the user provided definitions of this functions is equivalent to the explicitly defaulted ones. Reviewers: klimek Subscribers: klimek, cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14145 llvm-svn: 251788
* Only copy small types in modernize-loop-convert.Angel Garcia Gomez2015-10-305-15/+37
| | | | | | | | | | | | Summary: If the size of the type is above a certain bound, we'll take a const reference. This bound can be set as an option. For now, the default value is 16 bytes. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D14176 llvm-svn: 251694
* Change test to just define NULL instead of #including stddef.h. In someDaniel Jasper2015-10-281-1/+1
| | | | | | | test environments, even that builtin header isn't available. Also, this makes it more consistent with the C++ version of this test. llvm-svn: 251520
* clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.c: Use ↵NAKAMURA Takumi2015-10-281-1/+1
| | | | | | <stddef.h> provided by clang, instead of <stdio.h>. llvm-svn: 251503
* [tidy] Remove stray iostream include from test.Benjamin Kramer2015-10-281-1/+1
| | | | | | | It is unused and we cannot rely on standard headers being present while executing tests. llvm-svn: 251499
* Add modernize-redundant-void-arg check to clang-tidyAlexander Kornienko2015-10-286-0/+811
| | | | | | | | | | | | | | | | | | | | | This check for clang-tidy looks for function with zero arguments declared as (void) and removes the unnecessary void token. int foo(void); becomes int foo(); The check performs no formatting of the surrounding context but uses the lexer to look for the token sequence "(", "void", ")" in the prototype text. If this sequence of tokens is found, a removal is issued for the void token only. Patch by Richard Thomson! (+fixed tests, moved the check to the modernize module) Differential revision: http://reviews.llvm.org/D7639 llvm-svn: 251475
* [clang-tidy] Add new check cppcoreguidelines-pro-bounds-array-to-pointer-decayMatthias Gehre2015-10-267-0/+149
| | | | | | | | | | | | | | | | | | | | Summary: This check flags all array to pointer decays. Pointers should not be used as arrays. array_view is a bounds-checked, safe alternative to using pointers to access arrays. This rule is part of the "Bounds safety" profile of the C++ Core Guidelines, see https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-bounds3-no-array-to-pointer-decay Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D13640 llvm-svn: 251358
* clang-tidy/add_new_check.py: Adapt to use %check_clang_tidy in testsMatthias Gehre2015-10-261-1/+1
| | | | | | | | | | | | Summary: Adapt clang-tidy/add_new_check.py according to commit r251010 "Add %check_clang_tidy and %clang_tidy_diff" Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14049 llvm-svn: 251355
* Drop dead return after llvm_unreachable. NFC.Benjamin Kramer2015-10-261-1/+0
| | | | llvm-svn: 251279
* assert(false) -> llvm_unreachable.Benjamin Kramer2015-10-251-1/+1
| | | | llvm-svn: 251265
* [clang-tidy] Add return value for non-assert builds.Daniel Jasper2015-10-251-0/+1
| | | | llvm-svn: 251262
* [clang-tidy] Another fix for failing buildbots regarding signedness of charPiotr Dziwinski2015-10-252-10/+10
| | | | | | | | | I totally forgot that char can be defined as unsigned on some platforms. Now I made explicit mention of signed type where necessary in tests. Also fixed '//RUN: ' header of cxx98 test to correct format. llvm-svn: 251244
* [clang-tidy] Fix for build bots not liking #include <cstddef>Piotr Dziwinski2015-10-252-2/+8
| | | | llvm-svn: 251239
* [clang-tidy] Add check readability-implicit-bool-castPiotr Dziwinski2015-10-259-0/+1101
| | | | | | | | | | | | | | | | | | | | | Summary: This is another check that I ported to clang-tidy from colobot-lint tool. As previously discussed on cfe-dev mailing list, this is one of those checks that I think is general and useful enough for contribution to clang-tidy. This patch contains implementation of check taken from colobot-lint, but it is extended a great deal, including FixIt hints for automated refactoring, exhaustive testcases, and user documentation. Reviewers: sbenza, aaron.ballman, alexfh Subscribers: Eugene.Zelenko Differential Revision: http://reviews.llvm.org/D13635 llvm-svn: 251235
* Test commitPiotr Dziwinski2015-10-241-2/+2
| | | | llvm-svn: 251204
* Make isExpensiveToCopy() tri-state.Manuel Klimek2015-10-234-9/+8
| | | | | | This allows returning "don't know" for dependent types. llvm-svn: 251103
* Switch check_clang_tidy to argparse and add a -resource-dir argument.Manuel Klimek2015-10-2236-44/+55
| | | | | | | -resource-dir can be used to inject non-standard resource dirs via the lit site config. llvm-svn: 251021
* Don't use "auto" on loops over fundamental types in modernize-loop-convert.Angel Garcia Gomez2015-10-227-115/+166
| | | | | | | | | | | | Summary: using "auto" on a loop that iterates over ints is kind of an overkill. Use the real type name instead. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D13982 llvm-svn: 251015
* Correctly print the type in modernize-make-unique.Angel Garcia Gomez2015-10-222-2/+14
| | | | | | | | | | | | Summary: Take into account the current LangOptions the check has to add back the template argument. Reviewers: klimek Subscribers: alexfh, cfe-commits Differential Revision: http://reviews.llvm.org/D13983 llvm-svn: 251013
* Add %check_clang_tidy and %clang_tidy_diff.Manuel Klimek2015-10-2282-82/+91
| | | | | | | | | | With this, site specific lit configs can inject parameters into the test scripts if they need site specific parameters. Next up: enable check_clang_tidy to take a resource dir to enable non-standard locations for builtin includes. llvm-svn: 251010
* Make string constants in the modernize module static.Angel Garcia Gomez2015-10-223-18/+18
| | | | | | | | | | | | Summary: Add static to global variables, if they are not in an anonymous namespace. Reviewers: klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D13975 llvm-svn: 251005
* clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-type-vararg.cpp: ↵NAKAMURA Takumi2015-10-221-1/+1
| | | | | | Tweak not to depend on out-of-tree header <cstdarg>. llvm-svn: 250986
OpenPOWER on IntegriCloud