Reapply r213647 with a fix.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 23 Jul 2014 11:49:46 +0000 (11:49 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 23 Jul 2014 11:49:46 +0000 (11:49 +0000)
commitda3658e2b7f59c8a32f815f3309b61ef1a86c86b
tree1ade76ef628cd028d2104fce384bcfc2a8b7ac74
parent7664558efcfb8cf53e1f4d599c01500e09a5a406
Reapply r213647 with a fix.

ASTMatchers currently have problems mixing bound TypeLoc nodes with Decl/Stmt
nodes. That should be fixed soon but for this checker there we only need the
TypeLoc to generate a fixit so postpone the potentially heavyweight AST walking
until after we know that we're going to emit a warning.

This is covered by existing test cases.

Original message:
[clang-tidy] Add a check for RAII temporaries.

This tries to find code similar that immediately destroys
an object that looks like it's trying to follow RAII.
  {
    scoped_lock(&global_mutex);
    critical_section();
  }

This checker will have false positives if someone uses this pattern
to legitimately invoke a destructor immediately (or the statement is
at the end of a scope anyway). To reduce the number we ignore this
pattern in macros (this is heavily used by gtest) and ignore objects
with no user-defined destructor.

llvm-svn: 213738
clang-tools-extra/clang-tidy/misc/CMakeLists.txt
clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
clang-tools-extra/clang-tidy/misc/UnusedRAII.cpp [new file with mode: 0644]
clang-tools-extra/clang-tidy/misc/UnusedRAII.h [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/misc-unused-raii.cpp [new file with mode: 0644]