blob: 602856fa28f126e621a757a956eff9ceaea0e534 [file] [log] [blame]
Alexander Kornienko11d4d642015-09-10 10:07:11 +00001//===- InconsistentDeclarationParameterNameCheck.h - clang-tidy-*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_INCONSISTENT_DECLARATION_PARAMETER_NAME_H
11#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_INCONSISTENT_DECLARATION_PARAMETER_NAME_H
12
13#include "../ClangTidy.h"
14
15#include "llvm/ADT/DenseSet.h"
16
17namespace clang {
18namespace tidy {
19namespace readability {
20
21/// \brief Checks for declarations of functions which differ in parameter names.
22///
23/// For detailed documentation see:
24/// http://clang.llvm.org/extra/clang-tidy/checks/readability-inconsistent-declaration-parameter-name.html
25///
26class InconsistentDeclarationParameterNameCheck : public ClangTidyCheck {
27public:
28 InconsistentDeclarationParameterNameCheck(StringRef Name,
29 ClangTidyContext *Context)
Miklos Vajna063e6cc2018-01-05 23:22:10 +000030 : ClangTidyCheck(Name, Context),
Sam McCall57b66c82018-07-13 11:41:56 +000031 IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", 1) != 0),
32 Strict(Options.getLocalOrGlobal("Strict", 0) != 0) {}
Alexander Kornienko11d4d642015-09-10 10:07:11 +000033
Miklos Vajna063e6cc2018-01-05 23:22:10 +000034 void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
Alexander Kornienko11d4d642015-09-10 10:07:11 +000035 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
36 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
37
38private:
39 void markRedeclarationsAsVisited(const FunctionDecl *FunctionDeclaration);
40
41 llvm::DenseSet<const FunctionDecl *> VisitedDeclarations;
Miklos Vajna063e6cc2018-01-05 23:22:10 +000042 const bool IgnoreMacros;
Sam McCall57b66c82018-07-13 11:41:56 +000043 const bool Strict;
Alexander Kornienko11d4d642015-09-10 10:07:11 +000044};
45
46} // namespace readability
47} // namespace tidy
48} // namespace clang
49
50#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_INCONSISTENT_DECLARATION_PARAMETER_NAME_H