12634bd59SRoman Lebedev //===--- AvoidCArraysCheck.h - clang-tidy -----------------------*- C++ -*-===// 22634bd59SRoman Lebedev // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 62634bd59SRoman Lebedev // 72634bd59SRoman Lebedev //===----------------------------------------------------------------------===// 82634bd59SRoman Lebedev 92634bd59SRoman Lebedev #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDCARRAYSCHECK_H 102634bd59SRoman Lebedev #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDCARRAYSCHECK_H 112634bd59SRoman Lebedev 12478fc5c8SAlexander Kornienko #include "../ClangTidyCheck.h" 132634bd59SRoman Lebedev 144718da50SCarlos Galvez namespace clang::tidy::modernize { 152634bd59SRoman Lebedev 162634bd59SRoman Lebedev /// Find C-style array types and recommend to use std::array<> / std::vector<>. 172634bd59SRoman Lebedev /// 182634bd59SRoman Lebedev /// For the user-facing documentation see: 196e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/modernize/avoid-c-arrays.html 202634bd59SRoman Lebedev class AvoidCArraysCheck : public ClangTidyCheck { 212634bd59SRoman Lebedev public: 22*b777bb78SPiotr Zegar AvoidCArraysCheck(StringRef Name, ClangTidyContext *Context); 23*b777bb78SPiotr Zegar void registerMatchers(ast_matchers::MatchFinder *Finder) override; 24*b777bb78SPiotr Zegar void check(const ast_matchers::MatchFinder::MatchResult &Result) override; 25*b777bb78SPiotr Zegar void storeOptions(ClangTidyOptions::OptionMap &Opts) override; isLanguageVersionSupported(const LangOptions & LangOpts)26e40a742aSNathan James bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 27e40a742aSNathan James return LangOpts.CPlusPlus11; 28e40a742aSNathan James } getCheckTraversalKind()29*b777bb78SPiotr Zegar std::optional<TraversalKind> getCheckTraversalKind() const override { 30*b777bb78SPiotr Zegar return TK_IgnoreUnlessSpelledInSource; 31*b777bb78SPiotr Zegar } 32*b777bb78SPiotr Zegar 33*b777bb78SPiotr Zegar private: 34*b777bb78SPiotr Zegar const bool AllowStringArrays; 352634bd59SRoman Lebedev }; 362634bd59SRoman Lebedev 374718da50SCarlos Galvez } // namespace clang::tidy::modernize 382634bd59SRoman Lebedev 392634bd59SRoman Lebedev #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDCARRAYSCHECK_H 40