llvm-project/clang-tools-extra
Matthias Gehre 27da23464f [clang-tidy] add check cppcoreguidelines-pro-type-vararg
Summary:
This check flags all calls to c-style vararg functions and all use
of va_list, va_start and va_arg.

Passing to varargs assumes the correct type will be read. This is
fragile because it cannot generally be enforced to be safe in the
language and so relies on programmer discipline to get it right.

This rule is part of the "Type safety" profile of the C++ Core
Guidelines, see
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-type8-avoid-reading-from-varargs-or-passing-vararg-arguments-prefer-variadic-template-parameters-instead

This commits also reverts
  "[clang-tidy] add cert's VariadicFunctionDefCheck as cppcoreguidelines-pro-type-vararg-def"
because that check makes the SFINAE use of vararg functions impossible.

Reviewers: alexfh, sbenza, bkramer, aaron.ballman

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D13787

llvm-svn: 250939
2015-10-21 20:09:02 +00:00
..
clang-apply-replacements Replace double negation of !FileID.isInvalid() with FileID.isValid(). 2015-10-03 10:46:20 +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 check cppcoreguidelines-pro-type-vararg 2015-10-21 20:09:02 +00:00
docs [clang-tidy] add check cppcoreguidelines-pro-type-vararg 2015-10-21 20:09:02 +00:00
modularize Revert "Apply modernize-use-default to clang-tools-extra." 2015-10-20 21:45:52 +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 check cppcoreguidelines-pro-type-vararg 2015-10-21 20:09:02 +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/