llvm-project/clang-tools-extra
Matthias Gehre eeb71758cc [clang-tidy] add new check cppcoreguidelines-pro-type-cstyle-cast
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
2015-11-08 21:10:39 +00:00
..
clang-apply-replacements Refactor: Simplify boolean conditional return statements in clang-apply-replacements 2015-11-05 20:59:17 +00:00
clang-modernize Revert "Apply modernize-use-default to clang-tools-extra." 2015-10-20 21:45:52 +00:00
clang-query Revert "Apply modernize-use-default to clang-tools-extra." 2015-10-20 21:45:52 +00:00
clang-rename Revert r241330. It compiled with Visual C++ 2013 and gcc 4.9.1 (mingw) but now fails the bots. 2015-07-03 09:30:33 +00:00
clang-tidy [clang-tidy] add new check cppcoreguidelines-pro-type-cstyle-cast 2015-11-08 21:10:39 +00:00
docs [clang-tidy] add new check cppcoreguidelines-pro-type-cstyle-cast 2015-11-08 21:10:39 +00:00
modularize Accommodate interface change in r252134. 2015-11-05 02:30:21 +00:00
pp-trace Revert "Apply modernize-use-default to clang-tools-extra." 2015-10-20 21:45:52 +00:00
test [clang-tidy] add new check cppcoreguidelines-pro-type-cstyle-cast 2015-11-08 21:10:39 +00:00
tool-template Revert "Adapt clang-tools-extra to clang module format changes." 2015-02-25 02:46:37 +00:00
unittests Revert "Apply modernize-use-default to clang-tools-extra." 2015-10-20 21:45:52 +00:00
.arcconfig Update arc config to new domain. 2014-04-07 10:23:19 +00:00
.gitignore .gitignore: ignore docs/_build 2013-03-03 15:15:12 +00:00
CMakeLists.txt Fix the *unchecked* commit. 2015-10-01 23:50:06 +00:00
CODE_OWNERS.TXT Updating the code owners list. 2015-09-02 20:00:41 +00:00
LICENSE.TXT Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
Makefile Fix ./configure build after r232338. 2015-03-16 00:43:57 +00:00
README.txt Update references to new lists.llvm.org mailing lists. 2015-08-05 03:56:44 +00:00

README.txt

//===----------------------------------------------------------------------===//
// Clang Tools repository
//===----------------------------------------------------------------------===//

Welcome to the repository of extra Clang Tools.  This repository holds tools
that are developed as part of the LLVM compiler infrastructure project and the
Clang frontend.  These tools are kept in a separate "extra" repository to
allow lighter weight checkouts of the core Clang codebase.

This repository is only intended to be checked out inside of a full LLVM+Clang
tree, and in the 'tools/extra' subdirectory of the Clang checkout.

All discussion regarding Clang, Clang-based tools, and code in this repository
should be held using the standard Clang mailing lists:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

Code review for this tree should take place on the standard Clang patch and
commit lists:
  http://lists.llvm.org/mailman/listinfo/cfe-commits

If you find a bug in these tools, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/