/
niceSOFT
/
cmake
Обзор
Документация
Войти
/
niceSOFT
/
cmake
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Utilities/ClangTidyModule/OstringstreamUseCmstrcatCheck.cxx
49 строк
1 KB
Brad King
clang-tidy module: Update to build against LLVM/Clang 22
05 май 2026, 02:42
05 май 2026, 02:42
2c3a9fc
Код
Авторство
О чём код?
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #include "OstringstreamUseCmstrcatCheck.h" #include <clang/AST/Type.h> #include <clang/ASTMatchers/ASTMatchFinder.h> namespace clang { namespace tidy { namespace cmake { using namespace ast_matchers; OstringstreamUseCmstrcatCheck::OstringstreamUseCmstrcatCheck( StringRef Name, ClangTidyContext* Context) : ClangTidyCheck(Name, Context) { } void OstringstreamUseCmstrcatCheck::registerMatchers(MatchFinder* Finder) { Finder->addMatcher(typeLoc(loc(qualType(hasDeclaration( namedDecl(hasName("::std::ostringstream")))))) .bind("ostringstream"), this); } void OstringstreamUseCmstrcatCheck::check( MatchFinder::MatchResult const& Result) { TypeLoc const* ParentTypeNode = Result.Nodes.getNodeAs<TypeLoc>("parentType"); TypeLoc const* RootNode = Result.Nodes.getNodeAs<TypeLoc>("ostringstream"); if (ParentTypeNode != nullptr) { if (ParentTypeNode->getBeginLoc().isValid()) { this->diag(ParentTypeNode->getBeginLoc(), "use strings and cmStrCat() instead of std::ostringstream"); } } else if (RootNode != nullptr) { if (RootNode->getBeginLoc().isValid()) { this->diag(RootNode->getBeginLoc(), "use strings and cmStrCat() instead of std::ostringstream"); } } } } } }