S
SIGSEGV DREC
@segfault_drec747 подп.
1.1Kпросмотров
24 марта 2025 г.
Score: 1.3K
tidy fisting Следующая ступень в поиске фистинга — проверка в clang-tidy. Очень неприятно было собирать clang-tools-extra (на ноутбуке неприлично тяжело). Безотлагательно приступаем! Проверку добавляем скриптом: ./clang-tools-extra/clang-tidy/add_new_check.py misc fisting Здесь в качестве категории проверок была выбрана категория misc, которая соответствует проверкам без категории. Будет создано несколько файлов и изменена пара существующих. Нас интересует только clang-tools-extra/clang-tidy/misc/FistingCheck.cpp, где заменим вставленную проверку-placeholder. void FistingCheck::registerMatchers(MatchFinder Finder) { Finder->addMatcher(namedDecl(hasName("fisting")).bind("fistingId"), this); } Мы видели это в другом посте. И напишем свою проверку и вывод диагностики. void FistingCheck::check(const MatchFinder::MatchResult &Result) { const auto decl = Result.Nodes.getNodeAs<NamedDecl>("fistingId"); if (decl == nullptr) return; diag(decl->getLocation(), "%0 detected") << decl << FixItHint::CreateInsertion(decl->getLocation(), "fisting"); diag(decl->getLocation(), "use 'fisting' to earn 300&#036;", DiagnosticIDs::Note); } Осталось дописать документацию, тесты... Тут уже сами справитесь. #compiler #llvm
1.1K
просмотров
1258
символов
Нет
эмодзи
Нет
медиа

Другие посты @segfault_drec

Все посты канала →
tidy fisting Следующая ступень в поиске фистинга — проверка — @segfault_drec | PostSniper