Releases: sscpac/statick
v0.11.1
API breaking changes introduced. Pin statick<0.11 if you need the older plugin approach based on yapsy.
Added
- Use of
pyproject.toml
instead ofsetup.py
andrequirements.txt
. - Added support for Python 3.12 and 3.13.
- Switched from yapsy to setuptools for plugin mechanism. (#508)
Fixed
- Run
isort
on unit test files. - Handle updated warning type from
cppcheck
introduced in version 2.8.
v0.10.0
Added
- Statick-tex and json-merger included in Statick Docker image. (#506)
Removed
- Removed support for Python 3.8.
Fixed
- Updates for new tool versions. (#493)
- Cpplint unit test updated to match new default warnings from the cpplint 2.0 release.
- Cpplint 2.0 released on 2024-10-06.
- https://github.com/cpplint/cpplint/blob/2.0.0/CHANGELOG.rst#20-2024-10-06
- Cpplint unit test updated to match new default warnings from the cpplint 2.0 release.
- Fix command used to run ruff tool.
- Ruff v0.5.0 requires use of
ruff check
instead ofruff
.
- Ruff v0.5.0 requires use of
- Update list of files in clean script to fix shellscript warnings about globs for files with hyphens.
- Ignore new pylint finding for too many positional arguments.
Finding showed up with pylint 3.3.0. - Change default value of deep get method to match valid type for reduce function.
v0.9.5
Added
- Allow short flag names. (#489, @qdang922)
--output-directory
supports-o
--user-paths
supports-u
- Add usage examples for reporting plugins to README. (#491, @m0g3ns)
- Install lark as test dependency.
- Process all files at once for groovylint tool plugin. (#493)
- Similar addition as in v0.9.3.
Fixed
- Updates for new tool versions. (#493)
- Latest versions: black (24.1.1), npm-groovy-lint (14.2.0).
- Fixed unit tests for groovylint tool plugin.
- Handle parsing issues when CodeNarcServer errors are present.
- Update source file formatting with latest version of black.
v0.9.4
Added
- Unit tests were added to the
exceptions
module with troublesome file to check forUnicodeDecodeError
. (#478) - Unit tests were added to the
exceptions
module to check that packages to ignore are parsed correctly from
exceptions configuration file. (#478) - Unit tests were added to the
config
module to check that multi-line yaml syntax configurations are successfully
parsed. (#481) - Use multi-line yaml for tool flags in default configuration file. (#481)
Fixed
- Some files cause a
UnicodeDecodeError
exception to be thrown in theexceptions
module.
Fixed that bug and now a warning is printed if a file like that is encountered. (#478) - Fix for Dockerfile smell DL4000. (#482)
Changed
-
Pin version of
docformatter
dependency to be compatible withblack
.
Update docstrings to match what new version of docformatter expects. (#483) -
Ran
black
anddocformatter
against all the Python test files. (#479)cd tests find . -name test_\*.py -exec black {} \; find . -name test_\*.py -exec docformatter -i --wrap-summaries 88 --wrap-descriptions 88 {} \;
Removed
- Remove
codecov
package from tox configuration. (#485)
v0.9.3
Tools that accept a list of files have been sped up considerably.
This is the timing information of running self_check
level against the main branch and the development branch of
the Statick repository with an AMD 3700x, Ubuntu 20.04, and Python 3.8.
The development branch shows a significant improvement in runtime performance.
The command used was
./statick . --output-directory /tmp/x --level self_check --log info --timings
package | name | plugin_type | duration (v0.9.2) | duration (unreleased) |
---|---|---|---|---|
statick | find files | Discovery | 9.2810 | 9.3033 |
statick | black | Tool | 4.5896 | 0.1365 |
statick | docformatter | Tool | 3.7007 | 0.8105 |
statick | isort | Tool | 4.2516 | 0.1088 |
statick | mypy | Tool | 6.7002 | 1.8145 |
statick | pydocstyle | Tool | 5.2146 | 0.8606 |
statick | pyflakes | Tool | 4.2164 | 0.1893 |
statick | pylint | Tool | 2.2831 | 2.2545 |
statick | shellcheck | Tool | 0.0762 | 0.0352 |
statick | uncrustify | Tool | 0.0001 | 0.0001 |
statick | xmllint | Tool | 0.0039 | 0.0037 |
statick | yamllint | Tool | 1.0534 | 0.1654 |
Overall | 41.4780 | 15.8050 |
Looking at times for Github Actions to run the self_check
level of Statick shows improvements.
Ubuntu Version | Python Version | v0.9.1 | v0.9.2 | Unreleased |
---|---|---|---|---|
20.04 | 3.7 | 173 | 97 | 60 |
20.04 | 3.8 | 187 | 90 | 50 |
20.04 | 3.9 | 197 | 127 | 51 |
20.04 | 3.10 | 196 | 84 | 55 |
20.04 | 3.11 | 159 | 101 | 46 |
22.04 | 3.7 | 223 | 101 | 52 |
22.04 | 3.8 | 208 | 95 | 62 |
22.04 | 3.9 | 186 | 94 | 64 |
22.04 | 3.10 | 168 | 89 | 40 |
22.04 | 3.11 | 167 | 79 | 38 |
mean | 186.4 | 95.7 | 51.8 | |
min | 159 | 79 | 38 | |
max | 223 | 127 | 64 |
Added
- Process all source files at once with tools that support passing in a list of files, instead of invoking each tool
per file. (#470) - New tool plugin for the ruff tool.
Changed
- Change json reporting plugin output file suffix from .json to .statick.json. (#472, #475)
- In GitHub workflow use node action instead of custom node install from source. (#476)
Fixed
- Using example file in the black test space in unit tests for the black tool plugin. (#470)
- Add missing dependencies to install_requires.
The docformatter and mypy tools are run by default (if Python files are
discovered) but they were not included in the packageinstall_requires
list of dependencies.
Now installing statick in a fresh virtual environment will include and run all
the available tools. (#465) - Add check for an empty issue file before trying to read the line for NOLINT.
Crashes happen if trying to read a line that does not exist. (#467) - Move flake8 configuration max-line-length option to correct location.
When running pytest a warning was given about this. The max-line-length
was being set in the pytest section of our configuration. Moving it to
the flake8 section fixes the warning and makes more sense logically. (#466, #469) - In the code climate and json reporting plugins write output files to current directory
if no output directory is specified. (#471) - In tex level configuration only use the tex discovery plugin. (#477)
v0.9.2
Added
- Run pylint against all Python files at once. Support parallel processing flag of pylint. (#460)
Fixed
- Updating action versions to get rid of deprecation warnings. (#458)
- Add blank line before URL in docstring for ROS discovery plugin. Fixes warning from new version of docformatter. (#459)
Removed
- Remove debug print statement when the threshold level is used. (#457)
v0.9.1
Added
- Continuous integration tests with Ubuntu 22.04. (#454)
- Continuous integration tests with Python 3.11. (#455)
- Docker image installs Python packages into a Python virtual environment. (#448)
Changed
- Docker image installs Python tool packages from PyPI instead of apt.
Uses newer versions of Python tools. (#448) - Continuous integration uses latest versions of Actions. (#454)
Fixed
- Groovylint tool plugin specifies flags for host and port to run on loopback device.
Fixes unit tests in continuous integration. (#454)
Removed
- Continuous integration tests with Ubuntu 18.04. (#454)
v0.9.0
Added
- The new
--level
flag can be set on the command line and will override all other levels, even non-default levels
specified in a--profile
flag when running Statick.
The expectation is that a user setting the--level
flag will explicitly want that level for the entire Statick run
(single package or multiple packages in a workspace).
If separate levels are desired per package then the user should not use the--level
flag. (#429, #436) - Ubuntu 22.04 is now included in the main test environment matrix when running GitHub Actions. (#444)
- The
--timings
flag will print timing information to the console after a Statick run.
Timing information is available for file discovery, for each individual plugin, and for overall duration. (#443)
Changed
- Default behavior for Statick will now run all available discovery plugins, and run all tool plugins where
their desired source files are available, then output results only on the terminal.
The old default behavior was to run the "sei_cert" profile, this is still doable via either of the
following arguments:--profile sei_cert.yaml
or--level sei_cert
. (#432, #435) - When running unit tests with tox, Statick uses pytest-flake8.
A recent upstream bug causes issues when using the latest version of pytest-flake8.
Statick is now pinning the version of pytest-flake8 to the previous major version.
Details of the upstream issue are at tholo/pytest-flake8#87. (#440) - Updated configuration files that come with Statick to use the recommended list format when specifying plugins on
theinherits_from
setting. (#427)
Fixed
- CMake discovery plugin and cmakelint tool plugin handle files with .cmake extension. (#434)
- This follows the CMake manual at https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#organization.
CMake input files are written in the "CMake Language" in source files named CMakeLists.txt or ending in a
.cmake file name extension.
- This follows the CMake manual at https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#organization.
- Support latest PyPI version of mypy.
Required removing a mypy ignore comment. (#437) - The ROS discovery plugin was setting the file type of the package to a boolean value rather than a string describing
the actual file type.
Mixing types between packages caused bugs in tool plugins.
The ROS discovery plugin now acts consistently with other discovery plugins. (#439)
Removed
- Usage of
inherits_from
flag in configuration files as a string is no longer supported.
The levels specified ininherits_from
must now be in list format.
The string usage has been deprecated since v0.7.1. (#427)
v0.8.1
v0.8.0
Overview
Bugs were fixed in the cccc
and isort
tool plugins.
The nature of the bugs in each tool resulted in under-reporting of issues discovered by using the tools.
By fixing the tool plugins it is possible that users may find that more issues are now discovered using
the same tool configurations as before.
If a user does not want to fix the additional warnings yet they can pin the version of Statick to statick<=0.7
.
Added
- Code Climate reporting plugin.
This plugin can be used to provide output in GitLab merge requests via the
Code Quality
feature. (#416) - List of existing reporting plugins to README. (#417)
- Survey of metrics for software quality assurance to docs. (#413)
Changed
- Update Docker image tag to remove the
v
prefix. (#409)