blob: fd5d089531b348b390041b9fd9b9707bf0eebcc9 [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:
33 void danglingElseCheck(const SourceManager &SM, const IfStmt *If);
34 void missingBracesCheck(const SourceManager &SM, const CompoundStmt *CStmt);
35};
36
37} // namespace readability
38} // namespace tidy
39} // namespace clang
40
41#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_MISLEADING_INDENTATION_H