Understand 8.0 build notes
Build 1258
8.0, Jul 27, 2026New Features
CodeCheck Checks
- Add new MISRA04_16.6: The number of arguments passed to a function shall match the number of parameters
- Add new MISRA04_13.4: The controlling expression of a for statement shall not contain any objects of floating type
- Add new MISRA04_12.5: The operands of a logical && or || shall be primary-expressions
- Add new MISRA04_17.4: Array indexing shall be the only allowed form of pointer arithmetic
- Add new MISRA04_19.16: Preprocessing directives shall be syntactically meaningful even when excluded by the preprocessor
- Add new MISRA04_16.7: A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object
- Add new MISRA04_14.2: All non-null statements shall either (a) have at least one side-effect however executed, or (b) cause control flow to change
- Add new MISRA04_12.11: Evaluation of constant unsigned integer expressions should not lead to wrap-around
- Add new MISRA04_12.9: The unary minus operator shall not be applied to an expression whose underlying type is unsigned
Editor
- Set the cursor position to the requested line and column instead of the start of the line when visiting an anonymous function definition
Language - Fortran
- Add support for Fortran 2018 SYNC TEAM statements.
- Add Fortran 2018 intrinsics to the intrinsic definition file.
Licensing
- Understand now runs without a license code when the open project's source is a public open-source repository. Click here for more information.
Bug Fixes
List Browser
- Fix crash when removing an expanded list
Command Line
- "Und arch -generate" now ignores -name and -options when left blank
Graphs
- Fix dependency graphs to allow expanding namespaces.
- Fix bug where cluster graphs generated from the API always had filled clusters.
Import
- Fix crash on malformed compile_commands.json entry
Language - Fortran
- Fix bug where some uses of [...] caused syntax errors when the language version was set to Fortran 2018.
- Fix bug where some intrinsics were missing from the 2003 and 2008 intrinsics files.
Upython
- Fix crash on
ent.annotate()
Known Issues
- Understand may fail to find primitive aliases when importing a CSPROJ
- AI generation may incorrectly state it has been disabled due to insufficient specs
- AI generation may use more than 6 GB of RAM in some cases. Systems with 8 GB of RAM may encounter out-of-memory errors. If this occurs, disable AI generation under *Tools > Options > Data*.
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1257
8.0, Jul 15, 2026New Features
AI
- Update AI speed warning when speed test results change in Tools->Options->Data
- Added AI data-handling information to the Privacy settings, including local AI processing, provider-specific data-sharing behavior, and the scope of AI and MCP settings.
CodeCheck
- Allow exporting inspections to sarif from the GUI (license must support export and the inspection must be open and cannot be background checks).
- CodeCheck documentation no longer displays coverage for standards that are under active development.
- Add MISRA C 2025 configuration to the CodeCheck configuration selection drop down box
CodeCheck Checks
- Add new MISRA04_12.7: Bitwise operators shall not be applied to operands whose underlying type is signed
- Add new MISRA04_12.1: Limited dependence should be placed on C's operator precedence rules in expressions
- Add new MISRA04_11.5: A cast shall not be performed that removes any const or volatile qualification from the type addressed by a pointer
- Add new MISRA04_11.4: A cast should not be performed between a pointer to object type and a different pointer to object type
- Add new MISRA04_8.2: Whenever an object or function is declared or defined, its type shall be explicitly stated
- Add new MISRA04_16.8: All exit paths from a function with non-void return type shall have an explicit return statement with an expression
- Add new MISRA04_12.10: The comma operator shall not be used
- Add new MISRA04_12.4: The right-hand operand of a logical && or || operator shall not contain side effects
- Add new MISRA04_9.2: Braces shall be used to indicate and match the structure in the non-zero initialisation of arrays and structures
- Add new MISRA04_12.3: The sizeof operator shall not be used on expressions that contain side effects
- Add new MISRA08_5-0-1 MISRA04_12.2: The value of an expression shall be the same under any order of evaluation that the standard permits
- Update the SEI Cert Java standard to the latest CMU risk assessment values
- Update the SEI Cert C++ standard to the latest CMU risk assessment values
- Update the SEI Cert C standard to the latest CMU risk assessment values
- Add new MISRA08_2-7-3: Sections of code should not be "commented out" using C++ comments
- Add MISRA C++ 2023 rule 9.3.1
General
- Suppress command line progress bars for non-interactive terminals.
- Added Python API environment setup instructions to the documentation home page.
- Added sample script for creating architecture in CMake
- Reduced row height in Project Configuration tables and updated the width of the first column.
- The metrics treemap options dialog now uses friendly metric names in combo boxes when available.
Language - C/C++
- Add support for Cyclomatic Strict Modified metric collection in fuzzy C analysis
- Add Accessed By field in the Information Browser for c++ macros
Language - Fortran
- Add references to dummy arguments when named association is used in a function or subroutine call.
- Add 'local component variable' for components of local derived types.
- The Information Browser now lists a file's program units and groups a routine's nested locals under a Local section.
Language - Visual Basic
- Improved Information Browser member visibility and parameter display. Friend and Protected Friend members are now shown correctly, and Protected members no longer include Protected Friend members.
- The Information Browser now displays the containing namespace for types.
- The Parameters field now renders function signatures correctly.
- Default and parameterized properties, as well as generic classes, now display their parameters.
- Property parameters are now shown in a dedicated Parameters field instead of being grouped with Accessors.
Rust
- Add "features" settings interface
Bug Fixes
CodeCheck
- Fix issue where inspection errors weren't being restored on Windows
- Fix codecheck comment ignore parsing to strip leading and trailing whitespace.
CodeCheck Checks
- Fix: false positives in MISRA12_21.2 for reserved identifiers introduced by library macro expansion
- Fix: false positive in MISRA12_14.2 when a for loop uses different struct members in the bound and body
- HIS_02 Fix possible failure when 'CountPath' metric returns NULL
- Fix: Script error in EXP-44
- Fix MISRA23_8.9.1 false positive on pointer members vs array members
General
- Fix Information Browser visit next/previous keyboard shortcuts not working when drawered.
- Fix possible crash on exit
- Fix brace style in ExampleProjects class declaration
Language - Fortran
- Fix bug where some local entities were given long names that included the full path to the parent entity.
- Add 'local' kinds for procedures, derived types, and enumerators defined within procedures. This change fixes a bug where some unknown entities could merge with these nested entities.
Language - C/C++ Strict
- Fix invalid references to type names introduced by using declarations
Known Issues
- Loading a custom GGUF model may incorrectly report the file as corrupted. This issue does not affect the GGUF models included with Understand.
- AI generation may incorrectly state it has been disabled due to insufficient specs
- AI generation may use more than 6 GB of RAM in some cases. Systems with 8 GB of RAM may encounter out-of-memory errors. If this occurs, disable AI generation under *Tools > Options > Data*.
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1256
8.0, Jun 25, 2026New Features
CodeCheck Checks
- Add new PEP8_06: Imports
- Add new MISRA12_1.2: Language extensions should not be used
- Add new MISRA12_20.8: The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1
Editor
- Remember when transient file type is overridden and restore it when the document is reopened
Compilers
- Add support for GHS V850 compiler extension 'asm(x)'.
Language - Fortran 2018
- Add 'select rank' construct.
- Add 'non_recursive' keyword.
- Add support for variants of the 'import' statement.
- Add support for specifying 'type' and 'external' with 'implicit none'.
- Add support for intrinsics file
Rust
- Add support for resolving extern entities with C entities
- Set ABI freetext on foreign interface entities
Bug Fixes
Command Line - Und
- Improve import file error reporting from und.
CodeCheck Checks
- Fix MISRA08_8-4-2 false positive on template array parameters declared in headers
- Fix false positive for MISRA08_2-10-5 caused by static identifiers in third-party / system headers
Language - Basic/C#
- Fix incorrect spelling and visibilty desciptions in the 'short name' text on several C# and Basic entity kinds.
Language - Fortran
- Fix bug where an 'unknown' variable created in a module context could interfere with symbol lookup.
Language - Java
- Fix bugs where the long name of 'public sealed interface' was 'publicsealedinterface' and the long name of 'default sealed generic interface' was 'default sealedgeneric interface'.
Rust
- Fix regression in creating use/call/etc. references to associated items
Known Issues
- AI generation may incorrectly state it has been disabled due to insufficient specs
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1255
8.0, Jun 12, 2026New Features
CodeCheck Checks
- Add new check MISRA12_1.3: There shall be no occurrence of undefined or critical unspecified behavior
- Add new check MISRA12_DIR_4.11: The validity of values passed to library functions shall be checked
- Add new check MISRA12_18.1: A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand
- Added new checks for Ada Statements [autosync]
Editor
- Unfold folded lines when visiting references
- Split "Fold/Unfold All" toggle action into two separate actions
- Move closing braces to the next line when doing auto-indent on newline
- Add tentative auto-indent for blank lines
- Add automatic matching brace insertion
Language - Fortran
- Added support for FAIL IMAGE statement.
- Added support for EVENT POST and EVENT WAIT statements.
- Added support for locality-specs on DO CONCURRENT statements.
- Added support for Fortran 2018 FORM TEAM and CHANGE TEAM statements.
Language - C/C++
- Add "use implicit" and "assign" references to struct members referenced during structured binding decomposition
- Add C++ Accessed By IB field for global objects (previously shown in Called By) with improved reference annotations in Simple mode
Bug Fixes
CodeCheck Checks
- Fix: false positives in MISRA12_14.4 for preprocessor #if directives
- Fix: false positives in MISRA12_14.2 for pure-function bounds, object-initialized counters, and assignment increments
- Fix: False positives in MISRA12_13.1 for array element assignments
- Fix: false positives in MISRA12_11.4 for address-of and subscripted pointers, and corrected category to Advisory
- Fix: false positives in MISRA12_10.8 for casts of non-composite operands
- Fix: false positive in MISRA12_10.6 from string vs integer size comparison
- Fix: false positive in MISRA08_12-1-1 (helper with virtuals on unrelated objects)
- Fix: bug causing false positive in MISRA08_12-1-1 causing incorrect file context
- Fix: false positive in MISRA12_17.3 for fortified libarary functions and compiler builtins
- Fix: false positive in MISRA08_12-1-1 (indirect-call path)
- Fix false negative in MISRA23_10.1 for parenthesised operands
Command Line (und)
- Fix spurious warning about -verbose being an unused argument.
Editor
- Fix revert to default language setting on document reload
Metrics
- Fix typo in Paths metric description.
Known Issues
- AI generation may incorrectly state it has been disabled due to insufficient specs
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1254
8.0, May 25, 2026New Features
Sarif Import
- Improve portability when loading results from another machine.
CodeCheck Checks
- Add new MISRA12_13.2: The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders
- Add Ada Checks ADA95_5.5.1, ADA95_5.5.6
- Add new MISRA12_22.6: The value of a pointer to a FILE shall not be used after the associated stream has been closed
- Add new MISRA12:19.1: An object shall not be assigned or copied to an overlapping object
- Add Ada Checks ADA95_5.4.1, ADA95_5.4.5, ADA95_5.4.6
- Add new MISRA12_14.3: Controlling expressions shall not be invariant
- Add new MISRA12_2.2: There shall be no dead code
Command Line
- Add way to enable Automatic Architectures in und - Adds 'und arch [-list] [-generate <name>] db.und' so users can manage automatic architectures (Directory Structure, Language, Calendar, Visual Studio, and plugin archs) from the CLI without opening the GUI. - 'und arch -list' shows each arch with active/available status - 'und arch -generate <name>' persists and runs the arch via TagManager - 'und help arch' documents the remove path via 'und remove -arch'
Localizations - Japan
- Updated Translations
Interactive Reports
- Add new iReport plugin for exporting metrics for certain entities
Language - Basic
- Add 'overrides explicit' references for override relations where a method implements an interface method by explicitly naming it.
Language - Rust
- Add Cargo.toml import
- Add option to add found module files to project
Bug Fixes
CodeCheck Checks
- Fix: False negative for MISRA23_10.4 when comparing a variable to a literal
- Fix: Falsepositives in MISRA08_6-5-5
- Fix: false positive in MISRA08_12-1-1
- Fix: Crash in CPP_L037 Incompatible Pointers on array arguments stinb/crashlogs#789
Shared Tasks
- Shared Tasks CSV now matches graph classification and honors REFERENCE option
- Shared Tasks CSV now matches the graph's lockset-based classification
General
- Fix: prevent duplicate UPL plugins in Manage Plugins window
- Fix bug where old file data can sometimes be left in the db after a file is removed from the project
Import
- Fix spurious project configure dialog "discard changes" prompt for some compile_commands.json imports
Language - Basic
- Fix bug where objects typed using a type alias had a 'typed' reference to the alias entity instead of a 'use name'.
Language - C#
- Fixed bug where objects typed using a type alias had a 'typed' reference to the alias entity instead of a 'use name'.
- Improved handling of type aliases used as base classes and implemented interfaces. A 'use name' relation is now created to the alias entity and a 'base implicit' or 'implements implicit' relation is created to the renamed class or interface. Also, fixed bug where some references using namespace alias prefixes were not correctly recognized.
Language - Pascal
- Fixed Pascal inheritance analysis when classes extend aliased types.
Rust
- Fix missing references when a use statement name references more than one entity
- Fix kind of non-generic traits
- Fix nested function qualified names
- Fix failure to analyze build script generated files
UI
- Potential Fix: prevent crash when renaming a tag in Designer after offline mode cycling
Known Issues
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
- CodeCheck may repeatedly request an analysis even when no changes are present. Run Analyze All once to fix.
Build 1253
8.0, May 13, 2026New Features
CodeCheck Checks
- Add Ada Checks ADA95_5.3.1, ADA95_5.3.2, ADA95_5.3.3, ADA95_5.2.2, ADA95_5.2.3, ADA95_5.2.4
- Add new MISRA12_20.12: A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators
- Add new MISRA12_20.9: All Identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluation
- Add new MISRA12_20.8: The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1
- Add new MISRA12_20.7: Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses
- Add new MISRA12_DIR_4.7: If a function returns error information, then that error information shall be tested
All Languages
- Made changes to standardize Rename/Renameby as the relation kind and Alias as the entity kind for renaming declarations. Ada, Basic, C# and Fortran have the entity kind changed to Alias.
Language - Ada
- Add 'Begin' and 'Begin Body' relations.
- Replace dual References fields with unified rename-group field
Language - Basic
- Add implicit calls to constructors in object allocation expressions. Added 'use alloc' references to type Alias entities when used in object allocations.
- Add 'Begin' and 'Begin Body' references.
Language - C#
- Made calls to constructors using a rename be 'call implicit' relations.
- Changed call to constructor to an 'implicit call' instead of a regular 'call'.
- Added 'Begin Body' references.
Language - Fortran
- Change call to an Alias for a subroutine or function to a 'name' reference and added a 'call implicit' to the renamed entity.
Language - Java
- Added 'Begin Body' references.
Language - Web (JavaScript, PHP, TypeScript)
- Changed call to an Alias for a function to a 'use name' reference and added a 'call implicit' to the renamed entity.
- Change entity kind to Alias for JavaScript, TypeScript, and PHP renaming declarations.
- For TypeScript and JavaScript, changed relation kinds for calls through Alias entities from 'Renamecall/Renamecally' to 'Name/Nameby' for the Alias reference, and 'Call Indirect/Callby Indirect' to 'Call Implicit/Callby Implicit' for the reference to the renamed entity.
Language - Python
- Changed call to an Alias for a function to a 'use name' reference and added a 'call implicit' to the renamed entity.
- Change entity kind to Alias for renaming declarations.
Language - VHDL
- Add entity filters for Components, Constants, Contexts, Signals, Types
- Update Information Browser for VHDL 2008
UI
- Replaced the split-workspace checkbox with a new Follow Active Window workspace setting, enabled by default.
- In split workspaces, the active area now follows the window the user is working in, based on subwindow activation and mouse clicks.
- Added a thin accent-colored underline to the selected tab in the active area, making it clearer which split will receive newly opened windows.
- Closing the last editor in a split now automatically collapses the empty area and returns focus to the remaining area.
- The active-area checkbox is now hidden except when the workspace is split and the target area has no tabs, reducing unnecessary UI clutter.
Bug Fixes
Compilers
- For IAR EWRX compiler, add support for __section_begin, __section_end, __section_size and fix large-alignment parse error on Windows
CodeCheck Checks
- Many typos are now fixed.
Graphs
- Graph view api command fix directory separators in project name on Windows to be escaped for Python.
Language - Basic
- Fix bug where generic short class names contained '<>' characters.
- Fix bug where entity kinds 'basic class mustinherit', 'basic class notinheritable', and 'basic class generic' were not generated by the parser. These entities were identified as plain 'basic class' entities.
Language - C#
- Fixed bug where entities that should he identified as 'protected abstract generic class' were identified as 'protected abstract class'. Fixed bug where entities that should be identified as 'unresolved public extern member method' were identified as 'public member method'.
Language - Fortran
- Change 'rename/renameby' relation in type bound procedures to 'bindsto/isboundto'. Changed 'declare/declarein' relation in interfaces to 'bindsto/isboundto'. Fixed bug where some type bound procedures were not identified as 'virtual'.
Language - JavaScript/TypeScript
- Fixed bug where names were treated as case insensitive and resulted in names differing only by case being merged into a single database entity.
Language - PHP
- Fixed a bug where constant declarations sometimes created two entities.
Language - VHDL
- Fix failure to resolve record types
- Fix failure to accept full subprogram bodies in package declarations
Known Issues
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
- CodeCheck may repeatedly request an analysis even when no changes are present. Run Analyze All once to fix.