用途:该技能面向使用 LLVM/Clang 基础设施开发工具,用于源码分析、调试与 IDE 集成。
主要能力: 一是 Clang 插件开发,通过动态加载库在编译期扩展 Clang 功能,示例使用 FrontendPluginRegistry、ASTConsumer 与 RecursiveASTVisitor;构建命令为 clang++ -shared -fPIC -o MyPlugin.so MyPlugin.cpp $(llvm-config --cxxflags --ldflags),运行命令为 clang -Xclang -load -Xclang ./MyPlugin.so -Xclang -plugin -Xclang my-plugin source.cpp。 二是 LibTooling,用 CommonOptionsParser、ClangTool、MatchFinder 与 AST Matchers(如 functionDecl、callExpr、hasName、hasType、hasDescendant 等)构建独立工具。 三是 LLDB 扩展开发,包括 Python 命令(__lldb_init_module)、Scripted Process 与多种 GUI 扩展,如 visual-lldb、vegvisir、lldbg、CodeLLDB。 四是 Clangd/LSP,支持自定义代码操作与 .clangd 配置(CompileFlags、Diagnostics、Index)。 五是源码到源码转换,使用 Clang Rewriter 与 RefactoringTool 生成 Replacement。
适用场景:构建静态分析、重构、代码生成工具,例如 cppinsights、ClangBuildAnalyzer、clazy、clang-rename、clang-tidy、include-what-you-use 等。
限制与实践:建议优先使用 AST Matchers,注意保留格式、处理宏展开位置并充分测试;资料未提供收费、价格与具体平台信息。获取最新资源可访问 https://raw.githubusercontent.com/gmh5225/awesome-llvm-security/refs/heads/main/README.md。