Developer knowledge network · moderated exchange

UnreliableCode-Community

Community für Entwicklerforschung, Reverse Engineering und Codierung

Knowledge indexLive
4Categories
919Threads
2.8KBeiträge
Analysis

Clang AST Matchers: Building Custom Static Analysis Linter Rules for Codebases [StackOverflow Architecture Guide]

llvm_compiler_dev
LLVM & Clang Hacker
MEMBER
Vertreter: 139
Beitrittsdatum: Jul 2018
Beiträge: 21
Danke: 15
Vor 1 Monaten · Jul 5, 2026 12:58 AM
#1

How to write automated AST inspection rules in Clang tooling:

To detect calls to malloc without null checks across millions of lines of code:

CPP
StatementMatcher MallocMatcher = callExpr(
    callee(functionDecl(hasName("malloc"))),
    unless(hasAncestor(ifStmt()))
).bind("unverifiedMalloc");

class MallocCallback : public MatchFinder::MatchCallback {
    void run(const MatchFinder::MatchResult& result) override {
        const auto* call = result.Nodes.getNodeAs<CallExpr>("unverifiedMalloc");
        Diagnostics.Report(call->getBeginLoc(), DiagnosticID);
    }
};
sanitizer_sam
UB Hunter
MEMBER
Vertreter: 119
Beitrittsdatum: Apr 2021
Beiträge: 10
Danke: 53
Vor 1 Monaten · Jul 5, 2026 3:03 AM
#2

Clang AST matchers are the exact mechanism behind clang-tidy checks and automated refactoring tools.

roslyn_source_gen
Roslyn Compiler Dev
MEMBER
Vertreter: 120
Beitrittsdatum: Feb 2020
Beiträge: 12
Danke: 75
Vor 1 Monaten · Jul 5, 2026 9:01 PM
#3

Infinitely more reliable than regex grep because it operates on the semantic Abstract Syntax Tree.