Understand 6.2 build notes
← All versions
Build 1128
6.2, Dec 12, 2022
New Features
- Web parser is not respecting excluded files when adding found srced files
- Cannot load nested classes with entity names containing “$” in Java
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Annotations: Fix missing context menu entries when the annotation viewer is open
- Fix failure to respect maximum file size setting
- For Web/Javascript, fixed problem where the 'Add found imported files to source list' option caused found files to be added to the project even when they were in 'excluded' directories.
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1127
6.2, Dec 5, 2022
New Features
- Web parser is not respecting excluded files when adding found srced files
- Cannot load nested classes with entity names containing “$” in Java
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fixed invalid syntax error in some relational patterns.
- Fix invalid syntax errors on some nested static method definitions.
- Fix potential crash loading .net dll files.
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1126
6.2, Nov 29, 2022
New Features
- Added these new metrics for these languages: Ada, Basic, C#, Java, Jovial, Pascal, Python, and Web languages (Javascript, Typescript, Php).
- CyclomaticStrictModified
- AvgCyclomaticStrictModified
- SumCyclomaticStrictModified
- MaxCyclomaticStrictModified
- Add ability to validate options to ireports
- Added CyclomaticStrict and CyclomaticStrictModified metrics to Fortran.
- Project overview doesn't respect excluded files
- Cannot load nested classes with entity names containing “$” in Java
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fix potential crash on editor reload
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1125
6.2, Nov 10, 2022
New Features
- Improve editor find interactivity in large files. If there are more than 1024 results, results will not be shown in the radar scroll bar.
- Add Options.label method to Python API to match Perl API
- Published Standards
- AUTOSAR
- A3-8-1: Added new no op: backing array for is a temporary object whose lifetime would be shorter than the lifetime of the constructed object
- M15-3-7: Added new no op: Any ellipsis (catch-all) handler shall occur last
- M16-1-2: Added new no op: #else, #elif and #endif preprocessor directives
- M5-2-2: Added new no op: A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of a dynamic_cast
- Cannot load nested classes with entity names containing “$” in Java #2523
- Graph legend: dashed lines aren't working #2522
- Can't use ent->draw() with the Perl API #2494
- Understand freezes when opening a project with 100+ editor windows #1731
- Collapsed code no longer accessible when modifying first line of a collapsed block #1189
Bug Fixes
- Fix unexpected empty list when deleting filter text quickly with backspace
- Fixed bug where references to enum types did not create 'couple' references.
- For Web/Javascript/Typescript, fixed problem where a reference to a method using an import name for a default export class as a prefix created a 'possible' call reference to an ambiguous method instead of a direct call to the method in the default export class.
- Understand crashes after opening 25-30+ graphical views #2500
- Incorrect control flow graph when simplify macro expansion is enabled #1998
Build 1124
6.2, Oct 27, 2022
New Features
- CodeCheck change ignored status to have precedence over excluded status
- Cannot load nested classes with entity names containing “$” in Java
- Graph legend: dashed lines aren't working
- Can't use ent->draw() with the Perl API
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Update CodeCheck to correctly check for modified files and prompt the user to analyze before inspecting
- Windows dark mode fix disabled checkbox text
- Fixed problem where an Understand C# project created from a Visual Studio solutions file that contained multiple Visual Studio projects shared 'global using' statements between all files in the Understand project instead of just the files from the same Visual Studio project
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1123
6.2, Oct 20, 2022
New Features
- Update Understand help files and documentation
- C and C++
- CPP_PR000: Add check '#define and #undef shall not be used on a reserved identifier or reserved macro name'
- Published Standards
- AUTOSAR
- CodeCheck does not prompt to analyze files before an inspection
- Cannot load nested classes with entity names containing “$” in Java
- Graph legend: dashed lines aren't working
- Can't use ent->draw() with the Perl API
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Update Und CodeCheck report by table and report by file to show or not show excluded violations correctly when using -showexcluded.
- Fix crash after document rename
- Fixed syntax errors and missing references on some object initializations containing indexer initializations.
- Fixed bug where references to types in nullable types were missing.
- Fixed bug where some references to types passed as parameters in instantiations were missing.
- Updated the windows undcwork crash logs to display additional data and group the process crash logs together to be displayed at the end of the analysis.
- Fix failure to disable analysis warnings
- CPP_V004: Fixed: False positives where check was flagging constexpr
- Fixed std terminate call detection in A15-5-3
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1122
6.2, Oct 10, 2022
New Features
- Updated Architecture Designer graphs to ask if children of a deleted node should be deleted as well. Deleting a node in Architecture Designer Dialog does not automatically delete the sub nodes.
- Added line/column numbers to all cgraph nodes.
- Add an option that allows Codecheck configurations to run in the background
- All Checks
- Added new: Public Inheritance not Used in a "is-a" Relationship
- Added new: Exceptions thrown across execution boundaries
- Added new: Dynamic Memory Usage on Realtime Phase
- Added new: New Method Throwing an Exception
- Added new: An Array or Container Shall not be Accessed Beyond its Range (Part A)
- Added new: A declaration of non-throwing function shall contain noexcept specification
- Graph legend: dashed lines aren't working
- CodeCheck result csv file showing results for more than just the specified files
- Can't use ent->draw() with the Perl API
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Ireport: Fix failure to restore the IReport window after analysis
- Fixed syntax error on use of the keyword 'default' as the start of a statement. Fixed syntax errors on some conditional expressions involving lambda function definitions.
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1121
6.2, Sep 29, 2022
New Features
- IAR RL78 compiler: Add support for @ extension used with ## macro concatenation
- Made change to attempt to use the default Python executable to determine the Python version when an invalid path is specified in the Python Version option.
- Added support for C# 11 raw strings and interpolated raw strings.
- Published Standards
- AUTOSAR
- Added new A12-8-1: Move and copy constructors shall move and respectively copy base classes and data members of a class, without any side effects
- Added clang check A15-4-2, if a function is declared noexcept, then it shall not exit with an exception
- Added clang warning for A7-6-1: invalid-noreturn
- Added clang warning for check M15-3-3
- Added clang warning for check M15-3-4
- Added clang warning for check M15-3-6
- Graph legend: dashed lines aren't working
- CodeCheck result csv file showing results for more than just the specified files
- Can't use ent->draw() with the Perl API
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fixed syntax error on use of some context sensitive reserved words as variable names in declaration patterns.
- Fixed syntax error on use of interpolated strings in conditional expressions.
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1120
6.2, Sep 22, 2022
New Features
- Add a right click option, "Open with Understand", to Windows OS
- Made changes to support C# 11 list patterns
- Libraries
- Published Standards
- MISRA C 2012 & MISRA_C 2004
- CodeCheck result csv file showing results for more than just the specified files
- Can't use ent->draw() with the Perl API
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fix worker process crash introduced in build 1118 when the option to create instance members is enabled
- Fixed a couple of syntax issues with f-strings
- Fix crash in FileStatements.pm
- Fix for MISRA12_5.7 script error to prevent iteration through a non iterable type
- Fix for MISRA04_5.4 script error to prevent iteration through a non iterable type
- Codecheck -showchecktimes isn't showing correct times
- Understand crashes after opening 25-30+ graphical views
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1119
6.2, Sep 15, 2022
New Features
- Unexpected menu behavior when removing file from a project
- Disable architecture rename from the metrics browser
- Instant search: Report failure to create a wildcard query with too many clauses
- Published Standards
- AUTOSAR
- M4-5-3: Added Perl version of M4-5-3
Bug Fixes
- Fixed syntax error on some uses of 'await' as a variable name.
- Fixed syntax error on attribute use on local function declarations.
- M6-5-4: Added safeguards against NoneType lexemes calling their methods leading to script errors on Mac
Build 1118
6.2, Sep 8, 2022
New Features
- Update compiler definition for IAR RL78 and enable for strict parser
- Add define references from member expression base objects to member instances
Bug Fixes
- Fix crash when architectures are changed by an external process
- Fixed invalid syntax errors on some lambda expressions.
- Fixed crash on some unexpected sql syntax.
Build 1117
6.2, Sep 1, 2022
New Features
- Add new graph "Shared Objects in Functions"
- Published Standards
- AUTOSAR
- Can't use ent->draw() with the Perl API
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fix crash on architecture browser search with empty architectures
- Fix failure to wrap architecture browser reverse search when the last architecture is empty
- Fixed several syntax error issues with tuples and patterns.
- A18-5-7: Autosar 18-5-7 Fix script error that can occur when no architecture name is given on the option text box.
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1116
6.2, Aug 25, 2022
New Features
- Can't use ent->draw() with the Perl API
- Und CodeCheck will not recognize config unless full file path is specified on Windows
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fixed java comment collection for enum types
- Fix hang on arch.depends()
- Fix hang on ent.depends()
- Fixed inconsistent handling of ternary, null coalescing, and null conditional operators in complexity calculations. The '??', '?.', and '?[' operators now add to complexity to agree with handling of '??=' and the ternary '?:' operator.
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1115
6.2, Aug 19, 2022
New Features
- Add the ability to run CodeCheck on an architecture from und.
- *New* Null conditional operator “?.” does not count towards cyclomatic complexity in C#
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Add "Assume Nearest Matches" and "Ignore Import Errors in Try Blocks" python options to und.
- Fix bug in object references graph where clustering blocked external edges.
- Fixed parser crash when two or more dll files created a circular dependency between classes.
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1114
6.2, Aug 15, 2022
New Features
- C and C++
- Functions
- CPP_F066: Add check "Tail-Call Optimization"
- Published Standards
- AUTOSAR
- A15-2-1: Change all checks ID of A15-2-1 to avoid duplicate ID conflict
- Clang Check
- Added new clang check ERR50-CPP: Do not abruptly terminate the program
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- C-api: Fix non-deterministic entity list order
- Fixed bug where method calls on objects held in generic collections sometimes failed when the generic collection class was loaded from a dll file.
- Add missing help file for Issue Browser
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1113
6.2, Aug 6, 2022
New Features
- Und export dependencies add -mode switch to change between compile and link modes
- Update MPLAB XC16 compiler definition and make available for C/C++ Strict parser
- Improve interactivity when fully expanding a dependency graph
- Add additional option define methods to Python plugins to match Perl
- Make architectures hashable so they can be stored in sets
- Improve comment collection after Python variables
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fix the right click options for Undo/Redo to not always be disabled in the Architecture Designer Dialog
- Fix various issues when adjusting Treemap screen
- Fix load saved dependency graph dialog
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1112
6.2, Jul 28, 2022
New Features
- Change architecture duplicate to duplicate at the same level as the duplicated architecture
- Add import/export to Codecheck and Annotations
- Make item view checkboxes more visible in Windows dark mode
- Add a collapse option to the Control Flow Graph that respects hidden nodes
- Added 'Address Representation Ref' kind for uses of variables in address representation clauses
- Added 'Use Attribute' kind for variable uses where an attribute is referenced rather than the variable value
- Changed short kind names on 'Representation Ref' to include 'Representation'
- Changed short kind name on 'Import Ref' to include 'Import'
- Add option to set CUDA GPU architecture
- Made change to not count non-op string literals used as comments as executable statements.
- *New* Unable to open dependency graphs saved in database
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1111
6.2, Jul 21, 2022
New Features
- Save CodeCheck configuration names in CodeCheck config files
- Update codecheck_template.upy.REMOVE, graph_template.upy.REMOVE, and ireport_template.upy.REMOVE
- Updated IAR TI MSP430 compiler configuration and made it available in C/C++ Strict mode
- Update Dependency Browser bidirectional edge display
- Architecture Dependency Graphs add option to control whether entities are shown
- Cmd+Ctrl+F should exit full screen on MacOS
- Change the internal location of parse data and other local data to use the configurable Application Settings Location
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Fix for missing CodeCheck results when exporting detailed results .txt file
- Fix previewer sync changing the selection to the file when the selected text is not found
- Fix crash in refactor when "Analyze First" with an entity that becomes invalid during analysis
- Fixed bug where some type references created unknown entities when type name lookup involved multiple levels of class extensions
- Fixed syntax errors in fixed format files on use of hexadecimal literals beginning with # and ending with H
- Fixed issue in API lexer where some uses 'f'/'F'/'d'/'D' as literal suffixes were not treated as part of the literal token
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1110
6.2, Jul 14, 2022
New Features
- Annotation Viewer Cards now fit the width of the Annotation Viewer
- Dragging a file into an un-preferred (unchecked) split workspace now opens the file in that un-preferred workspace rather than the default preferred space.
- Add a *Violation Browser* for easy viewing of Violations and a quick back and forth between the Violation Browser and the Editor where the Violation occurs. Accessible by going to 'Checks->Browse Violations'
- Java
- JAVA_41: Add check "Methods that convert the object should be prepended the word to"
- JAVA_44: Add check "Spaces shall be placed around all binary operators"
- STND_J_42: Add check "Same indentation for closing brace of block"
- STND_J_43: Add check "At least one blank line between method declarations"
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code no longer accessible when modifying first line of a collapsed block
Bug Fixes
- Java lexer incorrectly parses float literals with F suffix
- Incorrect control flow graph when simplify macro expansion is enabled
Build 1109
6.2, Jul 13, 2022
New Features
- Remember IB expansion state for Directories & Architectures
- Made the API Contents for C# types and methods include all lines of modifiers and attributes even when on separate lines than the type or method name.
- C and C++
- Warnings
- CPP_W011: Added warning for pointer-to-int-cast
- Java
- Naming Conventions
- JAVA_11: Add check: A class shall be declared an interface if no method of the class is implemented.
- JAVA_12: Add check: If a constructor catches an exception that causes the failure of the object, that exception shall be thrown.
- JAVA_13: Add check "Order class definitions by scope"
- JAVA_14: Add check "Capitalize classes and interfaces"
- JAVA_15: Add check "Method names should be camelCase"
- JAVA_16: Add check "Prepend method names with get if they return data member values"
- JAVA_17: Add check "Prepend method names with set if they assign data member values"
- JAVA_18: Add check: Prepending the name of a true/false method with a boolean expression makes the intent of that method clear.
- JAVA_19: Add check: The definition statement and member class definition statement should begin at the standard indentation
- JAVA_20: Add check: The last call of the finalizer shall be to super.finalize() unless the object is the immediate superclass.
- JAVA_21: Add check: Finalizers shall catch and manage their own exceptions as well as any propagated exceptions that may be thrown from functions called by the finalizer.
- JAVA_22: Add check: A variable's use shall not be redefined within a method.
- JAVA_23: Add check: Only one variable shall be specified for every declaration keyword.
- JAVA_24 Add check: Each new block shall be indented one increment further than its parent block.
- JAVA_25: Add check: Each statement shall be indented to the level of its block.
- JAVA_26: Add check: There shall be at most one statement per line.
- JAVA_27: Add check: Wrapped line shall be indented one increment further than its originating line.
- JAVA_28: Add check: A new instance of java.lang.Exception shall not be thrown.
- JAVA_29: Add check: Braces shall be used for all control structures, even if there is only one statement.
- JAVA_30: Add check: White space before a comma or semicolon shall not be used.
- JAVA_31: Add check: The loop control variable shall not be modified in the body of a for loop
- JAVA_32: Add check: Last choice of a switch or case statement shall end with a break
- JAVA_33: Add check: Statements under case labels shall be indented one level
- JAVA_34: Add check: In a switch statement, when a default case is presented, it shall be the last case
- JAVA_35: Add check: For a do-while loop, the ending brace shall be on the same line as the while
- JAVA_36: Add check: Ternary operators shall not be nested inside other ternary operators
- JAVA_N007: Add check: Constants shall be in all uppercase with underscores separating each component word.
Bug Fixes
- Fix unresponsive user interface during some long-running checks
- Fix jagged curves in SVG export
- Fix dragging a file into the unpreferred split workspace opens in the preferred section
Known Issues
- *New* Contents method in C# missing type when declaration is split across multiple lines
- Strict Analysis doesn't start when using RHEL/Rocky 8.6
- Java lexer incorrectly parses float literals with F suffix
- Incorrect control flow graph when simplify macro expansion is enabled
- Understand freezes when opening a project with 100+ editor windows
- Collapsed code is no longer accessible when modifying first line of a collapsed block
Build 1108
6.2, Jun 30, 2022
New Features
- Added dark mode to Metric Definitions.
- Added option to disable audible alerts.
- Add new entity and reference kinds for CUDA kernels.
- Add references to CUDA kernel call config arguments.
- C and C++
- Constructors
- CPP_C055: Added new: Constructors that can be used with one argument should be declared explicit.
- Declarations and Definitions
- CPP_DD008: Added new: Nesting template class definitions should be avoided.
- CPP_DD009: Added new: Assignment operators should check for self-assignment.
- CPP_DD010: Added new: The use of friend classes should be avoided unless there is a legitimate basis in design.
- CPP_DD011: Added new: If the subscript operator (operator[]) is overloaded, both the const and non-const versions should be defined.
- CPP_DD012: Added new: Layering techniques, where applicable, should be used instead of private inheritance.
- Exception Handling
- CPP_EH003: Added new: Destructors should not throw exceptions
- CPP_EH004: Added new: Exceptions should be caught only by reference
- Functions
- CPP_F063: Added new: Member function arguments should not share the same name as class state variables.
- CPP_F064: Added new: Member functions should always be declared const unless they modify state variables.
- CPP_F065: Added new: Any parameter not modified by a method should be passed to the method as a const.
- Headers
- CPP_H019: Added new: Forward referencing should be used, when appropriate, over direct inclusion when documenting dependencies within a header file.
- Memory Allocation
- CPP_M015: When overloading the new[] operator, a corresponding delete[] operator should be provided.
- CPP_M016: Added new: Overloaded new operator should not hide the global new operator.
- CPP_M017: Added new: All local allocations made in a method, other than the destructor, should be deallocated prior to exiting the method.
- Pointers
- CPP_P054: Added new: References should be used instead of pointers when possible.
- CPP_P057: Added new: A pointer to dynamic memory that is declared and allocated locally to a function or method should be declared as an auto_ptr. An auto_ptr
- Styling
- CPP_ST032: CPP_ST032 check for standard intentation
- Variables
- CPP_V036: Added new: Static data member initialization should be placed in the class .cpp file.
- CPP_V037: Added new: Initializer lists should be used to initialize member variables over direct assignment.
- CPP_V038: Added new: The concept of information hiding, also known as data encapsulation, should be implemented by ensuring that C++ classes have no public attributes. Rather, C++ classes should have access methods if direct manipulation of attributes is desired.
- CPP_V039: Added new: Within an object, most instance variables should be accessed directly. Methods should be used to set variables whose values are determined by an algorithm.
- CPP_V040: CPP_V040 check that local variables do not shadow outer variables within the scope of the function
- Warnings
- CPP_W006 Added new: integer overflow
- CPP_W007 Added new: integer to void pointer cast
- CPP_W008 Added new: void pointer to int cast clang warnings to code check.
- CPP_W009 Added new: zero-length-bounds
- CPP-W010 Added new: clang warning incompatible pointer types
- Java
- JAVA_06: Add check "Package names shall be in all lowercase alphabetic characters and integers"
- JAVA_07: Add check "If multiple classes are imported, the list shall be imported alphabetically"
- JAVA_08: Add check "Each package group shall be separated with a newline"
- JAVA_09: Add check "Each Java class shall be assigned to a named package"
Bug Fixes
- Fix crash that occurred while creating an architecture
- Fix regression in specifying default values for checkbox_horiz and checkbox_vert options in Perl scripts.
- Fix the File Sync that wasn't working in the Project Browser.
- Fix hang on project open when the option to sort tabs alphabetically is enabled.
- Understand-dark theme: Fix the coloring for all the slide bars (vertical and horizontal) to be more visible.
- Fix the default editor color in light mode for ADA variables.
- Fixed bug where using alias with the same name as the used entity (e.g. 'using X = X') caused the parser to fail in looking up the used entity name.
- Fix failure to start CodeCheck analysis when Perl graph windows are open
- CPP_M014: Added new: The operator new should be called with the nothrow option when expecting NULL to be returned upon error, as some implementations of new throw an exception instead of returning NULL.
- JAVA_10: Add check "Use package names instead of prefixes on class identifiers"
Build 1107
6.2, Jun 23, 2022
New Features
- Plugin: Add the script directory to the module search path when loading Python plugin scripts
- Add support for analyzing CUDA files (.cu and .cuh) with the C++ (Strict) analyzer
- Added 'implicit', 'explicit', and 'operator' to the AdditionalKinds freetext for methods. Removed 'operator-' from the name of type cast operators.
- Added 'partial' to the AdditionalKinds text for partial classes.
- C and C++
- Comments
- CPP_CM003: Add new: Class headers shall include short description
- Constructors
- CPP_C054: Added new: when a deep copy constructor is not implemented, the class header shall describe this fact
- Declarations and Definitions
- CPP_DD006: Added new: initializer lists shall be written in order in which they are declared
- CPP_DD007: Add check "Use private keyword in class definitions"
- Destructors
- CPP_D076: Added new: If a class requires a virtual destructor but has nothing to undo from a constructor, an empty implementation should be provided for the destructor as follows
- Exception Handling
- Functions
- CPP_F060: Added new: A method that does not change the visible properties of a class shall be declared const
- CPP_F061: Added new: The type of the return and all method arguments (even type void) shall be specified when defining a method.
- CPP_F062: Added new: When overloading standardized operators (e.g., a += b, a-=b etc.), the resulting behavior should remain consistent with the expected outcome of the operator.
- Headers
- CPP_H017: Add check "No member declarations on the same line"
- CPP_H017: Add check "Use C++ version of standard headers"
- CPP_H018: Added new: When including C Standard Library header files, C++ Standard Library header files without a ‘.h’ appended should be used.
- Identifiers
- CPP_I025: Added new: The using namespace directive should be used only at the method/function scope.
- Memory Allocation
- CPP_M010: Added new: The new[] and delete[] operators shall be used for the allocation and deallocation of memory resources
- CPP_M011: Added new: The delete[] operator shall be used to deallocate arrays that have been allocated with the new[] operator
- CPP_M012: Added new: The delete[] operator shall be called in the destructor for all member pointers in an object that are pointing to memory that was dynamically allocated by that object
- CPP_M013: Added new: user shall provide copy constructor, desctructor, and assignment operator for class using dynamic memory alloc
- Styling
- CPP_ST030: Added new: Class design should include the following format
- CPP_ST031: Add check "No member declarations on the same line"
- Variables
- CPP_V029: Added new: The const_cast operator should be used exclusively for altering the constness attribute of a variable.
- CPP_V030: Added new: The dynamic_cast operator should be used exclusively for casting within an inheritance hierarchy.
- CPP_V031: Added new: The static_cast operator should be used for routine cast operations not provided by const_cast and dynamic_cast.
- CPP_V032: Added new: Use of the reinterpret_cast operator should be avoided.
- CPP_V033: Added new: Typedef'd variables in a class shall be placed in an include file
- CPP_V034: Added new: STL containers (vector, list, map, etc.) should be used instead of C-style arrays whenever possible.
- Virtual Functions
- CPP_VF000: Added new: When implementing virtual functions, every class that contains virtual functions shall provide a virtual destructor.
- CPP_VF001: Added new: Access levels should not be mixed (public, protected, private) when overriding virtual functions.
- Warning
- Add new: Division of array size of operators
Bug Fixes
- Import: Fix failure to recognize MSVC style language standard flag in compile_commands.json and build watcher import
- Ireport: Fix sort order inconsistencies for Python IReports
- Plugin: Fix crash on some Perl IReport plugins
- CPP_EH000: Added new: Library objects shall not generate error messages directly
Build 1106
6.2, Jun 21, 2022
New Features
- Make ignores list portable
- Speed up Recommended check for unreachable code
- Add edit actions for implicit calls to the editor context menu.
- Add the ability to jump to control flow graph nodes from the editor right-click menu.
- Change graph searches to center the current item.
- Turn on graphs "Highlight edges on hover" by default and update the effect from an ugly green color to a stylish glow.
- Add beta support Keil UVision project import - please send us feedback on this.
- Attempt to run java to find the default java version for new databases.
- Made a change to not parse excluded css files when they are mentioned in a link tag.
- Add 51 new C and C++ checks!!
- SciTools' Recommended Checks
Bug Fixes
- Fix Duplicate ID error not taking the focus
- Fix crash when saving CodeCheck treemap as an image.
- Improve error message from sample project download when downloaded zip didn't save.
- Fix bug where changing levels in call/called by architecture graphs blocked edges crossing architectures.
- Add analysis errors and warnings categorization to Project Overview Charts.
- Fix a potential crash when running some Perl script user tools during the resolve.
- Fixed some issues with loading classes from jar files that resulted in missing type warnings.
- Fixed problem automatically locating Java 1.8 src.zip for new project configurations.
- Fixed problem automatically locating lib/src.zip for new project configurations on some systems.
- For web/css, fixed bug where the tilde (~) combinator caused syntax errors unless delimited by spaces.
- RECOMMENDED_03: Fixed script error
Build 1105
6.2, Jun 7, 2022
New Features
- Control flow graph context menus in styled source code use the entity under the cursor.
- Add a compare variant for the UML Sequence Diagram.
- Show the build watcher panel when C or C++ files are found
- Avoid syncing to the selection during incremental search in the Architecture Browser
- Remember refs list selection position in Information Browser history
- Moved the 'async' modifier on methods from the return type to a new AdditionalKind freetext entry that is displayed as part of the entity kind in the Information Browser.
- Added modifiers not encoded in entity kinds to the AdditionalKind freetext for display as part of the entity kind in the Information Browser.
- Made changes to search algorithm for locating built in Java standard jar files.
Bug Fixes
- Fixed Metrics Browser and Architecture metrics to show the correct metric values
- Change the color for errors in Analysis log as they were hard to read in dark mode.
- Fix hang on progress from a Python script on Windows
- Fix failure to reload the script for an existing IReport window
- Fix incorrect option lookup return type for checkbox, integer, and empty string options
- Fixed bug where self.<attribute_name> assignments did not create attribute definitions if a type hint was included.
Build 1104
6.2, May 31, 2022
New Features
- Add 2 AUTOSAR checks
- Add cut and paste to Architect Designer Textual View
- Add the option to ignore whitespace/comments/newlines for locate changed entities and changes treemap in project configuration
- Don't save the java classpath configuration when it matches the default value
Bug Fixes
- Fixed crash when opening hidden .und folder as a project
- Fix watched directory rescan when no valid languages are found/chosen
- Fix for A18-0-2 where name was missing from the Autosar check selection
- Fix option lookup behavior change for lists of strings. The lookup stopped returning a list of strings and started returning a single string containing a comma-separated list of values.
- Fixed problems loading nested classes from .class files that resulted in missing type warnings
- Fixed syntax errors on some type cast expressions
Build 1103
6.2, May 21, 2022
New Features
- Add the ability to create graph plugins from architectures to the Perl and Python APIs.
- Replace in Files - Add "Skip Review" option to Replace In Files.
- For files in the editor that have been deleted on disk, show title as struck through text and allow save shortcut to open save as dialog.
- Add an "Add Git Repository" button to the new project wizard.
- Refactor rename: if a referenced name is not found but a c macro is at the referenced location and contains the referenced name, allow replacing the referenced name in the macro text.
- Add inline scope refactor tool for c/c++ to change enum into enum class or remove "using namespace XXX" statements.
- Add a commit selector allowing the user to navigate the git history easily.
- Add the ability to delete Bookmark category
- Add ent.add_to_arch method to the perl and python APIs
- Add cast, derive, dotref, handle, hasenvironment, implement and raise references to the Pascal References IB field
Bug Fixes
- Instant search - fix highlighting in editor to be case insensitive.
- Instant search - fix search in string literals with whitespace escape sequences.
- Fix for drag & drop of a file into an unchecked split workspace that was opening in the checked workspace.
- Upython: Fix crash on ent.draw()
- Fix failure to expand tabs in report text
- Fix crash on analysis for languages that write errors/warnings before starting an analysis phase
- Fix for C/C++ fuzzy parser not showing 'missing includes'
- Fix regression in recording references to some constructor base initializers
Build 1102
6.2, May 7, 2022
New Features
- Add implement, import and throw references to the Basic References IB field
- Remove implicit methods from LCOM metric calculation for c++
- Change the architecture column to include explicitly mapped non-file entities
- Changed references from type variables to types mentioned in constrains from 'implements' and 'extends' relations to 'use constrains'.
- Added 'use constrains' references for type names used as constraints on generic type parameters.
Bug Fixes
- Fix regression in setting font foreground color in Perl reports
- For Pascal/Delphi, changed relation from a generic formal parameter to a constraining type from a 'typed' relation to a 'use constrains' relation. Fixed bug where references to components of these constraining types sometimes generated 'unknown' entities.
- Fixed syntax error on some uses of the '<>' operator.
Build 1101
6.2, May 2, 2022
New Features
- Und metrics (no arguments) command: export all metrics if none are selected.
- Add 13 AUTOSAR rules.
- Disable dock window editor toolbar buttons when no database is open.
- Increase the level options in most tree graphs from 5 Levels to 10 Levels.
Build 1100
6.2, Apr 24, 2022
New Features
- Graphics print dialog remember last settings.
- Add vertical layout option to most tree graphs.
- Compare Entities sync entity selections and show entity context menus.
- Update documentation for Understand 6.2
- Add support for MPLAB XC32 compiler
- Changed references from type variables to types mentioned in constraints from 'implements' and 'extends' relations to 'use constrains'.
- Made change to allow processing files with .js ending as Typescript if .js is mapped to Typescipt in the File Types configuration.
Bug Fixes
- Und settings -javaversion allow values between 10 and 18 to map to "10-18" instead of causing an error.
Build 1099
6.2, Apr 16, 2022
New Features
- Diff View wrap next/previous result.
Bug Fixes
- Fix crash on locate changed entities when an analyzed file no longer exists.
- Fixed problem where references to type parameters in some 'new' expressions were not recorded.
- Fixed syntax errors on use of annotations in some contexts.
- Fixed bug where entity lookup sometimes failed with multi level packages and classes.
- Fixed issues with UndCC_Entity, UndCC_EntityBegin and UndCC_EntityEnd when dealing with '' as an argument.
Build 1098
6.2, Apr 9, 2022
New Features
- Update Qt to 6.2.4
- Add 2 new AUTOSAR rules.
- Made the API Contents for Java types and methods include all lines of modifiers and annotations even when on separate lines than the type or method name.
- Update Welcome Page
Bug Fixes
- Fix potential crash.
- Fixed syntax error on some 'enum' declarations inside block statements.
- Fixed problem with line counts for classes and methods where modifiers and annotations appearing on separate lines before the class or method name were not counted as part of the class or method.
Build 1097
6.2, Apr 1, 2022
New Features
- Update Qt to 6.2.3
- Update OpenSSL to version 1.1.1k
- Update Python to version 3.10
- Update Perl to 5.34.0
- Remove Understand 32 bit Windows support
- Remove PL/M & COBOL language support
- Visual studio import allow leading and trailing whitespace in conditions.
- Add support for recognizing system include paths passed to MSVC with /external:I
- Changed Search Results to give focus to the editor instead of keeping focus.
- Accept
None as the first argument to the entity comparison sync functions.
- Update & improve Python documentation.
- Add "Function Pointer" option to UML Sequence Diagram.
- Calls/Called By non-classic variant graphs do partial reset on level change instead of full reset to preserve options like which nodes are hidden or highlighted.
- Add "use ptr" dashed edge style to call graphs.
- Limit Virtual Calls (overrides) and Assignment style to call graphs.
- Prefer comparison graph variants when a comparison database is open.
- Treemaps don't show unmapped entities when grouping by Architecture.
- Show progress bar for changed entities calculation in changes treemap.
- Display CodeCheck results while processing so it is quicker to start seeing results.
- Dependency Checks: Include exceptions in dependency check descriptions.
- Add new METRIC_13 check which reports on Maintainability Index metrics.
- Add 22 AUTOSAR rules
- Add option in AUTOSAR A4-7-1 which will increase speed but reduce accuracy.
- Add 15 new CPP checks
- Add 1 new MISRA12 check
- Add 1 new MISRA04 check
- Add 2 new MISRA08 checks
- Add Collapse Architecture to right click context menu for Architecture Designer.
- Change the collapse key from the '/' to the '-' in order to be consistent with the Architecture Browser.
- Unify compare entities from context menu and from global menu.
- Add a changed entity export to und (und export -changes).
- Only show "comparison database analysis required" message once per comparison database.
- Improve speed when comparing two git comparison projects.
- Improve string filters in changed entities window.
- Add missing "friend" reference to friend templates
- Mark compiler-generated functions as implicit
- Added 'final parameter' kind for parameters that have the 'final' modifier.
- Added 'final' to the short kind text for all kinds that include final in the long kind name.
- Improved annotation processing. Added new 'use annotation' kind for references to annotations. The annotation reference now links from the annotated entity instead of from the enclosing context.
- Added type parameters and extends/implements text as type text for classes and interfaces.
- Added support for 'instanceof' with variable declaration for Java 16.
- Added support for Java 17 sealed classes.
- Added 'sealed' class and interface kinds.
- Made additional changes for Java record support.
- In the Information Browser, display a 'Type' text field for java generic entities that includes parameters, extends, implements, etc
- Made change to count assignment statements that declare a new variable as both declarative and executable statements and lines.
- Made change to count string literals used as no-op statements as comments.
- Changed control flow graphs to show calls to exit methods as paths to routine end instead of regular function calls.
- Reanalyze all files when the library setting is changed for any VHDL file
Bug Fixes
- Fix performance issue on closing projects with a very large number of files.
- Fix Arch.ents([recursive]) to respect the recursive parameter.
- Fixes for Ada UML Class Diagram.
- Fix dependency graph "Choose Edges Shown" button not updating the graph after the first change.
- Fix ADA language check, ADA_N000 naming conventions check to be case sensitive.
- Fixed unexpected expansions inside Architecture Designer's Textual View when dragging & dropping.
- Fixed crash that occurred while editing architectures.
- Fix comparison projects panel duplicating open projects on double click on Windows.
- Fix new git comparison database not working correctly when there are no other comparison databases.
- Fix changed entity locator percent changed column filtering.
- Fix failure to write metrics for structs in C files
- Fixed bug where some lambda declarations caused syntax errors.
- Fixed syntax errors on casted switch expression and on compact record constructor declarations.
- Fixed bug where some nested classes loaded from .jar files were duplicated in the understand database.
- Fixed bug where annotation interfaces loaded from .class files were given 'Interface' kind instead of 'Annotation Interface'.