blob: 6c7e08b33af90b69bec6a64f09c58bf8f1bb0455 [file] [log] [blame]
Haojian Wue0104062017-10-27 07:41:36 +00001//===--- ForbiddenSubclassingCheck.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_OBJC_FORBIDDEN_SUBCLASSING_CHECK_H
11#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_OBJC_FORBIDDEN_SUBCLASSING_CHECK_H
12
13#include "../ClangTidy.h"
14#include "llvm/ADT/StringRef.h"
15#include <string>
16#include <vector>
17
18namespace clang {
19namespace tidy {
20namespace objc {
21
22/// Finds Objective-C classes which have a superclass which is
23/// documented to not support subclassing.
24///
25/// For the user-facing documentation see:
26/// http://clang.llvm.org/extra/clang-tidy/checks/objc-forbidden-subclassing.html
27class ForbiddenSubclassingCheck : public ClangTidyCheck {
28public:
29 ForbiddenSubclassingCheck(StringRef Name, ClangTidyContext *Context);
30 void registerMatchers(ast_matchers::MatchFinder *Finder) override;
31 void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
32 void storeOptions(ClangTidyOptions::OptionMap &Options) override;
33
34private:
35 const std::vector<std::string> ForbiddenSuperClassNames;
36};
37
38} // namespace objc
39} // namespace tidy
40} // namespace clang
41
42#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_OBJC_FORBIDDEN_SUBCLASSING_CHECK_H