Understand 7.0 build notes
Build 1220
7.0, Mar 10, 2025Maintenance build; no customer-facing changes.
Build 1219
7.0, Feb 27, 2025New Features
- Edit Configuration Dialog update format of "Not Supported" tag.
- Inspections widget allow deleting multiple selected inspections from context menu.
- Und codecheck ignored count include violations that were ignored by an inspection baseline.
- Und support comparing inspections.
- Und report -codecheck now supports a second argument. To generate a report from a comparison of two inspections, use "und report -codecheck current.sarif previous.sarif ..."
- Update CodeCheck Documentation Report to include Checks By Language table.
- Restore Annotations->Annotate menu on Windows/Linux
- Don't show CodeCheck reports in the Violation Browser menu when there is no CodeCheck license
- For HTML/PDF exports make sure strings used as filenames/anchors are alphanumeric/dash/underscore
- File open dialogs may unexpectedly disappear on macOS 15.2
- Favorites lost when project and source copied to new location
Bug Fixes
- Add -previous switch to und codecheck to give the inspection to compare against. When given, New_ and Fixed_ reports are also generated from the New_ and Fixed_ violations.
- Fix missing plugins in Chinese build
- Fix failure to record constructor call references for calls to std::make_shared that pass nullptr as one of the arguments
- Fixed possible crash in Fortran parsing
- Fix 1750A Assembly analyzer
Build 1218
7.0, Feb 7, 2025New Features
- Add Ada Assign/Assignby relations.
- Add annotation "Kinds" and add kind filtering to the Annotation Browser.
- Add "Run Selected Configuration" button to Configurations dialog.
- Add "Save & Run" button to edit configuration dialog.
- Add localization for "Check Qualification Report" name.
- Include time in Codecheck inspection names in Codecheck sidebar
- Show Codecheck progress in dock window item view text
- Slow Codecheck update rate from 1 second to 5 seconds.
- Published Standards can be run in the background by right-clicking the name in the "Select Checks" dialog. Background published standards are part of the shared project file settings.
- Published Standards are no longer generated automatically from "Standard" tags. Instead, they're read like plugins from plugins/CodeCheck/Configs and the descriptions use the configuration description instead of the previous description.htm files.
- UML Sequence Diagram: add option to show parameters.
- Visual Studio import support system includes given in AdditionalOptions.
- Add check MISRA23_24.5.1: The character handling functions from <cctype> and <cwctype> shall not be used
- Add checks MISRA12_16.1 and MISRA23_16.1: A switch statement shall be a well-formed switch statement
- Add check MISRA23_7.0.3: The numerical value of a character shall not be used
- Add check MISRA23_8.3.2: The built-in unary + operator should not be used
- Add "Run" button in the plugin manager for any plugin that can be run on the database (architectures, configurations, global ireports, global graphs)
- Make CodeCheck configurations behave as plugins:
- they appear in the Plugin Manager's CodeCheck section
- they are searched for in the plugins repository CodeCheck/Configs folder and AppData
- Enabled configuration plugins appear in the Published Standards list of CodeCheck
- Configurations can have descriptions
- File open dialogs may unexpectedly disappear on macOS 15.2
- Favorites lost when project and source copied to new location
Bug Fixes
- Fix bug where multiple copies of an InstanceParamFormal/InstanceParamFormalfor relations were sometimes created.
- Fix bug with results table row update adding empty rows.
- Fix for new automatic architecture dialog initial size.
- Fix potential crash in external Python when running scripts that manipulate sys.path directly instead of setting PYTHONPATH in the environment
- Fix issue where the line count metric was incorrect for some files containing syntax errors.
- Fix syntax errors on valid code with partial methods, delegate pointers, and multi-line strings followed by 'u8'.
- Fix kind qualifier for assignment from function return based on the return type of the function
- Fix reference kind of call to dereference of pointer to function pointer
- Fix reference kind of calls to function pointers of deduced (auto) type
Build 1217
7.0, Jan 29, 2025New Features
- Configurations dialog use same check details view as Edit Configuration Dialog.
- Add architecture plugins page to Python documentation
- Show the "Interactive Reports" menu under the "Reports" top level menu in addition to it's location under the "Project" menu.
- Add release/capture window action to Interactive Reports toolbar.
- Brighten inactive color in dark mode
- Add "..." to parameter freetext of variadic functions
- Create synthetic ellipsis parameters for variadic functions
- Add check MISRA23_30.0.2: Reads and writes on the same file stream shall be separated by a positioning operation
- Added new Copyright and License iReport
- File open dialogs may unexpectedly disappear on macOS 15.2
Bug Fixes
- Fix incorrect error message when filelist does not start with @
- Fix potential UnicodeDecodeError on calls to ent.comments() in files with the wrong encoding set
- Add "Ignore Violation(s)" and "Apply Fix-It Hint(s)" to violation browser context menu.
- Fixed Visual Studio msbuild import error for some nested projects
- Fix control flow source range regression for some single token nodes
- For C#, fixed bug where a path to a dll file with Japanese characters in the name could not be opened on a Windows machine with a non Japanese locale setting.
- CountLine for C# files may be incorrect when syntax errors are present
Build 1216
7.0, Jan 16, 2025New Features
- Remove command updated to more closely follow exclude/delete behavior of GUI
- Filtering Entity Filter allows users to sync\click already selected entities.
- Chart layouts use graphviz style label alignment (\l, \r, \n for left, right, centered).
- Hide/Show inactive lines in the Edit menu now update properly.
- Multiple selection and deletion for C++ macros are now enabled.
- Add CountIncludes and CountIncludeBy metrics for C/C++ files
- Add descriptions for MISRA C 2023, MISRA C++ 2023, Effective C++ and the power of 10
- Add check MISRA23_3.1: The character sequences / and // shall not be used within a comment
- File open dialogs may unexpectedly disappear on macOS 15.2
Bug Fixes
- Fix db.draw() command from upython always returning unknown graph
- Fix crash on save when instant search results are visible
- Fix potential crash on exit during background analysis
- Fixed issue where a dll file with non-ascii characters in the file name could not be opened.
- Fix regression in creating some object data member instances
- Fix check description styling with multiple code blocks.
- Fix ireport options dialog scroll area not using available space
Build 1215
7.0, Jan 9, 2025New Features
- Remove 'GNU GCC' compiler option for strict parsing. User should use 'GCC' instead
- Add local license solution Icarus to install kit instead of requiring a separate download
- Allow gradients in chart legends
- Improve bar chart layout spacing for node labels.
- Allow for the deletion of multiple selected items.
- Add a menu item for metric documentation to the metrics menu.
- Move plugin enablement settings to be shared with und, upython, etc.
- Remove empty categories on search
- Add understand.Metric.name function
- Add optional db and filter arguments to understand.Metric.list and include metric plugins in list. Listing metric plugins by kind string requires a database.
- Add optional format argument to metric() functions to allow getting floating values as floats instead of strings, or integer values as strings instead of ints.
- Add extra space at the bottom of the report
- Add Average Metrics Interactive Report
- Add chart to Class Metrics Interactive Report
- Allow IReport draw to override graph titles
- Translate the hints shown on the first analysis
- Add check MISRA23_3.1: The character sequences / and // shall not be used within a comment
- Add check CPP_P061: Shared pointer capture
- Add description for MISRA C 2023 and MISRA C++ 2023
- Add check MISRA23_21.6.1: Dynamic memory should not be used
- Add check MISRA23_19.1.2: All #else, #elif and #endif preprocessor directives shall reside in the same file as the #if, #ifdef or #ifndef directive to which they are related
- File open dialogs may unexpectedly disappear on macOS 15.2
Bug Fixes
- Fix potential crash restoring a project interactive report
- Fix invalid control flow graphs when the option to simplify macro expansions is enabled
- Fix worker process crash when option to create unique entities for object data members is enabled
Build 1214
7.0, Jan 2, 2025New Features
- Add Long Name automatic architecture
- Git File History diff view allow pinning commits from hamburger menu.
- Users can now add multiple files from the project browser to "Favorite" groups.
- UML Sequence Diagram make showing functional macros optional.
- Improve scaling of flat bubble chart to text
- Add a Class Dependencies graph for architectures like the File Dependency graph
- Shared Tasks: Restore option "Member Functions": "Longer name"
- Preserve expansion upon entry addition or removal - added expansion save and restore.
- Add documentation to Python API for Freetext fields Noexcept, TemplateArguments, and UnderlyingType
- Change CFG single statement block end location to just past the semicolon
- CodeChecks: Improve message for MISRA08_0-1-7, MISRA12_17.7, MISRA23_17.7, MISRA23_0.1.2, POWER_OF_TEN_07_A, CPP_F024, CPP_F038_A, A0-1-2
- Add check MISRA23_10.1.1: The target type of a pointer or lvalue reference parameter should be const-qualified appropriately
- Add Class Metrics report
- Add utility iReports: Control Flow Table, File References Table, Tokenizer Table
- File open dialogs may unexpectedly disappear on macOS 15.2
Bug Fixes
- Fix missing "define" and "instanceof" references for member functions when the option to create member function instances is enabled
- Fix bug where the wrong line number could be given for an error that occured in a fixed format include file.
- Fix error opening include files that have parentheses in the path.
- Fix bug where an implicit record constructor was created even though an explicit canonical constructor was defined.
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1213
7.0, Dec 18, 2024New Features
- Add C# Preprocessor Symbols setting to und.
- C++ namespace comments now available by default instead of requiring a kind spec
- Change public ib() api call to default to 1 level of expansion per field, to avoid unexpected long waits in worst case scenarios
- Restore global information browser shortcuts broken in last build with sync changes
- Add plugins to CLI build kit
- Ireports add optional target parameter to init method for Python plugins.
- Ensure values for disabled metric plugins can still be accessed by id from the API.
- Extend the Most Complex Functions chart to work for files and architectures in addition to databases, allow modifying the complexity metric and the number of entities shown.
- Function Metrics Histogram - display metric values in a histogram for the functions in a file, architecture, or database.
- Line Metrics
- HIS Metrics
- Complexity Metrics Report
- Metrics Table
- Halstead Metrics
- Comment Lines (Includes Comments Before Functions)
- Comment to Code Ratio (Includes Comments Before Functions)
- Maximum Call Depth (HIS LEVEL)
- Calls
- Unique Calls (HIS CALLS)
- Called By
- Unique Called By (HIS CALLING)
- Goto Statements (HIS GOTO)
- Parameters (HIS PARAM)
- MinRecursiveDepth (related to HIS AP_CG_CYCLE)
- Exits
- Early Exits (HIS RETURN)
- Language Scope (HIS VOCF)
- Stability (HIS S)
- Halstead Distinct Operators (n1)
- Halstead Distinct Operands (n2)
- Halstead Total Operators (N1)
- Halstead Total Operands (N2)
- Halstead Vocabulary (n)
- Halstead Length (N)
- Halstead Difficulty (D)
- Halstead Effort (E)
- MISRA HIS Subset Violations (HIS NOMV)
- VHDL 28: unlabeled processes
- MISRA23_8.14.1: The right-hand operand of a logical && or || operator should not contain persistent side effects
- CPP_T061: Use const whenever possible
- CPP_DD022: Magic Numbers
- CPP_D055: Non-virtual Destructors in Base Classes
- CPP_VF002: Virtual Call in Constructor/Destructor
- CPP_DD023: Use the same for in corresponding uses of new and delete
- CPP_P058: Store newed objects in smart pointers in standalone statements
- CPP_P060: Prefer pass-by-reference-to-const to pass by value
- CPP_DD024: Postpone variable definitions as long as possible
- CPP_E087: Minimize casting
- CPP_DD025: Avoid hiding inherited names
- CPP_F070: Consider alternatives to virtual functions
- CPP_DD026: Never redefine an inherited non-virtual function
- Unable to add multiple files to "Favorites" group
Bug Fixes
- Und report command improve error messages for invalid codecheck inspections.
- Potential fix for an inconsistent crash accessing comparison db from an ireport.
- Fix rescan not updating file list
- Fix scaling when legend is turned on
- Fix potential crash on corrupted instant search index
- Remove errors/warnings of files under deleted or renamed folders
- Fix whole words match in search inside search results.
- Fix stale instant search results for deleted files
- Fix display of python version in the configuration panel when the user has specified an installed executable
- Fixed invalid syntax error on some select type guards in fixed format fortran.
- Fixed some invalid parser errors on array constructor syntax. Fixed lookup problem in use-only statements where referenced entity is defined in a generic interface.
- Fix for script in duplicate lines of code interactive report
- Shared Tasks CSV: fix long name and -help argument
- Shared Tasks: fix "Objects: Shared only" option and improve CSV CLI
- Shared Tasks: Fix object parents, fix member function name
- MISRA23_25.5.3, MISRA23_21.20: The pointer returned by the C++ Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or strerror must not be used following a subsequent call to the same function
- Line numbers may be incorrect for Fortran analysis errors and warnings
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1212
7.0, Nov 28, 2024Maintenance build; no customer-facing changes.
Build 1211
7.0, Nov 26, 2024New Features
- Remove the Auto Load results option, always auto load.
- Make graph legends user resizable.
- Update built-in Variable Tracker graph with C# reference kinds
- Restore interactive reports on project open.
- Updated file rescan to update file filter based on the language selected. If override filters are not in the currently selected languages then omit them but keep any filters that are not language specific (i.e. text files).
- Create empty file entities for files not analyzed because of the option to not analyze headers in isolation
- Pass worker process arguments through pipe to work around command line length limitations on Windows
Bug Fixes
- Fix support for projects on Windows mapped or network drives
- Fixed warning message on use of 'Enum' for a generic type parameter constraint.
- Fixed missing type message on references to some generic formal parameters inside anonymous methods.
Build 1210
7.0, Nov 19, 2024New Features
- Add ability to annotate architectures
- Scanning dialogs now do not cancel when clicking other windows while scanning.
- Add compare variants for entity dependency graphs.
- Reports don't show cancel button if it's not enabled.
- Update API Command directions for "Check Qualification Report"
Bug Fixes
- Fix crash on annotation delete when viewing the info browser for the associated entity
- Fixed problems with overload resolution involving nullable type. Stopped creating 'unknown variable' for discard variable '_' references.
- Fixed bug where no call to a constructor was recorded for implicitly typed 'new' expressions.
- Fixed bug where c-style comments (/*...*/) in preprocessor directives caused incorrect condition evaluation.
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1209
7.0, Nov 11, 2024New Features
- Add an optional "id" parameter to test_language for python CodeChecks.
- Add a new Check Compliance report and command line tool for DO-178C Validation
- Edit configuration dialog updates.
- Und analyze also runs background CodeChecks.
- Updated "und license" to return a message when no valid Und license exists.
- Treat empty databases like wrong version databases and analyze on open.
- Add interactive report generation to und.
- Add the plugins that historically shipped as part of Understand into the plugins repo.
- Add a new Plugin Manager for choosing plugins
- Add ExternalTypeTables and ExternalVariableTables entity filters for jovial
- Updated the New Project Wizard to be able to be shrunk down manually to 800 X 600.
- Purge automatically added include files from a project when the file is deleted on disk
- Reference columns now start at 1 instead of 0
- Tabs now count as one column.
- Changed behavior of Project->Analyze-Changed-Files to not warn on missing or too-large files
- Add edge filters to File Dependencies graph.
- Add Java reference kinds to Variable Tracker graph.
- Data Flow In and Data Flow Out graphs relationship graph dialog now accepts functions and objects.
- Graphs and charts now support the graphviz "tooltip" attribute in the GUI view
- Add option to hide AI Overview
- Add Values field for Jovial items with statusname values
- Display Components field for tables in Jovial
- Add AI Annotations Header
- Add new List Browser feature for working through long lists of references
- Add Python API metric overload that takes a single metric name and returns it's value
- Don't require a label for Python API graph.node() function.
- Add codecheck inspections to the API and allow them as targets for reports and graphs.
- Enhance IReports to support graphs, charts, tables, and multiple pages.
- Add IReport ability to export results in html and PDF
- IReports can now be run from the command line with the
und reportscommand - Allow comma and locale numerical formatting.
- Improved references by highlighting them
- Show background CodeCheck inspection status
- On the global progress bar move progress popup to the right of toolbar icon.
- Change max nesting calculation for fuzzy C to include try/catch blocks
- Added support for C# 12 and expanded use of "using" alias types.
- Added support for a 'using' declaration statement without a block.
- Changed graph text ranges to start at column 1 instead of 0.
- Added line and column numbers to end nodes in Control Flow graph.
- Change max nesting calculation to include try/catch blocks
- Improve jovial entity association in API lexer
- Add comment collection for Jovial
Bug Fixes
- Fixed bug where the wrong Ada standard library directory could be used when analyzing from the command line with und
- Update project config visual basic tooltip with correct year.
- Fix crash on project open when the project overview is on the right/bottom of a split workspace
- Fix inconsistencies with analysis, CodeCheck, and inactive code
- Fixed bug where top level executable code was not able to access entities defined in partial 'Program' class declarations.
- Fixed failure to report some violations found through cross-translation-unit analysis
- Fix C++ API lexer when associating call references to implicitly defined constructors
- Fixed bug where references in Entry blocks 'fallen' into from the preceding context were recorded only for the Entry and not for the parent context.
- Changed tabs in fixed format to count as one column.
- Fixed parsing error on table body with an unnamed entry and an empty 'BEGIN' 'END' block.
- Incorrect control flow graph when simplify macro expansion is enabled
- In Fortran c-style comments (/*...*/) in preprocessor directives can cause incorrect condition evaluation
Build 1208
7.0, Nov 11, 2024Maintenance build; no customer-facing changes.
Build 1207
7.0, Nov 8, 2024New Features
- First build of the Understand 7.0 release line. For the 7.0 highlights see Version releases; per-build changes are listed in the following 7.0 builds.