diff options
| author | Aaron Ballman <aaron@aaronballman.com> | 2019-10-02 17:18:57 +0000 |
|---|---|---|
| committer | Aaron Ballman <aaron@aaronballman.com> | 2019-10-02 17:18:57 +0000 |
| commit | b879fd05bd7628cfb27d8e127dc8751389dcd1d7 (patch) | |
| tree | 7ee81f7e1c5ba7aaa03d83f3972a2f0b6974e792 /clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h | |
| parent | eb6700b57e969e75014394a02e8130542f3f6457 (diff) | |
| download | bcm5719-llvm-b879fd05bd7628cfb27d8e127dc8751389dcd1d7.tar.gz bcm5719-llvm-b879fd05bd7628cfb27d8e127dc8751389dcd1d7.zip | |
Add the misc-init-local-variables check.
This checks finds all primitive type local variables (integers, doubles, pointers) that are declared without an initial value. Includes fixit functionality to initialize said variables with a default value. This is zero for most types and NaN for floating point types. The use of NaNs is copied from the D programming language.
Patch by Jussi Pakkanen.
llvm-svn: 373489
Diffstat (limited to 'clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h')
| -rw-r--r-- | clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h new file mode 100644 index 00000000000..0cacf9e533c --- /dev/null +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.h @@ -0,0 +1,42 @@ +//===--- InitVariablesCheck.h - clang-tidy ----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_INITVARIABLESCHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_INITVARIABLESCHECK_H + +#include "../ClangTidyCheck.h" +#include "../utils/IncludeInserter.h" +#include "../utils/OptionsUtils.h" + +namespace clang { +namespace tidy { +namespace cppcoreguidelines { + +/// Find uninitialized local variables. +/// +/// For the user-facing documentation see: +/// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines-init-variables.html +class InitVariablesCheck : public ClangTidyCheck { +public: + InitVariablesCheck(StringRef Name, ClangTidyContext *Context); + void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, + Preprocessor *ModuleExpanderPP) override; + void registerMatchers(ast_matchers::MatchFinder *Finder) override; + void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + +private: + std::unique_ptr<clang::tidy::utils::IncludeInserter> IncludeInserter; + const utils::IncludeSorter::IncludeStyle IncludeStyle; + const std::string MathHeader; +}; + +} // namespace cppcoreguidelines +} // namespace tidy +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_INITVARIABLESCHECK_H |

