I would like to announce the release of Statick. Statick is a plugin-based system to combine the results from a variety of static analysis and linting tools. Statick was developed by the U.S. Navy at the robotics branch of SSC Pacific and has been dedicated to the public domain.
The main benefits of Statick are:
- manage flags for each tool in simple configuration files
- provides support for multiple levels of testing
- provides consistent output of results from various tools
- configurable settings to suppress false positives
- ignore specific files or file patterns
Source code for Statick is available at https://github.com/sscpac/statick. Experimental support for installing Statick via pip is also available (but more testing is being done to learn how to release to PyPI properly).
Plugins can be written for discovering file types and for running tools against appropriate files. The plugin system means that third parties can run their own plugins for file discovery and tools. Of course, the developers welcome additions of plugins to the main repository via pull requests.
The core of Statick is ROS agnostic and can be used for pure Python-based code and for pure CMake-based code. However, the Statick tools do know how to build ROS 1 and ROS 2 packages or entire workspaces. Examples are shown in the repository.
The Users Guide describes how to integrate Statick with the Warnings plugin of Jenkins. I have started using Statick as part of Travis builds for an example ROS package repository. The lines to use Statick are in the .travis.yml file.
We welcome feedback, bug reports, feature requests, and pull requests through the main repository.