xref: /llvm-project/clang-tools-extra/clang-tidy/modernize/AvoidCArraysCheck.h (revision b777bb78b302055eba876a0258ea4b2625ffe71a)
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