Warning
Code Base Investigator 2.0.0 is a major release that includes several breaking changes.
New Features
- Errors and warnings are written to a cbi.log file, to reduce verbosity and improve the user experience.
- Warning messages are aggregated into "meta-warnings" with suggested corrective actions.
- Progress in parsing and preprocessing is reported via progress bars.
- A new
cbi-tree
utility enables users to identify which files in a code base contribute to divergence. - A new
cbi-cov
utility enables users to export coverage information in JSON format, for use with the P3 Analysis Library. - Compiler support is expanded, enabling users to define argument handling that approximates compiler behavior more accurately.
For more information on using these features, see the online documentation.
Bug Fixes
- Added support for
#include
files with non-standard extensions. - Added support for very large unsigned constants.
- Relaxed preprocessor error handling to permit C source files ending in a backslash-newline.
- Enabled the repository to be cloned on Windows.
What's Changed
- Remove --root-dir option by @Pennycook in #90
- Remove --batchmode option by @Pennycook in #89
pyproject.toml
migration by @laserkelvin in #94- CI pre-commit alignment by @laserkelvin in #93
- Simplify the --report option by @Pennycook in #95
- Remove etc/ directory by @Pennycook in #91
- Remove --dump option by @Pennycook in #92
- Remove YAML configuration files by @Pennycook in #97
- Refactor codebase dictionary into CodeBase class by @Pennycook in #98
- Format help strings by @Pennycook in #104
- Add CompilationDatabase class by @Pennycook in #103
- Force run pre-commit by @Pennycook in #110
- Add tree walk function by @Pennycook in #105
- Remove unused walkers by @Pennycook in #106
- Switch to per-module loggers by @Pennycook in #109
- Add coverage configuration to pyproject.toml by @Pennycook in #107
- Move code from bin/codebasin to main.py by @Pennycook in #111
- Improve warning message for missing includes by @Pennycook in #113
- Write logs to cbi.log by default by @Pennycook in #112
- Remove functionality to merge duplicates by @Pennycook in #116
- Add a custom log formatter class by @Pennycook in #118
- Introduce meta-warnings by @Pennycook in #115
- Add progress bars to finder.find() by @Pennycook in #117
- Optimize path handling by @Pennycook in #122
- Ensure main() catches all exceptions by @Pennycook in #123
- Replace PlatformMapper with a function by @Pennycook in #120
- Add visit() function to source tree by @Pennycook in #121
- Remove PlatformMapper from test_duplicates by @Pennycook in #124
- Replace TreeAssociator with a function by @Pennycook in #125
- Remove walkers by @Pennycook in #126
- Remove legacy_warnings by @Pennycook in #127
- Remove unused functions from util.py by @Pennycook in #128
- Replace is_whitespace function with str.isspace by @Pennycook in #130
- Fix definition and implementation of divergence by @Pennycook in #137
- Fix associate() handling of #include from symlink by @Pennycook in #131
- Fix handling of symlink files by @Pennycook in #133
- Add ability to compute code utilization by @Pennycook in #136
- Improve tables by @Pennycook in #134
- Improve schema validation error messages by @Pennycook in #140
- Refactor ensure_ext by @Pennycook in #141
- Add duplicates report by @Pennycook in #138
- Add files report by @Pennycook in #139
- Improve coverage tool for P3 Analysis Library integration by @Pennycook in #41
- Fix use of ensure_ext in coverage by @Pennycook in #148
- Align formatting of all reports by @Pennycook in #150
- Rename cbicov to cbi-cov by @Pennycook in #153
- Add coverage workflow to GitHub Actions by @Pennycook in #154
- Attempt to fix non-deterministic tests by @Pennycook in #160
- Fix coverage action by @Pennycook in #162
- Force coverage.yml to check out all commits by @Pennycook in #163
- Refactor Token class using dataclass by @Pennycook in #143
- Implement common argument parsing with argparse by @Pennycook in #146
- Refactor Node using dataclass by @Pennycook in #144
- Add custom argparse actions by @Pennycook in #155
- Add instructions for virtual environments by @Pennycook in #157
- Add test of summary report by @Pennycook in #158
- Add compiler customization schema by @Pennycook in #156
- Rework the metrics used by the FileTree by @Pennycook in #161
- Move MetaWarning classes into new module by @Pennycook in #142
- Improve Compiler class design by @Pennycook in #164
- Fix bug in FileTree's handling of unused files by @Pennycook in #166
- Add compiler definitions by @Pennycook in #168
- Use f-string to format
log.warning
message by @Pennycook in #174 - Fix bug in handling of unsigned constants by @Pennycook in #173
- Recommend using cmake -G Ninja in the tutorial by @Pennycook in #175
- Fix several issues with custom argparse actions by @Pennycook in #170
- Expose tree report as standalone cbi-tree utility by @Pennycook in #167
- Enable
ArgumentParser
to handle custom compilers by @Pennycook in #176 - Switch to finalized coverage schema by @Pennycook in #178
- Add
--debug
option by @Pennycook in #177 - Fix condition in FileTree insert by @Pennycook in #181
- Generate version string dynamically by @Pennycook in #180
- Ignore empty .cbi/config files by @Pennycook in #183
- Defer .cbi/config loading until required by @Pennycook in #184
- Add definition of sycl-nvptx64-nvidia-cuda pass by @Pennycook in #186
- Add documentation for new features by @Pennycook in #185
- Accept C files ending in a backslash-newline by @Pennycook in #187
- Add progress tracker for identifying source files by @Pennycook in #188
- Rename files that rely on case-sensitive paths by @Pennycook in #190
- Prepare for 2.0.0 release by @Pennycook in #193
- Fix release date for 2.0.0 by @Pennycook in #194
Full Changelog: 1.2.0...2.0.0