Rust Support now in Beta

Support for Rust has now entered Beta, and we would love your feedback!

Try it with your Rust projects and let us know how it works for you so we can continue improving it. 


New Features

Localization

  • Add Japanese translation files for the plugin manager.

Editor

  • Add syntax highlighting for Markdown

Entity Filter

  • Add 'Unused Methods' to entity filter for Basic

  • Add 'Unused Objects' to entity filter for Python

Interactive Reports

  • Convert batch graph plugin from Perl to Python and add ability to generate graphs for architectures

Metrics

  • Add more architecture structural metrics (percentages of parent/root, recursive child count).

Settings

  • Add ability to remove files from Analysis Log errors - "Remove Missing files" right click menu added to the the project->config->Files dialog.

  • Improved handling of project configuration changes so that a language option change does not force a full reparse of files of other languages

Settings

  • AI settings now show the model for providers like LM Studio.


Python MCP Server

  • Update get_architecture_details tool to be more useful and actionable.
  • Update mcp_server_for_understand_llm_optimized.py to allow launching in sse mode.
  • Update mcp_server_for_understand_llm_optimized.py to use a strict json schema.

VS Code Extension

  • Add auto-complete for the strings . :: and ->

Language - Web

  •  For Javascript, added 'Assign Initial' reference from properties to the initial value entity. Added ‘Renamecall’ and 'Call Indirect Possible' references for calls made through an exported object literal property.


CodeCheck Checks

  • Allow running Dependency Checks and Compiler Warnings without a CodeCheck license.
  • Added New MISRA23_6.4.3 CPP_DD031: A name that is present in a dependent base shall not be resolved by unqualified lookup

  • Added new MISRA23_11.6.2: The value of an object must not be read before it has been set

  • Added new MISRA23_15.8.1: User-provided copy assignment operators and move assignment operators shall handle self-assignment

  • Added new MISRA23_28.6.4 and CPP_L046 The result of std::remove, std::remove_if, std::unique and empty shall be used

  • Add check MISRA23_8.18.1: An object or subobject must not be copied to an overlapping object

  • Added new MISRA23_15.0.1 and CPP_F071: Special member functions shall be provided appropriately

  • Added new MISRA23_28.3.1 CPP_L047: Predicates shall not have persistant side effects

  • Add check MISRA23_6.2.2: All declarations of a variable or function shall have the same type

  • Added new MISRA23_6.4.1 CPP_DD033: A variable declared in an inner scope shall not hide a variable declared in an outer scope


Bug Fixes

AI

  • Fix crash while generating AI descriptions

  • Fixed large files not working with AI overviews

Filter

  • Fixed bug in 'Unused Objects' filter for Ada, C#, Fortran, Java, Pascal and Web where entities were displayed that shouldn't have been

Omnibar

  • Reduce hang on project open.

Installer

  • Sign Windows binaries individually to potentially speed up application open

Python API

  • Fix crash when a plugin script raises an exception

Plugins

  • For the Shared Tasks plugins and scripts, fixed finding interrupt-disabled references

Language - C++ (Strict)

  • Fix invalid line count metrics in function definitions expanded from macros

  • Fix reference kind of arguments to implicit constructor calls in constructor initialization lists

Language - Web

  • Fixed syntax errors parsing some css constructs.

  • For Javascript, made changes to better handle entity lookup using files imported using dynamic import expressions.


CodeCheck Checks

  • Fix switch statements for "Ignored Return Values" A0-1-2, CPP_F024, CPP_F038_A, MISRA08_0-1-7, MISRA12_17.7, MISRA23_0.1.2, MISRA23_17.7, POWER_OF_TEN_07_A

  • Add support for non-standard assembly keywords in M7-4-2, MISRA08_7-4-2, CPP_A000, rename CPP_A007 to CPP_A000

  • Only check copy constructors, add violations for modifying globals in "Side Effects in Copy Constructors" MISRA08_12-8-1, CPP_C008

  • Add option to check that constructors initialize members, disabled by default, for A12-7-1, CPP_D068

  • Improve accuracy of "Member Functions That Should Be Static Or Const" MISRA08_9-3-3, M9-3-3, CPP_F014

  • Add violations if not including header for "Standard Header signal.h" MISRA12_21.5, MISRA23_21.5, CPP_L045

  • Update keyword list, add options for "Keyword Macros" MISRA12_20.4, MISRA23_20.4, CPP_P018

  • Fix tags used in other ways for "Unused tag declaration" MISRA12_2.4, MISRA23_2.4, CPP_U005

  • Fix lexer issue in "Compare classes and not class names" OBJ09-J, JAVA_OBJ09

  • Fixed: False negatives in MISRA23_14.4 with bitwise operators

  • Improve accuracy of "Goto Into or Between Blocks" MISRA12_15.3, MISRA23_15.3, CPP_CF011

  • Fixed: False positive in MISRA23_10.1.1 when parameter is passed to function with non-const pointer/reference param

  • Fixed: False negatives in MISRA12_17.3 for functions with no definition in project



Known Issues 

  • Understand can take up to a minute to launch on Windows
  • Nodelock license fails to validate running API on Rocky 8.10
  • Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
  • MacOS Sonoma and later cannot connect to the Icarus license server
  • Print Preview may not function correctly