hanchenye-llvm-project/clang-tools-extra
Roman Lebedev 4d37af003f [clang-tidy] readability-function-size: add VariableThreshold param.
Summary:
Pretty straight-forward, just count all the variable declarations in the function's body, and if more than the configured threshold - do complain.

Note that this continues perverse practice of disabling the new option by default.
I'm not certain where is the balance point between not being too noisy, and actually enforcing the good practice.
If we really want to not disable this by default, but also to not cause too many new warnings, we could default to 50 or so.
But that is a lot of variables too...

I was able to find one coding style referencing variable count:
  - https://www.kernel.org/doc/html/v4.15/process/coding-style.html#functions

    > Another measure of the function is the number of local variables. They shouldn’t exceed 5-10, or you’re doing something wrong.

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

Reviewed By: aaron.ballman

Subscribers: kimgr, Eugene.Zelenko, rnkovacs, cfe-commits

Tags: #clang-tools-extra

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

llvm-svn: 329902
2018-04-12 12:06:42 +00:00
..
change-namespace [change-namespace] Don't match a function call/ref multiple times. 2018-03-15 14:45:02 +00:00
clang-apply-replacements [clang-apply-replacements] Always initialize FormatStyle. 2018-04-12 10:35:24 +00:00
clang-doc [clang-doc] Removing -Wunused-variable warning 2018-03-26 22:37:31 +00:00
clang-move Revert "[Tooling] [1/1] Refactor FrontendActionFactory::create() to return std::unique_ptr<>" 2018-02-27 15:54:41 +00:00
clang-query Fix for LLVM r326109 2018-02-26 20:21:30 +00:00
clang-reorder-fields [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
clang-tidy [clang-tidy] readability-function-size: add VariableThreshold param. 2018-04-12 12:06:42 +00:00
clang-tidy-vs [clang-tidy] Remove google-runtime-member-string-references 2018-04-05 14:51:01 +00:00
clangd [clangd] Use operator<< to prevent printers issues in Gtest 2018-04-10 17:34:46 +00:00
docs [clang-tidy] readability-function-size: add VariableThreshold param. 2018-04-12 12:06:42 +00:00
include-fixer Improve completion experience for headers 2018-04-09 13:31:44 +00:00
modularize clang-tidy, modularize: return non-zero exit code on errors 2018-03-22 14:18:20 +00:00
pp-trace Revert "[Tooling] [1/1] Refactor FrontendActionFactory::create() to return std::unique_ptr<>" 2018-02-27 15:54:41 +00:00
test [clang-tidy] readability-function-size: add VariableThreshold param. 2018-04-12 12:06:42 +00:00
tool-template [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
unittests [clang-apply-replacements] Convert tooling::Replacements to tooling::AtomicChange for conflict resolving of changes, code cleanup, and code formatting. 2018-04-11 14:39:17 +00:00
.arcconfig [clang-tools-extra] Set up .arcconfig to point to new Diffusion CTE repository 2017-11-27 15:58:25 +00:00
.gitignore
CMakeLists.txt [clang-doc] Reland "[clang-doc] Setup clang-doc frontend framework" 2018-03-22 23:34:46 +00:00
CODE_OWNERS.TXT
LICENSE.TXT Rename the clang-tidy safety module to be hicpp, for the High-Integrity C++ coding standard from PRQA. 2017-03-19 17:23:23 +00:00
README.txt

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/