SAFacilitator Iconic Representation: Marvin the depressed robot
(all images are marked as: free to modify, share, and use commercially)
The SAFacilitator (Static Analysis Facilitator) is an application specially developed by Spazio IT for the SAFe Toolset.
The application is based on the Compilation Database Format Specification developed by the Clang/LLVM foundation. Its major functionality is the simplification of the production of the static analyzers configuration files.
SAFacilitator Major Functionality
The SAFacilitator, for a given codebase, allows the creation and editing of a single project file containing all the information required to properly drive and control the execution of the selected static analyzers on that codebase. This information may initially derive from an externally provided compilation database file (“compile_commands.json”).
Once the information contained in the project file is correct, it is used to automatically generate all the configuration files and execution scripts required by the static analyzers (and SonarQube).
The supported (SAFacilitator v. 2.2) static analyzers are:
- Cppcheck – v. 2.13 – http://cppcheck.sourceforge.net/ – a C/C++ static analyzer.
- Clang – v. 20.0.0git – https://clang.llvm.org – the “new” compiler toolset from LLVM Foundation, with its Clang-SA and Clang-Tidy static analyzers.
Optionally SAFacilitator can also drive:
- PC-Lint Plus – v. 2.0 (or PC-Lint – v. 9.0.0L) – https://pclintplus.com/ – but its license needs to be acquired from Vector.
Apart from driving the static analyzers, SAFacilitator can also drive, that is configure and run, SonarQube. In fact the SAFe Toolset VM (in October 2024) also contains the SonarQube Server version 10.7.
SAFacilitator has a dual nature:
SAFacilitator as GUI Application
Not only the SAFacilitator is a GUI Application that it is used to produce the configurations files and scripts…
Console as GUI Application
…but it is also a console utility that can be called by scripts to automatically run the static analyzers (and SonarQube).
For Java, the SAFacilitator only provides some information (two cheat sheets) on how to establish the connection/integration between the build tool (Gradle/Maven) and SonarQube.
This is an actual example where the SAFacilitator is used to analyze the Crazyflie version 2.1 codebase.
This is the complete SAFacilitator User Manual / Online Help.