blob: 0ca50bb03e5c09afe500a7e46a44e681b3854dc6 [file] [log] [blame]
Gabor Horvathe647bd52017-02-14 10:03:27 +00001//===--- MisleadingIndentationCheck.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_MISLEADING_INDENTATION_H
11#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_MISLEADING_INDENTATION_H
12
13#include "../ClangTidy.h"
14
15namespace clang {
16namespace tidy {
17namespace readability {
18
19/// Checks the code for dangling else, and possible misleading indentations due
20/// to missing braces. Note that this check only works as expected when the tabs
21/// or spaces are used consistently and not mixed.
22///
23/// For the user-facing documentation see:
24/// http://clang.llvm.org/extra/clang-tidy/checks/readability-misleading-indentation.html
25class MisleadingIndentationCheck : public ClangTidyCheck {
26public:
27 MisleadingIndentationCheck(StringRef Name, ClangTidyContext *Context)
28 : ClangTidyCheck(Name, Context) {}
29 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
30 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
31
32private:
Alexander Kornienkobc8d1462017-03-17 09:58:30 +000033 void danglingElseCheck(const SourceManager &SM, ASTContext *Context,
34 const IfStmt *If);
Gabor Horvathe647bd52017-02-14 10:03:27 +000035 void missingBracesCheck(const SourceManager &SM, const CompoundStmt *CStmt);
36};
37
38} // namespace readability
39} // namespace tidy
40} // namespace clang
41
42#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_MISLEADING_INDENTATION_H