| 12345678910111213141516171819202122232425262728293031323334 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include "UseCmstrlenCheck.h"
- #include <clang/ASTMatchers/ASTMatchFinder.h>
- namespace clang {
- namespace tidy {
- namespace cmake {
- using namespace ast_matchers;
- UseCmstrlenCheck::UseCmstrlenCheck(StringRef Name, ClangTidyContext* Context)
- : ClangTidyCheck(Name, Context)
- {
- }
- void UseCmstrlenCheck::registerMatchers(MatchFinder* Finder)
- {
- Finder->addMatcher(callExpr(callee(functionDecl(hasName("::strlen"))),
- callee(expr().bind("callee")),
- hasArgument(0, stringLiteral())),
- this);
- }
- void UseCmstrlenCheck::check(const MatchFinder::MatchResult& Result)
- {
- const Expr* Node = Result.Nodes.getNodeAs<Expr>("callee");
- this->diag(Node->getBeginLoc(), "use cmStrLen() for string literals")
- << FixItHint::CreateReplacement(Node->getSourceRange(), "cmStrLen");
- }
- }
- }
- }
|