Creating your own Clang-based tool
The static analyzer is an impressive example of what you can do with the Clang infrastructure. It is also possible to extend Clang with plugins, so you are able to add your own functionality to Clang. The technique is very similar to adding a pass plugin to LLVM.
Let's explore the functionality with a simple plugin. The LLVM coding standard requires function names to begin with a lowercase letter. However, the coding standard has evolved over time, and there are many instances in which a function begins with an uppercase letter. A plugin that warns about a violation of the naming rule can help to fix the issue, so let's give it a try.
Because you want to run a user-defined action over the abstract syntax tree (AST), you need to define a subclass of the PluginASTAction
class. If you write your own tool using the Clang libraries, then you define subclasses of the ASTFrontendAction
class for your actions. The PluginASTAction
class is...