Understand Changelog

What's new in Understand 6.5 Build 1182

Apr 25, 2024
  • General:
  • Fix crash on exit after showing the recommended checks dialog
  • Fix possible crash around the end of analysis when the Violation Browser is open
  • Fix New Project Wizard crash for some languages
  • Command Line(Und):
  • Fix crash on exit when running an analyze command and the db version has changed
  • CodeCheck:
  • Fix severity labels not reflecting in Violation Browser after analysis
  • Fix regression in showing code snippet for violations without an associated entity
  • Graphs:
  • Add overrides option for php graphs
  • Fix file dependency graph showing labels in minimap
  • Search:
  • Violation Browser "View Information" opens Information Browser if not already open.
  • Language - C++ (Strict):
  • Fix location of function template specialization references

New in Understand 6.5 Build 1180 (Apr 15, 2024)

  • CodeCheck:
  • Sorting all checks by name (instead of ID) except for AUTOSAR which is a special case
  • Installer:
  • Add Windows installer warning when Understand, Comply, or VS Code plugin are running.
  • Language - C++ (Strict):
  • Add missing init references for fields initialized by aggregate initialization
  • Known Issues:
  • Project Overview may not open for some large projects
  • Und list settings does not show compiler options
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled

New in Understand 6.5 Build 1179 (Apr 6, 2024)

  • Compilers:
  • Add support for Renesas CC-RH compiler
  • Editor:
  • Fix inline violations not showing after editor unsplit
  • General:
  • Add a pop up for existing projects that prompts to run recommended checks in the background
  • Add background checks pane to New Project wizard - enlarge the height of the New Project Wizard so the cancel button is not squished on Mac.
  • Info Browser:
  • Fix potential hang on architecture disable
  • Changed display of init values in c++ IB to always show the original text and then to optionally show computed values when available
  • Graphs:
  • Possible fix for VSDX export not working on some machines.
  • Improve text position for VSDX export.
  • Installer:
  • Add Windows installer warning when Understand, Comply, or VS Code plugin are running.

New in Understand 6.5 Build 1178 (Mar 26, 2024)

  • Api:
  • Add db.draw() method to Python API
  • Cgraph:
  • Fixed crash in calculation of essential complexity in methods with extremely long sequences of if statements with abnormal exits.
  • Graphs:
  • File Dependencies graph labels ignore scale.
  • Fix zoom restoration
  • Metric:
  • Add metrics for the number of CodeCheck violations
  • Language - C++ (Strict):
  • Write init value constants as written in source instead of constant folded
  • CodeCheck:
  • Started adding support for MISRA 2023
  • Known Issues:
  • Und list settings does not show compiler options
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled

New in Understand 6.5 Build 1177 (Mar 21, 2024)

  • Api:
  • Update Python API Documentation
  • Add support for C17, C++14, C++17 and C++20 in api lexer
  • Improved ib() api
  • Build:
  • Update .und file icon on MacOSX
  • Editor:
  • Fix crash on unsplit when the suggestion browser is visible
  • Graphs:
  • Add Architecture Labels option to File Dependency Graph
  • Search Results:
  • Add hamburger menu option to show results in plain text
  • Language - C++ (Strict):
  • Fix parameter names with multiple declarations in the same file to use the definition name
  • Known Issues:
  • Und list settings does not show compiler options
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled

New in Understand 6.5 Build 1175 (Mar 7, 2024)

  • API:
  • Add "dates" key to Git plugin cache
  • Ada:
  • Fix crash in some allocators using qualified expressions
  • Fix invalid syntax error on use of 'not null' in a type discriminant declaration
  • CodeCheck:
  • Add Button for generating CodeCheck API commands
  • Settings:
  • Fix failure to persist for "analyze headers in isolation" setting

New in Understand 6.5 Build 1174 (Feb 29, 2024)

  • Editor:
  • Fix caps lock indicator position on macOS
  • Und Command Line:
  • Get full version info from und - Added version -full as a way to get the full version number
  • Info Browser:
  • Change XML Elements IB field to show a nested tree of elements when in full-reference mode, but multiple same-named elements are collapsed into the first reference only
  • Fix display of set references in the IB for XML attributes
  • Python API:
  • Change the name of the violation object created by a CodeCheck Python plugin to CheckViolation to fix name conflict
  • Add a cache object for some Python plugins

New in Understand 6.5 Build 1173 (Feb 22, 2024)

  • General:
  • Fix infinite loop when a Python architecture plugin accesses dependencies.
  • Language - C++ (Strict):
  • Fix target of assign references to data member instances
  • Known Issues:
  • Und list settings does not show compiler options
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.5 Build 1171 (Feb 7, 2024)

  • Build Watcher:
  • Fix issues importing quoted arguments from Build Watcher
  • Editor:
  • Respect system cursor blink period setting
  • Graphs:
  • File Dependencies Graph, style updates
  • File Dependencies graph, add legend
  • Fix classic graph bug where a virtual call to a base class function would not show the base function calls
  • Graphs add option for bidirectional edges and set it to show each edge by default instead of collapsing into a single edge. Only affects simplified, cluster, relationship, and compare variants of non-dependency tree-like graphs. Also disable bidirectional style by default in calls graph since bidirectional edges are not collapsed by default.
  • Language - C#:
  • Fixed bug where 'base' and 'this' on constructor declarations did not result in call references
  • Language - Java:
  • Added support for Java SE 21 pattern matching in switch statements
  • Fixed bug where use of arrow syntax in switch branches was not shown correctly in the control flow graph
  • Fixed syntax error on the use of a wildcard parameter which extends an array of a primitive type (e.g. “<? extends byte[]>”)
  • Language - Pascal:
  • Fix virtual calls in Pascal Calls IB field
  • Language - VHDL:
  • Fix port resolve error

New in Understand 6.5 Build 1170 (Jan 31, 2024)

  • Buildspy:
  • Fix failure to start on Linux and macOS
  • Graphs:
  • Fixed crash in calculation of essential complexity in methods with extremely long sequences of if statements with abnormal exits.
  • Draw commands from the API leave png background transparent
  • Printing:
  • Avoid drawing fold indicators in printouts
  • Print all pages by default
  • Dependency Checks:
  • Fix dependency check false positives related to C++ type aliases
  • Metric Browser:
  • Metric Browser has no 'see more' symbol when Architecture list is hidden - Updated the splitter to change color on hover for the Metric Browser.
  • Import:
  • Fix import of quoted path settings
  • Info Browser:
  • Duplicate button added to the IB using the clone icon
  • Python API:
  • Fix upython hang when passed flags like '--version' and '--help'
  • Language - C++ (Strict):
  • Add missing "specialize" reference to explicitly specialized function templates
  • Fix missing assignment references for variables appearing in the conditional operator
  • Fix failure to resolve together type aliases with multiple definitions
  • Language - Java:
  • Added support for Java SE 21 record patterns.
  • Known Issues
  • Selected sub-directories may be inaccurate in CodeCheck
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.5 Build 1169 (Jan 24, 2024)

  • General:
  • Basic support for importing Green Hills project files
  • API:
  • Uperl - Fix crash on metric and architecture calls
  • Language - Java:
  • Added support for Spring option.
  • The current support is limited to Spring Annotations (it does not support XML configuration). The annotations recognized currently are annotations for Dependency Injection, Aspect Oriented Programming, and JPA/Hibernate.
  • Language - Web:
  • Fixed crash parsing some css import statements.

New in Understand 6.5 Build 1166 (Jan 10, 2024)

  • Graphs:
  • Fix for graphs with unstyled labels showing html instead of edge indicators
  • Variable Tracker Graph add "Show Assign References" option
  • Language - C++ (Strict):
  • Fix missing assign reference for member object instances
  • Python API:
  • Restore the ability to import the Python module in version 3.10 or greater

New in Understand 6.5 Build 1165 (Dec 20, 2023)

  • Graphs:
  • Add line metric color scale option for graph edges with references. Line metrics are summed for each referenced line in an edge
  • Add line metrics capability to python metric plugins.
  • Add line metric color scale options to Control Flow Graph nodes
  • Fix crash on graph restore after switching or reopening projects
  • Known Issues:
  • Selected sub-directories may be inaccurate in CodeCheck
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.5 Build 1164 (Dec 19, 2023)

  • CodeCheck:
  • Fix regression in clearing some stale violations
  • Fix possible crash in CodeCheck file selection with root architectures
  • General:
  • Add C Type Alias as an allowed dependency entity
  • Language - Java:
  • Fixed parser crash on use of directory class path
  • Known Issues:
  • Selected sub-directories may be inaccurate in CodeCheck
  • Entity filter list may be blank on Windows
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.5 Build 1159 (Nov 19, 2023)

  • Interactive Reports:
  • Fix crash on analysis with an architecture IReport open
  • Project:
  • Updated right click menus to add file/folder option to "Show in Finder/File Explorer"
  • Language - C++ (Strict):
  • Fix failure to record definition and parameters for macro names used before their definition

New in Understand 6.4 Build 1156 (Oct 25, 2023)

  • CodeCheck:
  • Fixed issue on adding ignores, Und's -addignored, where an Entity was not initialized properly when no entity name or uniquename is specified.
  • Diffview:
  • Fix regression in syntax highlighting diff views

New in Understand 6.4 Build 1155 (Oct 11, 2023)

  • Language - Fortran:
  • Added support for a truncate column for fixed format files when Auto format detection is used. The specified truncate column will be used for all files identified as fixed format.
  • Language - Web/Php:
  • Fixed bug where a trailing comma in a parameter list caused a syntax error.
  • Known Issues:
  • Entity filter list may be blank on Windows
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.4 Build 1154 (Oct 4, 2023)

  • General:
  • Fixed issue where local repository was not allowing the freeze and compare git options when creating the project.
  • Added new Build Wrapper page and associated navigation to the Getting Started Wizard that explains Buildspy and Bear.
  • Command Line(Und):
  • Add missing metric visibility option to und list
  • Graphs:
  • Add an option to UML Class Diagram to show return types.
  • Fix butterfly variant of Calls & Called By graph missing functions with only calledby references .
  • Language - C++ (Strict):
  • Avoid creating implicit declarations for functions that are also explicitly declared
  • Fix kind of implicitly declared C functions
  • Language - Fortran:
  • Added support for Intel !DIR$ directives.

New in Understand 6.4 Build 1153 (Sep 27, 2023)

  • Settings:
  • Add project metric visibility options to und

New in Understand 6.4 Build 1152 (Sep 20, 2023)

  • Annotations:
  • Fix crash when opening the annotation viewer with a pre-existing empty annotation
  • Editor:
  • Fix regression in showing caret line highlight
  • Language - C++:
  • If c++ macro expansion text is saved, change it so it is never truncated

New in Understand 6.4 Build 1151 (Sep 13, 2023)

  • Metrics:
  • Fix for hang in ent.metrics() from upython when custom metric plugins are installed.

New in Understand 6.4 Build 1150 (Sep 7, 2023)

  • General:
  • Fixed crash when opening Understand for a specific folder (from CLI or GUI)
  • Added the option to Add Git Repository Cloned to Local System on New Project Wizard - The save name for cloned projects now reflects the root project directory not the user folder by default.
  • Fixed issue where users could not access Freeze and Compare Git options after cloning a Git repository.
  • Language - C#
  • Fix style issue in C# verbatim strings that contain escape sequences
  • Language - C/C++ Strict
  • Add missing ARM intrinsic header files
  • Known Issues:
  • Entity filter list may be blank on Windows
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.4 Build 1149 (Aug 31, 2023)

  • Graphs:
  • Call graphs make self edges an option on by default, all other built-in graphs remove self edges.
  • Language - C#:
  • Added new kind 'Use GenericArgument' for references to types used as parameters in generic instantiations that are not part of a type definition for a variable, method, or parameter.
  • Language - Visual Basic:
  • Added new kinds 'Typed GenericArgument' and 'Use GenericArguments' for references to types as arguments in generic instantiations. The 'Typed' form is used when the reference is part of the type definition for a variable, parameter, or method and the 'Use' form is used for all other contexts.

New in Understand 6.4 Build 1148 (Aug 25, 2023)

  • Graphs:
  • Add graphs building and layout to global progress bar.
  • Make graph progress bar a little more obvious.
  • Compare:
  • Fix und export changes not recognizing some columns.
  • Language - Pascal / Delphi:
  • Added new kinds 'Typed GenericArgument' and 'Use GenericArgument' for references to types as arguments in generic instantiations. The 'Typed' form is used when the reference is part of the type definition for a variable, parameter, or method and the 'Use' form is used for all other contexts.
  • Added 'Typed Implicit' kind for implicit typing of 'Result' variables.
  • Language - Python:
  • Fixed parser crash on some imports with missing files.
  • Known Issues:
  • Potential hang when reopening a project with a directory dependency graph open --Workaround: run “und purge C:my_projectmy_project.und”
  • Entity filter list may be blank on Windows
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.4 Build 1147 (Aug 16, 2023)

  • CodeCheck:
  • Refactor tool for applying violation fix-it hints.
  • Editor:
  • Better handle apostrophes in spell checked comments.
  • Graphs:
  • Fix "Called By Depth" graph option in Object References With Called By (Cluster) graph.
  • Improve compare control flow graph end and else node matching.
  • Webpages:
  • Open web pages with system web browser when web engine is disabled.
  • Language - C++ (Strict):
  • Fix worker process crash on field declarations with invalid bit width expressions.
  • Fix worker process crash on functions with return type specified by `decltype(expr)` where the expression depends on a template argument that couldn't be deduced.
  • Fix worker process crash on some invalid new expressions and invalid code.
  • Language - C++ (Fuzzy):
  • Treat 'inline' as a keyword in C for the fuzzy parser
  • Missing Header Files cannot be found - Added the missing headers to the Project->Configure Project->C++->Includes->Search

New in Understand 6.4 Build 1146 (Aug 15, 2023)

  • Annotations:
  • Don't show duplicate annotations in the annotation viewer.
  • CodeCheck:
  • Add check "Check Parameters and Return Values - Return Values"
  • General:
  • Update to Qt 6.5.2 to fix an issue on Mac where other apps with Accessibility access would crash Understand
  • Improve tooltip text for template or generic functions
  • Move global progress indicator from status bar to top right toolbar.
  • Graphs:
  • Allow self-edges in built-in graphs.
  • Fix classic butterfly graph layout to repeat nodes that appear in both trees.
  • Language - Basic, Java, Pascal:
  • For Basic, Java, Pascal, changed kind for generic type parameters to 'GenericParameter Type' to be consistent with the kind name in C++ and to fix problem with the 'parameters()' method returning generic type parameters along with method parameters.
  • For Pascal, added generic parameters to the type text for variable, parameters, and method return types.
  • For Pascal, fixed bug where two entites were created for a generic type paramter on a method where the method appears in both the interface and implementation sections.
  • For Java, added new kinds 'Typed GenericArgument' and 'Use GenericArgument' for references to types as arguments in generic instantiations. The 'Typed' form is used when the reference is part of the type definition for a variable, parameter, or method and the 'Use' form is used for all other contexts.
  • Language - C++ (Strict):
  • Change reference kind of template arguments appearing in non-declaration contexts from "Typed TemplateArgument" to "Use TemplateArgument"
  • Language - C++ :
  • Restore showing c++ function pointer calls on IB call and callby trees
  • Known Issues:
  • Some CodeCheck violations may be missing when enabling “Run automatically in the Background”
  • Entity filter list may be blank on Windows
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.4 Build 1143 (Jul 6, 2023)

  • Graphs:
  • Add c functional macros to UML Sequence Diagram.
  • Fix regression in metrics treemap options remembering last used settings.
  • Fix intermittent crashes on some graphs
  • Dependencies:
  • Move dependency export progress dialog to the new global progress bar.
  • Metrics:
  • Fix error when clicking on the Filters button on the metric definitions page.
  • Fix metrics CSV export to not include commas in large numbers.
  • Python API:
  • Raise an exception on attempt to open or close a database from a plugin script
  • Add .upy extension as a Python file type.
  • Entity Locator:
  • Fix filter field layout regression on scroll
  • Language - C++ (Strict):
  • Add missing constructor init list reference to class template base type
  • Language - Fortran:
  • Fixed bug where using '!' as 'not' in a preprocessor condition resulted in incorrect condition evaluation.
  • Language - Web/Typescript:
  • Added support for .cts, .mts, .cjs, and .mjs extensions.
  • Added support for arbitrary file extensions mapped to a file with extension d..ts (for example, an import of 'file1.css' maps to 'file1.d.css.ts'.
  • Improved handling of 'import = require(...)' and 'export name = ...' syntax.
  • Added support for 'satisfies' operator.
  • Fixed bug where a label on a tuple type element caused a syntax error.
  • Violation Browser:
  • Update Violation Browser count field width

New in Understand 6.4 Build 1142 (Jun 26, 2023)

  • Editor:
  • Editor: Fix potential crash on editor document reload
  • Language - C++ (Strict):
  • Strict: Fix kind and location of implicit base class constructor calls

New in Understand 6.3 Build 1139 (May 18, 2023)

  • Entity filter list may be blank on Windows
  • Variables in CodeCheck may appear as "unnamed"
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.3 Build 1137 (Apr 18, 2023)

  • Architecture Designer:
  • Fixed text for the description of 'Instructions to build your architecture' key in the resource file
  • CodeCheck:
  • Remove the CodeCheck save on Inspect for the ignores file in order to fix the issue with baselining CodeCheck violations.
  • Long texts are truncated in CodeChecks' description - Text was not being truncated but the horizontal scrollbar was not working. The horizontal scrollbar is now working properly.
  • Selected CodeCheck config is overwritten by importing another config - Issue is fixed and current selected configuration is no longer overwritten by the importing configuration.
  • Update the previewer to not take focus when activated from CodeCheck results.
  • Filter:
  • When single as well as multiple entities are selected in the Entity Filter, 'Ctrl+c' will copy the entity names to the clipboard. Also, used the right click menu, 'Copy Fullname', that will do the same.
  • General:
  • Copying multiple Entity Filter lines - replace the action of "Copy Full Name" with the new copy entity name action and removed 'Copy Entity Names"
  • Fix potential crash on project close
  • Graphs:
  • Fix Butterfly Compare (Classic) graph ignoring of multi-line /* ...*/ comments.
  • Update default options for acf_ControlFlowTree.pl to match current options available
  • Import:
  • Fix visual studio import of configurations with parentheses in the name.
  • Info Browser:
  • Change C# and Java SameName IB fields to Overloads
  • Add Overloads IB field for Ada
  • Add Overloads IB field for Basic methods
  • Add Overrides and OverriddenBy IB fields for C#
  • Add VirtualType and VirtualCalls options to C# CalledBy and References IB fields
  • Add VirtualCalls and VirtualType options to C++ CalledBy and References fields
  • Change java CalledBy and References IB fields to identify static calls instead of dynamic calls
  • Interactive Reports:
  • IReports use last used options instead of default options when options popup is not shown.
  • Change the IReport entity double click to match entity double clicks in other parts of the tool.
  • Search:
  • Fix some Entity Locator string localizations.
  • Language - C++ (Strict):
  • Fix worker process crash on malformed Objective-C for-in statement
  • Add missing references to types and fields referenced inside of __builtin_offsetof expressions
  • Language - C#:
  • Fixed bug where overload resolution cold be incorrect when overloaded methods were inherited from ancestor classes and additional overloads were defined in the child class.
  • Fix duplicate entries in Scopelist for C# and Java
  • Language - Python:
  • Fixed bug where variables declared as global within functions but having no assignment statement at the file level were generating Unknown Variables.
  • Language - Web:
  • Fixed bug where xml and css file counts were sometimes incorrect. Fixed bug where a src of a php file from html caused an attempt to parse as Javascript.
  • Known Issues:
  • Variables in CodeCheck may appear as "unnamed"
  • Error calling ent.draw() using custom Python
  • License manager occasionally displays a threading warning
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.3 Build 1136 (Mar 29, 2023)

  • CodeCheck:
  • Issue with baselining CodeCheck violations - Remove the CodeCheck save on Inspect for the ignores file
  • Crash when closing Understand while CodeCheck is performing a read or write operation - Fixed the crash while previous inspection is loading and the user closes Understand or when exporting results
  • Language - C++ Strict:
  • Fix slight performance regression
  • Fix worker process crash
  • Show virtual callby references in the c++ References IB from overridden methods

New in Understand 6.3 Build 1134 (Mar 8, 2023)

  • Command Line(Und):
  • Update help for und create
  • Graphs:
  • Add UML Sequence Diagram Ada support
  • Plugin:
  • Fix crash when attempting to drag-and-drop to install an invalid Python plugin
  • Metrics:
  • Add image for CyclomaticStrictModified metric documentation
  • Language - C++ (Strict):
  • Add missing assign references to fields appearing in designated initializers
  • Language - Java:
  • Fixed bug where adding a directory containing .class files as a Class Path sometimes resulted in 'unable to read file' errors for the .class files
  • Fixed error loading some class files when reading from a class reference directory
  • Fixed bug where nested classes with names containing ‘$’ did not load correctly from reference jar files
  • Language - Pascal:
  • Fixed parser crash on some uses of unknown classes as parent types
  • CodeCheck Checks:
  • C and C++:
  • Declarations and Definitions
  • CPP_D011: Fixed: "Type error in CPP_D011"
  • CPP_DD014: Add check "Use the same parameter names and type qualifiers for all declarations and definitions"
  • Headers
  • CPP_H020: Add check "Do not use standard header tgmath.h"
  • CPP_H021: Add check "Do not use standard header setjmp.h"
  • Identifiers
  • CPP_I010: Add check "Do not reuse identifiers of static objects or static functions"
  • Published Standards:
  • MISRA C 2012
  • MISRA12_21.11: Add check "Do not use standard header tgmath.h"
  • MISRA12_21.4: Add check "Do not use standard header setjmp.h"
  • MISRA12_8.3: Add check "Use the same parameter names and type qualifiers for all declarations and definitions"
  • MISRA-C 2004
  • MISRA04_5.5: Add check "Do not reuse identifiers of static objects or static functions"
  • MISRA04_8.3: Add check "Use the same parameter names and type qualifiers for all declarations and definitions"
  • MISRA-C++ 2008
  • MISRA08_2-10-5: Add check "Do not reuse identifiers of static objects or static functions"
  • License manager occasionally displays a threading warning
  • Und batch mode requires the database explicitly set for each line
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.3 Build 1133 (Feb 23, 2023)

  • Language - C++ (Strict):
  • Change synthetic 'use' references for entities marked with an 'unused' attribute to 'use implicit'

New in Understand 6.3 Build 1132 (Feb 16, 2023)

  • General:
  • Fix crash on exit during project open
  • Don't show chat option on welcome page in Japanese build
  • Editor:
  • Fix regression in positioning violation popups within editor bounds in files with very few lines.
  • Entity Filter:
  • Avoid blocking the user interface when changing filters (including after analysis).
  • Metrics:
  • Fix architecture metric calculation of AvgCyclomaticStrictModified and MaxCyclomaticStrictModified
  • Language - C++ (Strict):
  • Fix failure to respect the encoding setting for some paths on Windows
  • Write inline member initializers as the init value
  • Write parameter default arguments as the init value
  • Language - Basic:
  • Fixed bug where some parameters loaded from dll files were written to the Understand database with null long names. This could result in a crash during parsing.
  • Fixed bug where the use of an integer literal as a prefix in a dotted name caused a syntax error.
  • Fixed syntax error on use of 'Out' as an identifier. Fixed syntax errors on some references to enumeration literals with names 'And' and 'Or'.
  • Fixed bug where the mscorlib.dll file information was purged from the database and rewritten on all refresh parses.
  • Language - C#:
  • Fixed bug where a '/' operator overload resulted in a null named entity in the database.
  • Fixed bug where the mscorlib.dll file information was purged from the database and rewritten on all refresh parses.
  • Languages - Ada, Fortran, Jovial, Web:
  • Fixed bug where some entities with non-alphanumeric names were created with null entity names in the database.

New in Understand 6.3 Build 1131 (Feb 1, 2023)

  • Editor:
  • Ensure that violations pop up within editor scroll area bounds
  • General:
  • Fix crash loading old databases
  • Fix crash on analysis when the database is locked by another process
  • Known Issues:
  • Cannot load nested classes with entity names containing “$” in Java
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block
  • Und batch mode requires the database explicitly set for each line

New in Understand 6.3 Build 1130 (Jan 25, 2023)

  • CodeCheck:
  • Fix crash on project close when a CodeCheck analysis is running
  • Fix failure to save Perl script options
  • Graphs:
  • Add a built-in variable tracker graph
  • User Tools:
  • Fix failure to recognize icon files.
  • Gix crash on user tools import dialog cancel
  • Fix crash after user tool import
  • Project Overview:
  • Update Project Overview Charts subtitles.
  • Language - C/C++ Fuzzy Parser:
  • Change fuzzy c analysis to treat static function and object definitions in included files as external
  • Language - C#:
  • Added IntPtr and UIntPtr stubs to the understand conf standard directory.
  • Language - Java:
  • Added 'synchronized' to the AdditionalKinds free text for synchronized methods.
  • 'Synchronized' now appears as part of the kind text in the Information Browser.
  • In control flow graphs, changed synchronized blocks from 'passive' nodes to 'java block begin' nodes with a corresponding 'java block end' and with 'synchronized...' as the node text.
  • Language - Web:
  • For Web/Typescript, fixed bug where 'any' and 'unknown' types on catch variables caused syntax errors.
  • Known Issues:
  • Cannot load nested classes with entity names containing “$” in Java
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1128 (Dec 15, 2022)

  • Annotations:
  • Annotations: Fix missing context menu entries when the annotation viewer is open
  • Language - C++ (Strict):
  • Fix failure to respect maximum file size setting
  • Language - Web:
  • 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.
  • Known Issues:
  • Web parser is not respecting excluded files when adding found srced files
  • Cannot load nested classes with entity names containing “$” in Java
  • Understand crashes after opening 25-30+ graphical views
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Understand freezes when opening a project with 100+ editor windows
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1127 (Dec 14, 2022)

  • Language - C#:
  • Fixed invalid syntax error in some relational patterns.
  • Fix invalid syntax errors on some nested static method definitions.
  • Language - C# & Visual Basic:
  • Fix potential crash loading .net dll files.

New in Understand 6.2 Build 1126 (Dec 1, 2022)

  • Metric:
  • Added these new metrics for these languages: Ada, Basic, C#, Java, Jovial, Pascal, Python, and Web languages (Javascript, Typescript, Php). 
  • CyclomaticStrictModified
  • AvgCyclomaticStrictModified 
  • SumCyclomaticStrictModified
  • MaxCyclomaticStrictModified
  • Editor:
  • Fix potential crash on editor reload
  • Interactive Reports:
  • Add ability to validate options to ireports
  • Language - Fortran:
  • Added CyclomaticStrict and CyclomaticStrictModified metrics to Fortran.

New in Understand 6.2 Build 1125 (Nov 21, 2022)

  • Editor:
  • Improve editor find interactivity in large files. If there are more than 1024 results, results will not be shown in the radar scroll bar.
  • Entity Filter:
  • Fix unexpected empty list when deleting filter text quickly with backspace
  • Python API:
  • Add Options.label method to Python API to match Perl API
  • Language - C#:
  • Fixed bug where references to enum types did not create 'couple' references.
  • Language - Web:
  • 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.
  • CodeCheck Checks:
  • 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
  • Known Issues:
  • Cannot load nested classes with entity names containing “$” in Java #2523
  • Graph legend: dashed lines aren't working #2522
  • Understand crashes after opening 25-30+ graphical views #2500
  • Can't use ent->draw() with the Perl API #2494
  • Incorrect control flow graph when simplify macro expansion is enabled #1998
  • 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

New in Understand 6.2 Build 1124 (Nov 1, 2022)

  • CodeCheck:
  • CodeCheck change ignored status to have precedence over excluded status
  • Update CodeCheck to correctly check for modified files and prompt the user to analyze before inspecting
  • Themes:
  • Windows dark mode fix disabled checkbox text
  • Language - C#:
  • 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

New in Understand 6.2 Build 1123 (Oct 25, 2022)

  • Command Line(Und):
  • Update Und CodeCheck report by table and report by file to show or not show excluded violations correctly when using -showexcluded.
  • Editor:
  • Fix crash after document rename
  • Help:
  • Update Understand help files and documentation
  • Language - C#:
  • 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.
  • Language - C++ (Strict):
  • 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
  • CodeCheck Checks:
  • C and C++:
  • CPP_V004: Fixed: False positives where check was flagging constexpr
  • CPP_PR000: Add check '#define and #undef shall not be used on a reserved identifier or reserved macro name'
  • Published Standards:
  • AUTOSAR
  • Fixed std terminate call detection in A15-5-3

New in Understand 6.2 Build 1122 (Oct 12, 2022)

  • Architectures:
  • 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.
  • Interactive Reports:
  • Ireport: Fix failure to restore the IReport window after analysis
  • Language - C#:
  • 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.
  • Language - Java:
  • Added line/column numbers to all cgraph nodes.
  • CodeCheck:
  • Add an option that allows Codecheck configurations to run in the background
  • CodeCheck Checks:
  • 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

New in Understand 6.2 Build 1121 (Oct 4, 2022)

  • Compilers:
  • IAR RL78 compiler: Add support for @ extension used with ## macro concatenation
  • Python:
  • 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.
  • Language - C#:
  • Added support for C# 11 raw strings and interpolated raw strings.
  • 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.
  • CodeCheck Checks:
  • 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
  • Known Issues:
  • Graph legend: dashed lines aren't working
  • CodeCheck result csv file showing results for more than just the specified files
  • Understand crashes after opening 25-30+ graphical views
  • Can't use ent->draw() with the Perl API
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Understand freezes when opening a project with 100+ editor windows
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1120 (Sep 30, 2022)

  • General:
  • Add a right click option, "Open with Understand", to Windows OS
  • Language - C#:
  • Made changes to support C# 11 list patterns
  • Language - C++ (Strict):
  • Fix worker process crash introduced in build 1118 when the option to create instance members is enabled
  • Language - Python:
  • a couple of syntax issues with f-strings
  • CodeCheck Checks:
  • Libraries
  • Fix crash in FileStatements.pm
  • Published Standards
  • MISRA C 2012 & MISRA_C 2004
  • 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

New in Understand 6.2 Build 1119 (Sep 19, 2022)

  • Editor:
  • Unexpected menu behavior when removing file from a project
  • Architecture:
  • Disable architecture rename from the metrics browser
  • Search:
  • Instant search: Report failure to create a wildcard query with too many clauses
  • Language - C#:
  • Fixed syntax error on some uses of 'await' as a variable name.
  • Fixed syntax error on attribute use on local function declarations.
  • CodeCheck Checks:
  • Published Standards:
  • AUTOSAR
  • M4-5-3: Added Perl version of M4-5-3
  • M6-5-4: Added safeguards against NoneType lexemes calling their methods leading to script errors on Mac
  • Known Issues:
  • Understand crashes after opening 25-30+ graphical views
  • Can't use ent->draw() with the Perl API
  • Strict Analysis doesn't start when using RHEL/Rocky 8.6
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Understand freezes when opening a project with 100+ editor windows
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1118 (Sep 14, 2022)

  • Architecture:
  • Fix crash when architectures are changed by an external process
  • Compilers:
  • Update compiler definition for IAR RL78 and enable for strict parser
  • Language - C#:
  • Fixed invalid syntax errors on some lambda expressions.
  • Language - C++ (Strict):
  • Add define references from member expression base objects to member instances
  • Language - Pascal/SQL:
  • Fixed crash on some unexpected sql syntax.
  • Known Issues:
  • Understand crashes after opening 25-30+ graphical views
  • Can't use ent->draw() with the Perl API
  • Strict Analysis doesn't start when using RHEL/Rocky 8.6
  • Incorrect control flow graph when simplify macro expansion is enabled
  • Understand freezes when opening a project with 100+ editor windows
  • Collapsed code no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1117 (Sep 8, 2022)

  • Architecture:
  • Fix crash on architecture browser search with empty architectures
  • Fix failure to wrap architecture browser reverse search when the last architecture is empty
  • General:
  • Add new graph "Shared Objects in Functions"
  • Language - C#:
  • Fixed several syntax error issues with tuples and patterns.
  • CodeCheck Checks:
  • Published Standards
  • AUTOSAR:
  • A18-5-7 - Autosar 18-5-7 Fix script error that can occur when no architecture name is given on the option text box.

New in Understand 6.2 Build 1110 (Jul 21, 2022)

  • Annotations:
  • Annotation Viewer Cards now fit the width of the Annotation Viewer
  • Mainwindow:
  • 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.
  • CodeCheck:
  • 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'
  • CodeCheck Checks:
  • 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"
  • Known Issues:
  • 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 no longer accessible when modifying first line of a collapsed block

New in Understand 6.2 Build 1108 (Jul 13, 2022)

  • Architecture Designer:
  • Fix crash that occurred while creating an architecture
  • Interactive Reports:
  • Fix regression in specifying default values for checkbox_horiz and checkbox_vert options in Perl scripts.
  • Project:
  • 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.
  • Themes:
  • Understand-dark theme: Fix the coloring for all the slide bars (vertical and horizontal) to be more visible.
  • Added dark mode to Metric Definitions.
  • Fix the default editor color in light mode for ADA variables.
  • Tools:
  • Added option to disable audible alerts.
  • Language - C#:
  • 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.
  • Language - C++ (Strict):
  • Add new entity and reference kinds for CUDA kernels.
  • Add references to CUDA kernel call config arguments.
  • CodeCheck:
  • Fix failure to start CodeCheck analysis when Perl graph windows are open
  • CodeCheck Checks:
  • 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_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.
  • 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"
  • JAVA_10: Add check "Use package names instead of prefixes on class identifiers"

New in Understand 6.1 Build 1107 (Jun 28, 2022)

  • Import:
  • Import: Fix failure to recognize MSVC style language standard flag in compile_commands.json and build watcher import
  • Interactive Reports:
  • Ireport: Fix sort order inconsistencies for Python IReports
  • Plugin: Fix crash on some Perl IReport plugins
  • Python API:
  • Plugin: Add the script directory to the module search path when loading Python plugin scripts
  • Settings:
  • Project: Recognize .cu (CUDA) files as C++ by default when using strict parser
  • Language - C#:
  • 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.
  • CodeCheck Checks:
  • 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:
  • CPP_EH000: Added new: Library objects shall not generate error messages directly
  • 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

New in Understand 6.1 Build 1106 (Jun 23, 2022)

  • CodeCheck:
  • Make ignores list portable
  • Fix Duplicate ID error not taking the focus
  • Speed up Recommended check for unreachable code
  • Fix crash when saving CodeCheck treemap as an image.
  • Editor:
  • Add edit actions for implicit calls to the editor context menu.
  • Examples:
  • Improve error message from sample project download when downloaded zip didn't save.
  • Graphs:
  • Add the ability to jump to control flow graph nodes from the editor right-click menu.
  • Change graph searches to center the current item.
  • Fix bug where changing levels in call/called by architecture graphs blocked edges crossing architectures.
  • Turn on graphs "Highlight edges on hover" by default and update the effect from an ugly green color to a stylish glow.
  • Add analysis errors and warnings categorization to Project Overview Charts.
  • Import:
  • Add beta support Keil UVision project import - please send us feedback on this.
  • Tools:
  • Fix a potential crash when running some Perl script user tools during the resolve.
  • Language - Java:
  • 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.
  • Attempt to run java to find the default java version for new databases.
  • Language - Web:
  • Made a change to not parse excluded css files when they are mentioned in a link tag.
  • For web/css, fixed bug where the tilde (~) combinator caused syntax errors unless delimited by spaces.
  • CodeCheck Checks:
  • Add 51 new C and C++ checks!!
  • SciTools' Recommended Checks
  • RECOMMENDED_03: Fixed script error

New in Understand 6.1 Build 1105 (Jun 11, 2022)

  • GENERAL:
  • Fixed Metrics Browser and Architecture metrics to show the correct metric values
  • GRAPHS:
  • Control flow graph context menus in styled source code use the entity under the cursor.
  • Add a compare variant for the UML Sequence Diagram.
  • PROJECT:
  • Change the color for errors in Analysis log as they were hard to read in dark mode.
  • Show the build watcher panel when C or C++ files are found
  • ARCHITECTURES:
  • Avoid syncing to the selection during incremental search in the Architecture Browser
  • IREPORT:
  • 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
  • INFORMATION BROWSER:
  • Remember refs list selection position in Information Browser history
  • PYTHON LANGUAGE:
  • 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.
  • Fixed bug where self.<attribute_name> assignments did not create attribute definitions if a type hint was included.
  • C# LANGUAGE:
  • Added modifiers not encoded in entity kinds to the AdditionalKind freetext for display as part of the entity kind in the Information Browser.
  • JAVA LANGUAGE:
  • Made changes to search algorithm for locating built in Java standard jar files.

New in Understand 6.1 Build 1103 (May 27, 2022)

  • GRAPHS:
  • Add the ability to create graph plugins from architectures to the Perl and Python APIs.
  • SEARCH:
  • Instant search - fix highlighting in editor to be case insensitive.
  • Instant search - fix search in string literals with whitespace escape sequences.
  • Replace in Files - Add "Skip Review" option to Replace In Files.
  • EDITOR:
  • 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.
  • COMPARE:
  • Add an "Add Git Repository" button to the new project wizard.
  • REFACTOR:
  • 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.
  • GENERAL:
  • Fix for drag & drop of a file into an unchecked split workspace that was opening in the checked workspace.
  • GIT HISTORY:
  • Add a commit selector allowing the user to navigate the git history easily.
  • BOOKMARKS:
  • Add the ability to delete Bookmark category
  • API:
  • Add ent.add_to_arch method to the perl and python APIs
  • Upython: Fix crash on ent.draw()
  • INTERACTIVE REPORT:
  • Fix failure to expand tabs in report text
  • ANALYSIS:
  • Fix crash on analysis for languages that write errors/warnings before starting an analysis phase
  • C/C++ FUZZY PARSER:
  • Fix for C/C++ fuzzy parser not showing 'missing includes'
  • C++ STRICT PARSER:
  • Fix regression in recording references to some constructor base initializers
  • PASCAL LANGUAGE:
  • Add cast, derive, dotref, handle, hasenvironment, implement and raise references to the Pascal References IB field

New in Understand 6.1 Build 1102 (May 10, 2022)

  • INFORMATION BROWSER:
  • Add implement, import and throw references to the Basic References IB field
  • IREPORT:
  • Fix regression in setting font foreground color in Perl reports
  • METRICS:
  • Remove implicit methods from LCOM metric calculation for c++
  • PROJECT LOCATOR:
  • Change the architecture column to include explicitly mapped non-file entities
  • PASCAL LANGUAGE:
  • 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.
  • JAVA LANGUAGE:
  • Changed references from type variables to types mentioned in constrains from 'implements' and 'extends' relations to 'use constrains'.
  • BASIC LANGUAGE:
  • Added 'use constrains' references for type names used as constraints on generic type parameters.
  • Fixed syntax error on some uses of the '<>' operator.

New in Understand 6.1 Build 1100 (Apr 28, 2022)

  • GRAPHS:
  • Graphics print dialog remember last settings.
  • Add vertical layout option to most tree graphs.
  • CHANGE:
  • Compare Entities sync entity selections and show entity context menus.
  • DOCUMENTATION:
  • Update documentation for Understand 6.2
  • C/C++ LANGUAGE:
  • Add support for MPLAB XC32 compiler
  • C# LANGUAGE:
  • Changed references from type variables to types mentioned in constraints from 'implements' and 'extends' relations to 'use constrains'.
  • JAVA LANGUAGE:
  • Und settings -javaversion allow values between 10 and 18 to map to "10-18" instead of causing an error.
  • WEB LANGUAGE:
  • Made change to allow processing files with .js ending as Typescript if .js is mapped to Typescipt in the File Types configuration.

New in Understand 6.1 Build 1099 (Apr 19, 2022)

  • DIFFVIEW:
  • Diff View wrap next/previous result.
  • COMPARE:
  • Fix crash on locate changed entities when an analyzed file no longer exists.
  • JAVA PARSER:
  • 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.
  • CODECHECK:
  • Fixed issues with UndCC_Entity, UndCC_EntityBegin and UndCC_EntityEnd when dealing with '*' as an argument.

New in Understand 6.1 Build 1098 (Apr 14, 2022)

  • GENERAL:
  • Update Qt to 6.2.4
  • CODECHECK:
  • Add 2 new AUTOSAR rules.
  • PYTHON :
  • Fix potential crash.
  • JAVA:
  • Fixed syntax error on some 'enum' declarations inside block statements.
  • 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.
  • 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.
  • WEBPAGES:
  • Update Welcome Page

New in Understand 6.1 Build 1096 (Feb 11, 2022)

  • CODECHECK:
  • Fix for TypeError in M6-4-4, MISRA08_6-4-4, CPP_C030, MISRA04_15.1, MISRA12_16.2
  • Add "ignore inactive code" option to RECOMMENDED_06, CPP_C025, HIS_03 MISRA04_14.4, A6-6-1, MISRA12_15.1
  • Add 4 new AUTOSAR checks
  • Add 7 new CPP checks
  • Add 3 new MISRA 2008 checks
  • Add 1 new MISRA 2004 check
  • Add 1 new MISRA 2012 check
  • INTERACTIVE GRAPHS:
  • Fix internal dependency graphs to show only internal dependencies (broken in last build).
  • Add "Show Node Children By Default" option to dependency graphs.
  • ADA LANGUAGE:
  • Add an option to Ada call graphs to hide standard library entities.
  • JAVA LANGUAGE:
  • Added support for Java records.
  • Fixed bug where type text did not include all nested generic formal parameters and array brackets.

New in Understand 6.1 Build 1095 (Jan 31, 2022)

  • CODECHECK:
  • Add 3 Autosar Rules to CodeCheck.
  • Add 1 new CPP CodeCheck.
  • EDITOR:
  • Restore editor scroll bar unsplit icons.
  • GRAPHS:
  • For architecture cluster graphs, other than the dependency graph, change "Show Edges Between Children Default" to default to true because having it false cuts off trees at internal edges.
  • Fix bug in cluster graphs where, given an edge A->B inside of a collapsed cluster, edges out of B were not shown.
  • C/C++ LANGUAGE STRICT PARSER:
  • Change the kind of destructor calls referenced from delete statements to 'implicit'.
  • Avoid creating virtual call references to qualified and trivially non-virtual calls.
  • Change the kind of constructor calls referenced from new statements without parentheses to remove the 'implicit' qualifier.
  • Fix inability to change the setting for 'Save comments associated with entities' in c++ strict parse mode.
  • WEB & JAVASCRIPT LANGUAGE:
  • Fixed invalid syntax error on some dynamic import expressions.
  • ADA LANGUAGE:
  • Treat Ada packages in cluster call/calledby trees as expandable.

New in Understand 6.1 Build 1094 (Jan 27, 2022)

  • GENERAL:
  • Delete icon missing from first page of new project wizard.
  • GRAPHS:
  • Fix regression in showing all graph variants in the popup menu
  • CODECHECK:
  • Add 38 CPP CodeChecks.
  • Add 1 MISRA 2008 CodeCheck.
  • Add 10 AUTOSAR CodeChecks.
  • JAVA API:
  • Add the following functions to the Java API:
  • Reference::kind()
  • Ent::parent()
  • Ent::depends()
  • Ent::dependsby()
  • Ent::ents()
  • Reference::isforward()
  • Ent::filerefs()
  • REFACTOR
  • Update wording on refactor "failed to rename result(s)" and fix case when two references at the same location caused one to appear failed.
  • Fix refactor rename bug where a second rename operation (without reparsing) would fail on any lines right after lines affected by the first rename operation.
  • COMMANDLINE:
  • Add switches to several und commands:
  • For the metrics command, add a -summary switch to print summary count metrics to standard out.
  • For the analyze command, add -errors, -warnings, and -accuracy to change what's output to standard out.
  • For the add and remove commands, add an -analzyelater switch to import files to skip the automatic analysis of changes.
  • STRICT C/C++:
  • Avoid creating a "typed" reference to the base class in constructor base class initializers.
  • Fix failure to decode files containing a BOM.

New in Understand 6.1 Build 1093 (Jan 18, 2022)

  • CODECHECK:
  • Add 15 AUTOSAR checks
  • Add 1 MISRA04 check
  • Add 4 MISRA08 checks
  • Add 2 MISRA12 checks
  • Add 6 CPP checks
  • Fixed a bug in MISRA08_6-5-4
  • IMPORT:
  • Fix bug where max file size parsed limit was applied to import files preventing large compile_commands.json files from being used.
  • HELP:
  • Update documentation for Understand 6.1 release
  • C# PARSER:
  • Added support for C# 10 lambda syntax changes.
  • Fixed bug where line count metrics were sometimes incorrect for classes and files.
  • PASCAL/DELPHI :
  • Fixed error parsing 'helper for' clauses that use a dotted name to reference the targeted type

New in Understand 6.1 Build 1092 (Jan 10, 2022)

  • ARCHITECTURES :
  • Fix regression in dragging and dropping from the entity filter into the Architecture Browser.
  • Fix failure to import architectures from XML files with Windows (CRLF) line endings.
  • CODECHECK:
  • Added 18 CodeChecks to the AUTOSAR standard.
  • Fixed name for AUTOSAR A0-1-1
  • Fixed typo in RECOMMENDED_09
  • Fixed RECOMMENDED_02 that should be looking at ADA files but were not.
  • GRAPHS:
  • Scale graph png/jpg exports that are too big instead of clipping them.
  • Add Comparison Treemaps Graph
  • REFACTOR:
  • Refactor/ rename feature now shows locations that failed to replace in search results window.
  • UND:
  • Add the ability to create databases for a git commit to und.
  • WELCOME PAGE:
  • Added the ability to pin projects on the welcome page.
  • Fixed a bug with the welcome page search results being lost on project open.
  • Added an option to disable chat.
  • Fix for welcome page tooltips when multiple projects have the same name.
  • Hide open source projects when sample projects are hidden.
  • C/C++ STRICT PARSER:
  • Improve Git Comparison project handling of directories that exist only in Git.
  • Show improved Information Browser info about entities from static definitions in include files.
  • C# PARSER:
  • Fixed bug where references to property names in some property subpatterns were not recorded.
  • Added support for C# 10 field references within a property pattern.
  • Added support for C# 10 'global using' directives.
  • Fixed bug where 'using static' of an enumeration type did not allow non-qualified references to the enumeration constants.
  • Added support for C# 10 'record struct', 'record class', and with expressions.
  • PASCAL/DELPHI PARSER:
  • Added 'const param' kind and 'use' references for named parameter association.

New in Understand 6.1 Build 1091 (Dec 21, 2021)

  • GENERAL:
  • Fix regression in detecting Perl scripts from the "Run Command" prompt.
  • Fix regression in remembering the most recently selected entity filter
  • CODECHECK:
  • Add 12 AUTOSAR checks.
  • Fix for Scitools recommended checks 'file too long', 'function too long', and 'overly complex function' not working with Java projects.
  • EDITOR:
  • Fix missing modification indicator in captured windows.
  • C# PARSER:
  • Added Exception Catch and Throw relations.
  • PASCAL:
  • Improve pascal parameter display in Information Browser and hover text.
  • For Pascal/Delphi, changed kind of call relation for failed overload resolution from 'ambiguous call' to 'possible call' to match terminology in other languages.
  • VISUAL BASIC:
  • Changed the 'base' relation to 'implicit base' on relations where the parent/base class is not explicitly specified.
  • Added 'exception catch' reference.

New in Understand 6.1 Build 1090 (Dec 10, 2021)

  • COMPARE:
  • Add a Comparison Projects panel to manage multiple comparison projects.
  • Add the ability to create comparison projects directly from your git repository.
  • Detect modified files in submodules in the CodeCheck git file filter.
  • INSTALLER:
  • Reenable the Java API.
  • CODECHECK:
  • Added 15 AUTOSAR checks.
  • GRAPHS:
  • Update control flow node kinds. Perl and Python API scripts may require updating.
  • WEB LANGUAGE:
  • Add support for web "possible call & callby" relations in the IB and classic graphs.
  • PASCAL LANGUAGE:
  • Changed non-resolved overload references to be ambiguous calls to 'unknown ambiguous' functions instead of calls to the first overload.

New in Understand 6.1 Build 1089 (Nov 30, 2021)

  • GENERAL:
  • Fix entity filter context menu popping up at the wrong location.
  • Editor: Fix error dialog loop after canceling print to file on Windows.
  • GRAPHS:
  • Removed 'passive implicit' nodes from control flow graphs.
  • Fix Data Members Simplified graph variant not expanding some typedefs.
  • For Python, fixed error in control flow graphs for while statements with 'else' parts.
  • CODECHECK:
  • Added 13 AUTOSAR checks.
  • PASCAL PARSER:
  • For Delphi, fixed bug where an overload link was not made from a method in a child class to an overloaded method in the parent class unless the method in the parent class had an 'overload' attribute.
  • STRICT PARSER:
  • Fix severe performance issue when using compiler configuration files.

New in Understand 6.1 Build 1088 (Nov 16, 2021)

  • ENTITY FILTER:
  • Fix regression in showing the context menu for entities in the entity filter.
  • IMPORT PROJECT:
  • Fix long option parsing issue in compile_commands.json import
  • Accept --include_path, --define and --preinclude flags as synonyms for -I, -D and -include respectively in compile_command.json import
  • CODECHECK:
  • Added 11 AUTOSAR checks.
  • STRICT C/C++ PARSER:
  • Fix invalid resolve for types in anonymous namespaces
  • PYTHON PARSER:
  • Fixed problems with class pattern attribute name matching in Python 3.10 match statements.
  • Fixed incorrect control flow graph and complexity metrics for match statements without default cases.
  • Fixed syntax error on some uses of '/' in lambda argument lists.
  • Fixed invalid syntax error on some match statements.

New in Understand 6.1 Build 1087 (Nov 10, 2021)

  • GENERAL:
  • Remove support for the Java API and Ecplise plugin since neither has been updated in some time
  • Fix potential deadlock when canceling an analysis that's nearly finished
  • IMPORT:
  • Fix long option parsing issue in compile_commands.json import
  • DIFF:
  • Fix diff view binary check to handle multibyte characters
  • CODECHECK:
  • Add 12 new AUTOSAR checks
  • Fixed error message for AUTOSAR M5-2-2
  • Sped up autosar m5-0-3
  • PYTHON PARSER:
  • Added support for some of the new Python 3.10 match statement syntax

New in Understand 6.1 Build 1086 (Nov 5, 2021)

  • DEPENDENCY BROWSER:
  • Allow viewing all references instead of only dependent references for any non-file entity.
  • Don't show references in the left-hand tree.
  • Remove the configuration panel and move options into the toolbar and hamburger menu. Available grouping options have changed.
  • Add a "Direct" grouping for direct references.
  • CODECHECK:
  • Added 13 more AUTOSAR checks.
  • INTERACTIVE GRAPHS:
  • UML Class Diagram truncates member object values at 128 characters to prevent crashes caused by labels that were too long.
  • ENTITY FILTER:
  • Convert unused object reports into entity filters.
  • DIFFVIEW:
  • Show message when contents are binary.
  • SEARCH:
  • Instant Search Results and Find in Files Results are both shown in the same Results window.
  • Find in Files Results Options are supported for Instant Search Results.
  • STRICT C/C++ PARSER:
  • Fix member object references to the wrong instance.
  • VISUAL BASIC:
  • Fixed syntax error on some 'for each' statements.
  • PYTHON PARSER:
  • Made changes to support some new Python syntax in return, yield, and with statements.
  • Fixed parser errors on some new f-string and with statement syntax.
  • Added support for Python 3.9 decorators using expressions.

New in Understand 6.1 Build 1085 (Oct 26, 2021)

  • CODECHECK:
  • Added seven AUTOSAR checks.
  • REPORTS:
  • Fix 'Unused Program Units' report for strict c to include unused operators and unused overloaded functions.
  • C/C++ PARSER:
  • Fix crash when fuzzy parser attempts to modify a sample project.
  • FORTRAN PARSER:
  • Add support for comment collection in Fortran source files.
  • PYTHON PARSER:
  • Fixed bug where methods with setter, getter, and deleter decorators were listed as possible declarations for ambiguous references to the same named propery.
  • Fixed bug where methods decorated with staticmethod were not identified as static in the entity kind.
  • Add support for comment collection in Python source files.

New in Understand 6.1 Build 1083 (Oct 15, 2021)

  • GRAPHS:
  • Fix dot export of the control flow graph from the api truncating text after less than signs.
  • Add a control flow graph interface to the Perl & Python API's.
  • CODECHECK:
  • Added six more AUTOSAR checks.
  • ADA:
  • Fixed bug where the control flow graph was incorrect when a 'goto' target was a label on a loop statement.
  • PYTHON:
  • Added 'typed' relations and type text for type hints.
  • WEB LANGUAGES:
  • For Web/Typescript, fixed syntax error on some arrow functions where the return type has generic parameters.
  • For Web/Typescript, fixed syntax error on use of 'get' and 'set' as class property names.
  • For Web/Typescript, fixed syntax error on tagged function calls where the called function has generic parameters.

New in Understand 6.1 Build 1080 (Sep 30, 2021)

  • CODECHECK:
  • Added 5 more AUTOSAR checks.
  • ARCHITECTURE:
  • Fix potential crash when one of the project definition files is changed on disk during analysis.
  • Add architecture import/export to the architecture browser context menu button.
  • BASIC:
  • Fixed bug where use of MyBase to call an overloaded virtual method resulted in a virtual call instead of a non-virtual call.
  • FORTRAN:
  • Fixed bug where some uses of character literals in macro expansions caused syntax errors.
  • Fixed bug causing syntax errors in some select-type statements.
  • STRICT PARSER:
  • Disable C++ operator name keywords in MSVC emulation mode.

New in Understand 6.1 Build 1079 (Sep 22, 2021)

  • BUILD:
  • Update minor version number to 6.1
  • Update Qt to 5.15.2
  • Update OpenSSL to 1.1.1k
  • Update Python to 3.96
  • GENERAL:
  • Users that need software rendered graphics can choose to bypass their video card by setting the environment variable QT_OPENGL=software.
  • CODECHECK:
  • Added ~100 AUTOSAR checks and adding more every week.
  • Fix Codecheck Ignores and configuration not being preserved after upgrade
  • SEARCH:
  • Fixed EntityFilter and EntityLocator to include parameter text when sorting names.
  • Fixed EntityLocator to display parameter or other format options immediately when changed on a non-sorted column.
  • VISUALSTUDIO:
  • Change visual studio import msbuild search to use all lowercase instead of MSBuild.
  • EDITOR:
  • Fix rich text background color issue when in dark mode.
  • ARCHITECTURES:
  • Fix crash on some drag and drop operations within the architecture browser.
  • Fix crash and failure to duplicate empty architectures.
  • GRAPHS:
  • Added Graph Window toolbar visibility controls under Tools->Options->Graphs, similar to the editor toolbar options.
  • Fix context menu for the classic Compare Butterfly graph.
  • Added graph variants resulting in a lot more graphs. Simplified, cluster, compare, and relationship versions for tree-like graphs. More Butterfly Graphs. More relations supported as cluster graphs from architectures and files.
  • Simpler butterfly graph edge indicators.
  • Updated Architecture Graph.
  • Rich text labels available in more graphs.
  • Annotations in labels instead of only in hover text for most graphs.
  • Graph undo/redo handles many more features.
  • Graph positioning (artistic style).
  • Minimap click navigation.
  • PROJECT BROWSER:
  • Fix crash on search in the project browser after it has been closed and reopened.
  • BASIC/ VISUAL BASIC:
  • For Basic, Fixed bug where the override relation for an overriding method went to the first parent method that was explicitly declared with the ‘Overridable’ attribute instead of to the direct parent method.
  • For Basic, Improve handling of override information in Calls, CalledBy, Overrides, OverriddenBy and References in the Information Browser fields.
  • For Visual Basic, fixed bug where some virtual function calls were recorded as non-virtual.
  • For Visual Basic, fixed bug where calls using MyBase were sometimes recorded as ‘virtual’ calls.
  • For Visual Basic, fixed bug where virtual calls that were forward references were recorded as non virtual.
  • C++:
  • Improve handling of override information in Calls, CalledBy, Overrides, OverriddenBy and References in the Information Browser fields.
  • C#:
  • Improve handling of override information in Calls, CalledBy, Overrides, OverriddenBy and References in the Information Browser fields.
  • FORTRAN:
  • Added virtual routine kinds, virtual calls, and override relations to handle type-bound procedures.
  • Fixed bug where invocations using multi-level parent type references (e.g. obj%parent1%parent2.meth) were not being processed correctly.
  • Fixed bug where including a file that contains a module definition resulted in ‘unresolved’ entities.
  • Add support for Fortran override handling in Information Browser.
  • JAVA:
  • Improve handling of override information in Calls, CalledBy, Overrides, OverriddenBy and References in the Information Browser fields.
  • PASCAL:
  • Improve handling of override information in Calls, CalledBy, Overrides, OverriddenBy and References in the Information Browser fields.
  • Fix call/calledby Information Browser fields for Pascal virtual calls.
  • Fixed syntax errors on binary literals that contain quotes (e.g. B’0101’).
  • Fixed bug where some calls between Pascal and C were not recorded.
  • Fixed bug in Compaq/OpenVMS Pascal where same named entities in different modules had combined references.
  • Fixed parser hang on some Compaq/OpenVMS pascal include files.
  • Fixed bug where some entities defined in Compaq/OpenVMS pascal include files were unresolved.
  • Fixed project configuration option for Pascal Linkage Prepend Text not being properly saved to the project.
  • PYTHON:
  • Fixed bug where ‘Assume nearest matches’ option did not consider import statements that occurred inside of functions. Also, fixed some symbol lookup issues where a local variable was given the same name as an imported module.
  • Added overrides/overriddenby relations for methods.
  • STRICT C/C++:
  • Change the qualified name of fields of anonymous structs to include the qualified name of the struct
  • Fix failure to add entities for multiple local variables declared in a single statement inside of lambda functions
  • Fix the declaration reference kind of non-trivial constructors declared default.
  • Change the name of anonymous records with an associated typedef to the name of the typedef.
  • WEB:
  • For Javascript, added overrides/overriddenby relations for methods.

New in Understand 6.0 Build 1077 (Aug 11, 2021)

  • GENERAL:
  • Fix analysis abort which could have left the app unstable.
  • Dependency Browser csv export respect “Depends On” versus “Depended On By” setting.
  • If caret line highlight is on, always show it in the Previewer regardless of focus.
  • C/C++:
  • Don’t include c/c++ macros in dependencies because they are often multiply defined which results in lots of false positives.
  • Fix “Inherits” dependency filter for C.
  • C#:
  • Fixed bug where some virtual methods in multilevel inheritance classes were not identified as virtual and overriding methods for them were not shown on the call graph.
  • Fix C# Information Browser Calls field to show virtual calls from multiply derived subclasses.
  • ADA:
  • Fixed bug where some exported entities created duplicate copies.
  • Fixed bug that could cause a crash when the same file was included using different relative paths.
  • Fix IB References field for a multi-language ADA object.
  • PASCAL/DELPHI:
  • Fixed bug that could cause a crash when the same file was included using different relative paths.
  • Fixed bug where use of array as a type parameter caused a syntax error.
  • FORTRAN:
  • Fixed bug where the use of an ‘INTERFACE TO’ statement to specify the name of an external subprogram caused syntax errors in free format files.

New in Understand 6.0 Build 1076 (Aug 6, 2021)

  • ADA:
  • Fixed bug where some calls between C and Ada were not recorded.
  • FORTRAN PARSER:
  • Fixed bug where some calls to C functions were not recognized.

New in Understand 5.1 Build 1029 (Jul 17, 2020)

  • INTERACTIVE GRAPHS:
  • Control Flow Graph fix for flow when Passive option is turned off
  • STRICT PARSER:
  • Fix worker process crash on code with deeply nested brackets on Windows

New in Understand 5.1 Build 1028 (Jul 15, 2020)

  • GENERAL:
  • Update fastgrep sample project to analyze without errors on strict parser
  • INSTALLER:
  • Have the Windows installer prompt to close Understand if it is running.

New in Understand 5.1 Build 1027 (Jun 26, 2020)

  • GENERAL:
  • Fix possible crash on tab drag with the explorer open.
  • JAVA PARSER:
  • Fixed bug where overrides relation was sometimes not created when method parameter types were unknown.

New in Understand 5.1 Build 1022 (Apr 12, 2020)

  • Added metric Codechecks for CountClassCoupled, CountPackageCoupled and MaxInheritanceTree.
  • Added percentLackOfCohesion to Codecheck metrics.

New in Understand 5.1 Build 1020 (Apr 3, 2020)

  • GENERAL:
  • Fix metric definition not showing on Linux (again).
  • Fix potential crash during project creation.
  • REPORTS:
  • Fixed bug where the Unused Program Unit and Unused Objects and Functions reports for multi language projects that included C++ did not contain entities from non-C++ files.
  • Fixed bug in Unused Program Unit report where Ada subroutines instantiated from generic packages were listed as unused if they were only referenced using the ‘Access’ attribute.

New in Understand 5.1 Build 1018 (Mar 16, 2020)

  • ADA PARSER:
  • An empty control flow graph is no longer created for packages without initalization code. Essential complexity and path counts for these packages are now 0 instead of 1.
  • Changed cyclomatic complexity of instantiated generic subprograms from 1 to 0. 'If', 'For loop', and 'Case' expressions now add to complexity metrics.
  • ASSEMBLY PARSER:
  • For Coldfire 68K assembly, fixed bug where some valid 'include' commands caused unable to open file warnings.
  • CODECHECK:
  • Fix bug in MISRA 2012 rule 20.2 where certain header file names weren't being recognized.
  • COMMANDLINE:
  • Added support to und add command for -exclude for visual studios projects.
  • ECLIPSE:
  • Increment Eclipse plugin to 1.1.5 – the eclipse plugin installer should work again.
  • GRAPHS:
  • Enable UML sequence diagram for more Python entities
  • PASCAL PARSER:
  • Fixed bug where the complexity for case statements without an otherwise branch was one more than it should have been.
  • Fixed bug where try-finally statements were shown incorrectly on control flow graphs.
  • PYTHON PARSER:
  • Fixed bug where the 'if-else' ternary operator was not counted toward cyclomatic complexity.
  • Fixed bug where 'and' and 'or' operators were not counted in strict complexity.
  • WEB PARSER:
  • For Web/Javascript, fixed bug where some nested template literals caused syntax errors.
  • For Web/Php, fixed bug where complexity was incorrect for some switch statements.
  • For Web/Php, fixed bug where control flow graphs were incorrect for some switch statements (this could also result in incorrect values for path counts and essential complexity).
  • For Web/Php, fixed bug where 'and' and 'or' operators were not identified as 'short circuit operators' and so were not counted in strict complexity.

New in Understand 5.1 Build 1017 (Mar 16, 2020)

  • GRAPHS:
  • Fix issue in Control Flow Graph with styled labels that occured when mixing tabs and spaces in internal white space.
  • Add a passive option to the control flow graph to control the display of passive nodes. Passive is on by default.
  • For the control flow graph, add "Decision only" value to the "Show Source Code" option.
  • IREPORT:
  • Allow a filename instead of a file entity for the upl api sync method on graphviz nodes and edges.
  • JOVIAL:
  • Added average essential complexity and average strict complexity metrics for files. Added statement count and complexity metrics for main program units.
  • Fixed bug where no control flow graph was available for subroutines included from another file.
  • PROJECT:
  • Added search functionality to the analysis log window.
  • STRICT PARSER:
  • Fix warning message with c++ strict analyzer error count appearing twice when analysis is aborted.

New in Understand 5.1 Build 1016 (Feb 16, 2020)

  • COMMANDLINE:
  • Fixed bug in und where setting multiple settings to the same value in one command was not working.
  • Changed und so that on a crash it outputs a message to stderr instead of launching the gui asking users to email the file.
  • GENERAL:
  • Fix where changing the project Java version did not cause a reparse.
  • WEB PARSER:
  • For Web Php, fixed bug where statement counts for 'trait' and 'interface' entities were sometimes incorrect.
  • For Web Javascript, made change to increment both CountStmtExe and CountStmtDecl for statements that are both declarative and executable (declarations that have invocations in the intialization expression). CountStmt is no longer the sum of CountStmtExe and CountStmtDecl. It is now counted separately to avoid double counting statements that are both declarative and executable.

New in Understand 5.1 Build 1015 (Feb 10, 2020)

  • GRAPHS:
  • In the Control Flow Graph, allow comments to be shown even when source code is not shown.
  • WEB PARSER:
  • Added new SumStmt metrics that provide statement counts that do include nested functions.
  • Fix mismatch headers in metric definition documentation
  • Changed CountStmt metrics to be consistent with c++ values in that statement counts from nested functions are not included in the count for the enclosing context.
  • Fixed bug where metrics were not being generated for some Typescript entities.

New in Understand 5.1 Build 1014 (Feb 3, 2020)

  • METRICS:
  • Rewrite metric definitions page with improved descriptions and layout.
  • NEW PROJECT WIZARD:
  • Enable build watching on Windows and Linux machines when creating a new project to improve the overall project analysis.

New in Understand 5.1 Build 1013 (Jan 28, 2020)

  • GENERAL:
  • Remove Strict and Fuzzy option from New Project Wizard and always default to use the Strict Parser.
  • Remove debug option from toolbar menu.

New in Understand 5.1 Build 1012 (Jan 19, 2020)

  • BASIC PARSER:
  • For Basic metrics, fixed bug where ORELSE and ANDALSO were not adding to the strict complexity. Fixed bug where the conditional IF expression was not adding to complexity.
  • PASCAL PARSER:
  • Removed duplicate missing unit messages.
  • PYTHON PARSER:
  • Fixed bug where some uses of namespaced packages resulted in unknown entities.
  • WEB PARSER:
  • For web/html, fixed bug where some href links using relative file names did not locate the named file or fragment.

New in Understand 5.1 Build 1011 (Jan 13, 2020)

  • BASIC PARSER:
  • For Basic metrics, fixed bug where ORELSE and ANDALSO were not adding to the strict complexity. Fixed bug where the conditional IF expression was not adding to complexity.
  • PASCAL PARSER:
  • Removed duplicate missing unit messages.
  • PYTHON PARSER:
  • Fixed bug where some uses of namespaced packages resulted in unknown entities.
  • WEB PARSER:
  • For web/html, fixed bug where some href links using relative file names did not locate the named file or fragment.

New in Understand 5.1 Build 1010 (Jan 5, 2020)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 13.3, MISRA 2008 rule 5-2-12, MISRA 2004 rule 12.13, and All check script IncrementDecrimentStandalone.upl where an increment or decrement operator performed on a member variable wasn't handled correctly.
  • STRICT PARSER:
  • Fix failure to apply compiler transformations to files with Windows style line endings (CRLF).
  • WEB PARSER:
  • For Web Php, fixed bug where protected and private class constants were classified as public.
  • For Web Php, added a collection of class metrics providing counts of base and derived classes, and counts of declared methods and variables.
  • For Web Javascipt and Typescript, added class metrics providing counts of declared methods and variables. For Reports, added Class Metrics and Class OO Metrics reports for Javascript and Php.

New in Understand 5.1 Build 1008 (Dec 9, 2019)

  • REPORTS:
  • Add tree view to the HTML report Index.
  • STRICT PARSER:
  • Add support for Diab compiler in strict c++ analyzer.
  • WEB PARSER:
  • For Javascript, removed 'type' text for properties since multiple property definitions may be combined into one database entity.
  • For Web/Javascript, added option to control whether or not imported files are added to the project.

New in Understand 5.1 Build 1007 (Nov 18, 2019)

  • C SHARP:
  • Added support for class forwarding in dll files.
  • STRICT PARSER:
  • Look through implicit copy constructor calls for argument to parameter assign refs.

New in Understand 5.1 Build 1006 (Nov 10, 2019)

  • INSTALLER:
  • Notarize install dmg for macOS Catalina.

New in Understand 5.1 Build 1005 (Nov 10, 2019)

  • C# PARSER:
  • Fixed a parser hang on some invalid syntax.
  • Fixed bug where c# extern methods appeared with 'define' references instead of 'declare' references.
  • CODECHECK:
  • Fix bug in HIS rule 11 where the script would crash if the lexer failed to initialize.
  • Fix bug in unreachableCode.upl that prevented the script from running on VHDL code.
  • GRAPHS:
  • Attempt to preserve the source order of calls expanded from macros in the UML Sequence Diagram.
  • PYTHON PARSER:
  • Fixed parser crash on some invalid syntax.

New in Understand 5.1 Build 1004 (Oct 29, 2019)

  • C# PARSER:
  • Fixed parser hang on some syntax errors.
  • GENERAL:
  • Add option to launch Understand after finishing installation on Windows.
  • JAVA PARSER:
  • Fixed parser hang on some syntax errors.

New in Understand 5.1 Build 1003 (Oct 15, 2019)

  • LICENSING:
  • Fixed an issue with node lock license not properly handling dashes
  • WEB PARSER:
  • Fixed some issues with destructuring assignments in Javascript.

New in Understand 5.1 Build 1002 (Oct 6, 2019)

  • GENERAL:
  • Updated the New Project Wizard to improve the scan time for project files.
  • Stop the Windows Play Store from opening if Python is not installed when opening the Project Configuration dialog.
  • STRICT PARSER:
  • Changed cyclomatic complexity count to include catch statements to be consistent with fuzzy parser.
  • WEB PARSER:
  • Fixed some invalid Javascript syntax errors.

New in Understand 5.1 Build 1001 (Sep 28, 2019)

  • CODECHECK:
  • Fixed an issue with exporting CodeCheck results to HTML.
  • REPORTS:
  • Updated the HTML Report Index page to pay attention to the "Group File Reports by Directory Structure" setting in the project config and group by directory when selected (otherwise it will be a flat list as it is currently).
  • WEB PARSER:
  • Fixed invalid syntax errors parsing some html comments in javascript, catch parameters using object binding patterns, and 'for await' statements.
  • Fixed several invalid Javascript syntax errors. Fixed bug where predefined objects were not recognized in 'new' expressions.

New in Understand 5.1 Build 999 (Sep 8, 2019)

  • COMPILERS:
  • Add support for Renesas RL78 compiler extension for bit access syntax.
  • JAVA PARSER:
  • Fixed crash on some invalid syntax.
  • PASCAL PARSER:
  • Fixed crash parsing some sql statements.
  • REPORTS:
  • Fixed an issue where the html report index page was not being generated correctly.
  • Fixed an errant HtmlExporter crash.
  • UND COMMANDLINE:
  • Added Visual Studio and CMake one time import option to Und. "-onetime"

New in Understand 5.1 Build 998 (Sep 3, 2019)

  • CODECHECK:
  • Updated the CodeCheck html export to include the Ignored and Notes column.
  • FUZZY PARSER:
  • Improve handling of files with very large initialization blocks.
  • GENERAL:
  • Fixed an issue found in searching for Missing Includes in the Project Config.
  • PASCAL PARSER:
  • Fixed syntax error on TryAsType calls.
  • Fixed bug where Delphi preprocessor 'if' statements extending over more than one line were not evaluated correctly.
  • REPORTS:
  • The Group File Reports by Directory option groups the files in the File Contents report and the Include File Cross Reference report by Directories. The File Metrics and the File Average Metrics reports have been updated to respect the Display Full Filenames in the Report – Advanced Options.
  • STRICT PARSER:
  • Fix inactive range regression to not include the final #endif/#else.

New in Understand 5.1 Build 997 (Aug 16, 2019)

  • C# PARSER:
  • Added a 'use attribute' reference kind to link classes, methods, and other entities to the attribute classes appearing in the declarations. These references used to be plain 'use' references and linked the containing context instead of the entity the attribute was applied to. Moving the reference to the correct context does in some cases change the 'couple' metric for classes with attributes.
  • Fixed an issue where C# was not showing the parameters on the IB methods correctly.
  • Fixed an issue where C# was not showing the parameters in the UML Class Diagram correctly.
  • Moved all references in attribute tags to the declaration they are associated with instead of the enclosing context.
  • GENERAL:
  • Updated Und to allow for .vbproj file to be added to an Understand project.
  • PASCAL PARSER:
  • Removed "Pascal Predefined Variables" from the IB.
  • PROJECT:
  • Updated CMake excludes to allow for a better user interaction while adding/editing/removing excludes for filenames as well as directories.

New in Understand 5.1 Build 995 (Aug 10, 2019)

  • PYTHON API:
  • Add kind comparison and hash functions
  • SETTINGS:
  • Updated the Visual Studio excludes to allow for better user interaction while adding/editing/removing excludes. Fixed the Editor Companion Popup to allow space for potential scrollbars.

New in Understand 5.1 Build 994 (Aug 10, 2019)

  • C#:
  • Fixed bug where curly braces used inside interplolated strings caused syntax errors.
  • Fixed syntax errors in some cases of nested interpolated strings.
  • C++ (STRICT):
  • Write ‘Begin’ reference at the start of the ‘template’ keyword for templated decls
  • Fix regression in the reference kind of arguments to C++ operator overloads
  • Avoid resolving anonymous namespaces together
  • FORTRAN:
  • Possible fix for crash generating fortran extensions list report
  • Fixed bug where custom truncate column was not correctly applied in parsing.
  • INSTANT SEARCH:
  • Fix possible crash after resolve
  • GENERAL:
  • Fixed an issue with the Window Selector not allowing the first click to select a window.

New in Understand 5.1 Build 993 (Jul 25, 2019)

  • REPORTS:
  • Fixed an issue where Und Reports were not being created in the correct location.
  • JAVA_API:
  • Add `Entity.comments` method to get comments associated with an entity.

New in Understand 5.1 Build 992 (Jul 25, 2019)

  • GENERAL:
  • Fixed an issue where View->Project Browser and View->Entity Filter were not becoming active if already showing but in an inactive tab.
  • Fixed an issue where the reports created by Und and Understand were not synced.
  • Fixed an issue with generating a report from the command line.
  • STRICT PARSER:
  • Add preliminary support for MPLAB C18 compiler in strict analyzer.
  • ARCHITECTURES:
  • Fix possible crash on architecture delete.

New in Understand 5.1 Build 991 (Jul 8, 2019)

  • LICENSING:
  • Fixed an issue where traveling across timezones sometimes reports a bad offline license.
  • PASCAL PARSER:
  • For Pascal/Delphi, fixed bug where ‘result: unsafe’ compiler attribute caused a syntax error.
  • STRICT PARSER:
  • Fix failure to record macro expansion text
  • Avoid setting MSVC version by default so that it can be set by the environment

New in Understand 5.1 Build 989 (Jun 5, 2019)

  • ARCHITECTURES:
  • Fix possible crash on architecture delete.
  • CODECHECK:
  • Fix failure to visit source by double-clicking on some violations.
  • COMPARE:
  • Fix regression in hiding the resolve progress indicator after opening a comparison database.
  • EDITOR:
  • Fix occasional stuck drag operation on macOS.
  • FORTRAN:
  • Fix import of filenames from Fortran Visual Studio projects.
  • GENERAL:
  • Added search capablilties to the Project Configuration options menu.
  • Added search capabililities to the Understand Settings menu.
  • Added a more robust New Project Wizard.
  • GRAPHS:
  • Added Funciton Pointer call support on UML Sequence Diagram.
  • IREPORT:
  • API info metric definitions added on text hover.
  • JAVA PARSER:
  • Added a new CountClassCoupledModified metric for C#, Basic, Python, Pascal, and Java. This is the CountClassCoupled metric modified to exclude couples to standard library classes.
  • KEYBINDINGS:
  • Fixed keybinding issue where the primary and alternate sequences were dissapearing after switching to Visual Studio.net or Emacs in Japanese.
  • PROJECT:
  • Avoid converting mapped network drive paths to UNC paths on Windows.
  • STRICT PARSER:
  • Add missing references to template template parameters.
  • Fix worker process crash on some files when the encoding option is set to a non-default value
  • Give template template parameters their own kind.

New in Understand 5.1 Build 987 (Apr 29, 2019)

  • For C#, Visual Basic, Pascal, and Java metrics, added a new PercentLackOfCohesionModified metric that does not penalize the use of accessor functions/methods within a class to set/read variables. The purpose of the metric is to give a lower value than the regular PercentLackOfCohesion metric when accessor methods are used inside of a class to access variables defined in that class.
  • For Java metrics, removed PercentLackOfCohesion metric for enum types. Changed PercentLackOfCohension metrics to exclude constants (static final variables) from the variable count.

New in Understand 5.1 Build 986 (Apr 22, 2019)

  • FORTRAN PARSER:
  • Fixed bug where some forward references of subroutines resulted in 'unresolved' entities.
  • Fixed error where some 'external' routine declarations created unresolved subroutines.
  • Fixed error where local names for use-only items were sometimes identifed as unresolved functions.
  • GENERAL:
  • Fix occasional QMutex threading error when exiting und

New in Understand 5.1 Build 984 (Apr 15, 2019)

  • C# PARSER:
  • Fixed parser hang on some self-referential generic type instantiations.
  • Fixed several bugs where valid code produced syntax errors.
  • GRAPHS:
  • Fixed an issue where Graphs were not displaying the option to export to .Dot files on Mac and Linux for appropriate graph types.

New in Understand 5.1 Build 983 (Apr 7, 2019)

  • C# PARSER:
  • Fixed several syntax issues.
  • Fixed bug where array initialization on a stackalloc caused a syntax error.
  • CODECHECK:
  • Add Basic language support to metrics checks.
  • EDITOR:
  • Add key binding to toggle read-only mode.
  • IREPORT:
  • Fix spurious comparison view on double-click.

New in Understand 5.1 Build 982 (Mar 27, 2019)

  • BUILDSPY:
  • Fix Buildspy RPATH so LD_LIBRARY_PATH does not need to be explicitly set.
  • COMMANDLINE:
  • Add Und support for Green Hills Ada macro definition file format for importing ada project macros.
  • COMPARE:
  • Fix failure to edit files containing entities that are being compared.
  • IREPORT:
  • Add comparison link function.
  • PYTHON PARSER:
  • Added 'containin' links between modules and Python 3 namespace style packages.
  • Made change to recognize packages without the presence of __init__.py files as supported by Python 3.3 and subsequent versions.
  • STRICT PARSER:
  • Add missing references to types referenced in pointer-to-member-function types.
  • Add missing references to template template arguments.
  • VISUALSTUDIO:
  • Fix crash importing MSVC project.

New in Understand 5.1 Build 980 (Mar 18, 2019)

  • STRICT_PARSER: Fix regression in recording references inside of lambda functions.

New in Understand 5.1 Build 979 (Mar 18, 2019)

  • Allow dotted names as library names.
  • Fixed several parser regressions introduced in recent releases.
  • Fixed bug where extending a same named class with a different number of generic formal parameters resulted in a circular dependency error.

New in Understand 5.1 Build 978 (Mar 9, 2019)

  • ADA PARSER:
  • Fixed bug where Green Hills multi-line preprocessor #if commands with 'and then' did not work correctly.
  • API:
  • fixed udbComment(), udbDbName() and udbEntityLibrary(), which all returned the same (first) value for every subsequent call.
  • EDITOR:
  • Fix text drawing issues on displays with non-integral scaling factors.
  • GENERAL:
  • Fix regression in importing some compile_commands.json files.
  • Fix failure to open projects on network drives on Windows.
  • INSTALLER:
  • Release Command Line Only install kit.
  • STRICT PARSER:
  • Avoid creating invalid ‘<anonymous>’ functions.
  • WEB PARSER:
  • For Web/Javascript, fixed bug where relative imports of jsx files sometimes failed.
  • For Web/Javascript, fixed bug where an import from an unknown file, where the imported item is renamed in the local file, could cause invalid references.

New in Understand 5.1 Build 977 (Mar 6, 2019)

  • ADA PARSER:
  • Added support for multi-line Green Hills preprocessor commands.
  • API:
  • Fix lookup of InitValue freetext.
  • Remove unused literals from c api UdbStatus type.
  • ECLIPSE:
  • Update Eclipse Plugin Version.
  • GRAPHS:
  • Modified the Object Reference (+ ObjRef Compare) graphs to cover all possible entity colors in legend.
  • Updated ObjRef Compare graph to support modified entities.
  • PARSER:
  • Fix crash moving a db between Windows and linux.
  • SEARCH:
  • Fixed missing Entity Filters in web languages.

New in Understand 5.1 Build 976 (Mar 6, 2019)

  • ANALYZE:
  • Fix failure to cancel analysis after the cancel confirmation dialog has been
  • supressed.
  • C# PARSER:
  • Fixed bug where tuple deconstuction in a foreach statement caused a syntax error.
  • GRAPHS:
  • Cluster control flow graph now supported with TypeScript language.
  • WEB PARSER:
  • For Web/Typescript, added support for new Typescript features up through version 3.3.

New in Understand 5.1 Build 975 (Mar 6, 2019)

  • STRICT PARSER
  • Add option to start worker processes serially instead of in parallel.

New in Understand 5.0 Build 973 (Feb 12, 2019)

  • PASCAL PARSER:
  • Made changes to fix some problems with overload resolution.
  • Made changes to better handle calls to overloaded functions and procedures.
  • PROJECT:
  • Fixed an issue with Und not adding directories in NamedRoots mode correctly.

New in Understand 5.0 Build 972 (Dec 17, 2018)

  • ASSEMBLY PARSER":
  • For Coldfire 68K Assembly, added support for CodeCheck UndCC comments.
  • COMMANDLINE:
  • Remove extra warnings when creating an offline request code in Und.
  • GENERAL:
  • Add support for non-standard double UTF-8 BOM headers.
  • STRICT PARSER:
  • Look through pointer and reference to function pointer types when recording 'call ptr' references.

New in Understand 5.0 Build 971 (Nov 27, 2018)

  • COMMANDLINE:
  • Fixed an issue with adding files in Und.
  • GENERAL:
  • Widened the default panel size for the project configuration dialog so that it can't be unreadable due to size constraints.
  • Fixed areas that open in the bottom drawer to always open in a new tab.

New in Understand 5.0 Build 970 (Nov 19, 2018)

  • ADA PARSER:
  • Fixed bug where a custom ada standard library path was overwritten by the default value.
  • Fixed crash when parsing very large ada files while saving comments.
  • C# PARSER:
  • Fixed crash in parsing of some code with syntax errors.
  • Fixed syntax error on tuples used as type arguments.
  • GENERAL:
  • Fixed issue with report generated date display on some systems.

New in Understand 5.0 Build 969 (Nov 12, 2018)

  • ADA PARSER:
  • Made changes to allow gnat Ada unicode character encoding.
  • GENERAL:
  • Fix crash introduced in build 967 when creating new project.

New in Understand 5.0 Build 968 (Nov 7, 2018)

  • ADA PARSER:
  • Made changes to allow gnat Ada unicode character encoding.
  • GENERAL:
  • Fix crash introduced in build 967 when creating new project.

New in Understand 5.0 Build 962 (Oct 7, 2018)

  • COMPARE:
  • Fix hang when comparing entities and moving cursor quickly.
  • GRAPHS:
  • Fixed duplicate comments in Visual Basic control flow graph.
  • Fixed an issue with adding a graphic filter on a calls chart.
  • Fix Internal Dependencies showing wrong number.
  • LICENSING:
  • Added the -deregisterlicensecode command for und and understand command line.
  • PASCAL PARSER:
  • For Pascal/Delphi, made a 'deref call' relation where a function/procedure pointer is used to call a routine. Made a 'use ptr' relation where a function or procedure address is stored in a variable.
  • For Pascal/Delphi, added Assign Ptr references to track function/procedure pointer assignments.
  • PERL SCRIPT:
  • Updated the Ada, C, Java and Fortran dead code detection script to correctly handle Fortran rename module.
  • STRICT PARSER:
  • Fixed worker process crash on Windows when the encoding is not set to UTF-8.

New in Understand 5.0 Build 960 (Sep 18, 2018)

  • GENERAL:
  • Changed support for Green Hills Ada macro imports to allow lowercase 'define' keywords.
  • Updated the new project wizard to allow visual basic projects to enable the Visual Studio import page.
  • PASCAL PARSER:
  • Fixed a parser crash and some instances where name lookup was incorrect.
  • Fixed bug where macros were not used for standard library files.
  • REPORTS:
  • Fix errors in Declaration Tree report and Exceptions report, introduced in build 921.
  • STRICT PARSER:
  • Added 'assign' reference kind for tracking variable flow across assignment.
  • VISUAL STUDIO:
  • Add initial support for VB 2017 project files.

New in Understand 5.0 Build 959 (Sep 11, 2018)

  • PASCAL PARSER:
  • Made changes to handle '.fmx' form files.
  • Fixed bug where some references in .dfm files were not being picked up.
  • REPORTS:
  • Made change to remove Delphi/Pascal predefined 'result' variables from the Unused Object Report.

New in Understand 5.0 Build 958 (Sep 7, 2018)

  • Fix issue with new codechecks on case sensititve platforms.

New in Understand 5.0 Build 955 (Sep 5, 2018)

  • GRAPHS:
  • Add Pascal support for UML Sequence Diagram.
  • STRICT PARSER:
  • Added template argument list to template specialization qualified names.
  • Don't count the implicit injected class name declaration as a decl statement.

New in Understand 5.0 Build 954 (Aug 19, 2018)

  • ARCHITECTURE:
  • Fixed crash on analysis when editing an architecture with relative paths.
  • CODECHECK:
  • Updated the CodeCheck treemap to allow users to double click on files and then open the "Results by File" tab and expand to that desired file with its associated violations expanded.
  • Update 3.2lineSpacingNotUsedInComments.upl to have the correct example displayed in the Description.
  • JAVA PARSER:
  • Added 'anonymous' to the short kind for anonymous classes.
  • Fixed bug where anonymous classes had an 'implements' relation to a class type appearing in a 'new' expression. Now, an 'implements' relation is created if the type is an interface and an 'extends' relation is created if the type is a class.
  • WEB PARSER:
  • For web/Javascript, fixed bug where the import of an index.js file using the path to the directory was not working correctly.

New in Understand 5.0 Build 953 (Aug 19, 2018)

  • ANNOTATIONS:
  • Updated annotation search/filter to be case insensitive, allow whitespace for authors and allow partial matching.
  • Updated the annotation search/filter tag names to be case insensitive. I have also ordered the filter droplist alphabetically.
  • Fixed an intermittent crash on Mac when searching annotations.
  • COMMANDLINE:
  • Fixed an issue with Und not creating a proper database from a .udx file while in Und’s interactive mode.
  • PYTHON API:
  • Fixed entity hash value to use the actual entity id instead of the address of an allocated integer object.
  • STRICT PARSER:
  • Changed counting of declaration statements to exclude parameter declarations.

New in Understand 5.0 Build 952 (Aug 1, 2018)

  • CODECHECK:
  • Fixed an issue in CodeCheck ignore import/export where a comma in the violation was not being handled correctly.
  • JAVA PARSER:
  • Made change to automatically add Java 9 and 10 src.lib and java.base.jmod to classpath for new projects.
  • Made changes to allow contents of Java 9 and 10 src.zip and .jmod files to be processed.
  • Fixed bug where import on demand for classes loaded from jar files didn't work correctly in some cases.

New in Understand 5.0 Build 951 (Jul 25, 2018)

  • CODECHECK:
  • Added -requireexplicitcheckid which will require a checkid for CodeCheck automatic ignores.
  • Added support for '*' as a valid checkID for CodeCheck Automatic Ignores. Und returns a -1 if -requireexplicitcheckid command line arg is passed in and a required checkID is not supplied in the CodeCheck Automatic Ignores.
  • Updated CodeCheck Automatic Ignores to include a warning if an invalid checkid name is used.
  • COMMANDLINE:
  • Fixed an Und issue where the # was not functioning correctly when importing @files. This is done by escaping the # with a "" or another "#".
  • JAVA PARSER:
  • Fixed invalid syntax error on some uses of '::new' for array creation.
  • Fixed syntax error on the use of a class nested in a generic for a type parameter bound.
  • Added support for Java 10 implicitly typed local variables.
  • Fixed crash on some uses of self-bounding generics.
  • TOOLS:
  • Fixed issues in the Command Window for when a file link has a '.' in the file path besides the file name and html color not showing properly when on the same line as a file link.
  • Fixed an issue in User Tools – Command Window where python scripts would display duplicate lines under certain conditions.

New in Understand 5.0 Build 950 (Jul 25, 2018)

  • C++:
  • Add option to merge duplicate function definitions into one entity during the analysis.
  • GRAPHS:
  • Fixed crash on some Fortran control flow graphs.
  • STRICT PARSER:
  • Disabled references to operator overload candidates when the lookup depends on a template argument.

New in Understand 5.0 Build 949 (Jul 10, 2018)

  • CODECHECK:
  • Update to CodeCheck to allow users to automatically load/overwrite and save CodeCheck ignores via the .uci file.
  • GENERAL:
  • Register the .udx settings file with Understand on Windows.
  • JAVA PARSER:
  • Made change to load thrown exception information from methods in class and jar files.
  • Added support for Java 9 module 'opens' directive. Added support for new syntax in try-with-resource statement.
  • STRICT PARSER:
  • Fixed parameter lookup for explicitly defaulted and deleted functions.

New in Understand 5.0 Build 943 (May 30, 2018)

  • STRICT PARSER:
  • Added ‘call ptr’ reference between Qt signals and slots referenced in connect calls.

New in Understand 5.0 Build 942 (May 30, 2018)

  • C# PARSER:
  • Full support for C# 7.0, 7.1 and 7.2 has been added
  • FORTRAN:
  • Fixed lookup of entities by ‘renameby’ reference.
  • JAVA PARSER:
  • For Java, fixed bug where overloaded functions merged if all parameters have types with the same short names.
  • STRICT PARSER:
  • Fixed failure to search for include files among project files when the file encoding is different from the system locale encoding.

New in Understand 5.0 Build 941 (May 30, 2018)

  • C# PARSER:
  • For C#, added support for some C# 7 pattern matching.
  • SEARCH:
  • Updated Find in Files to save the configuration changes on a more dynamic basis. Also added the ability to only search the currently selected open file.
  • Fixed a Find in Files issue where §§§ search string was not being properly identified in relative project files.

New in Understand 5.0 Build 940 (May 8, 2018)

  • C# PARSER:
  • Made additional changes for the support of C# 7 tuples.
  • COMMANDLINE:
  • Updated Und CodeCheck detailed log in terminal output to not show the detail for ignored violations unless the -showignored flag is set.

New in Understand 5.0 Build 939 (May 7, 2018)

  • API:
  • Fix crash in user_api.
  • C# PARSER:
  • Made changes to support C# 7 tuples.
  • INFOBROWSER:
  • Add Metrics IB field for web languages.
  • STRICT PARSER:
  • Record 'call ptr' references for array subscript expressions.
  • VISUAL STUDIO:
  • Changed handling of MSVC 2010 and later projects to ignore ExcludedFromBuild files that have a 'false' value.
  • WEB PARSER:
  • In preparation for full support of Typescript, made a change to not process .js files with same base name as a .ts file in the same directory.
  • Beta support for Typescript added.

New in Understand 5.0 Build 938 (May 7, 2018)

  • C# PARSER:
  • Added support for C# 7 nested methods, out variables, and in parameters.
  • Fixed a bug where local constants were identified as variables.

New in Understand 5.0 Build 937 (Apr 17, 2018)

  • ARCHITECTURES:
  • Fixed New Architecture Wizard read only issue.

New in Understand 5.0 Build 936 (Apr 17, 2018)

  • CODECHECK:
  • Add missing malloc for Misra 2012 21.3.
  • INFOBROWSER:
  • Exclude 'call ptr' references from C/C++ References field.
  • Added 'pointer' text to 'call ptr' references in the Calls field.

New in Understand 5.0 Build 935 (Apr 10, 2018)

  • GENERAL:
  • Fixed an issue in Copy Filename where the absolute filename was not being displayed correctly.
  • INTERACTIVE REPORT:
  • Fix API Info IReport.
  • STRICT PARSER:
  • Added support for function pointer assignment to members through array of aggregate initializer lists.
  • Record 'call ptr' references for assignment from argument to parameter.
  • Fixed worker process crash on some DLL declspec redeclarations on Windows.
  • Added support for function pointer assignment from function pointer arrays.

New in Understand 5.0 Build 934 (Apr 4, 2018)

  • PASCAL PARSER:
  • For Pascal/Delphi, fixed a bug where namespace names given in the Namespaces option were not used for 'uses' statement names that were dotted names (for example, namespace System was not prepended to Generics.Collections).
  • Fixed a bug where an ASM block that contained a label with the name @@END would cause the assembly block to be terminated and result in syntax errors.
  • STRICT PARSER:
  • Added parameter declare references.

New in Understand 5.0 Build 933 (Mar 27, 2018)

  • EDITOR:
  • Fixed failure to browse to the correct define/declare reference in some cases.
  • GENERAL:
  • Updated Project Configuration – C# new references to allow for multiple files to be selected/added at once. Note that the alias field will not be available if mutliple files are added at once but can be added in the edit feature.
  • Updated Architecture XML import to allow architecture paths with "/" or "".
  • GRAPHS:
  • For c++ strict projects, on call or calledby graphs, show new 'call ptr' references as dotted lines; for all languages, show 'use ptr' references as grey dashed lines.
  • METRICS:
  • For web languages, added SumCyclomatic metrics to functions. These metrics include values for nested anonymous functions.
  • For Python, added CountDeclExecutableUnit metric.
  • For web languages, added CountDeclExecutableUnit metric for files which counts all defined functions plus the file itself if it contained top level executable code.
  • For Pascal/Delphi, added CountDeclExecutableUnit metric.

New in Understand 5.0 Build 932 (Mar 20, 2018)

  • LICENSING:
  • Fix licensing issue when rapidly instantiating API instances.

New in Understand 5.0 Build 931 (Mar 19, 2018)

  • API:
  • For api lexers, add -> java operator and => operator for c#, and associate lambda entities with these lexemes.
  • C# PARSER:
  • Added 'lambda method' kind for lambda expressions.
  • FORTRAN PARSER:
  • Added support for some Silverfrost compiler variations on do loop syntax. Also, fixed some errors in the Fortran MaxNesting metric for some uses of do loops.
  • INTERACTIVE REPORTS:
  • For the Expand Macro Interactive Report, show the macro's value at the specificied location when using in a file.
  • JAVA PARSER:
  • Added 'lambda method' kind for lambda expressions, and added an End reference for lambdas.
  • PASCAL PARSER:
  • For Pascal/Delphi, fix problem where unnamed record types had the same unique name.
  • REPORTS:
  • Fix crash in html report generation.
  • STRICT PARSER:
  • Track potential function pointer calls through assignment.
  • UPERL:
  • Fixed the "Run a Command" window to display appropriate script text even when a gui perl graph is open.

New in Understand 5.0 Build 929 (Mar 5, 2018)

  • FORTRAN PARSER:
  • Added support for while (expr) do …end do statements
  • JAVA PARSER
  • Improved handling of overload matching when arrays of unknown classes are involved
  • METRICS:
  • For Visual Basic Metrics, added SumCyclomatic metrics for subroutines. These metrics include values for nested lambda subroutines
  • For Ada metrics, added SumCyclomatic metrics for subroutines. These metrics include values for nested subroutines
  • PARSER:
  • Fix api lexer to associate entities with c# operator definitions
  • PROJECT:
  • Fixed failure to respect quoted arguments in CMake compile command database import
  • STRICT:
  • Revert analysis of blocks independent of target. This interferes with the analysis of otherwise valid code in some cases

New in Understand 5.0 Build 928 (Feb 26, 2018)

  • C# PARSER:
  • Changed names of methods that are defined using dotted notation with an implemented interface prefix to include the interface name only in the method full name.
  • COBOL:
  • Fixed regression in analyzing COPY … REPLACING … statements when there are multiple replacements.
  • Add support for a few more Unisys extensions.
  • CODECHECK:
  • Fixed an issue with saving CodeCheck configurations with top level checks.
  • METRICS:
  • For c# and Java, added SumCyclomatic metrics to methods. These metrics include values for nested lambda functions.
  • Changed class SumCyclomatic metrics to include values for nested lambda functions.
  • PARSERS:
  • For Ada, C#, Fortran, Java, Pascal, Php, and Javascript, made changes to standardize function pointer references to be 'use ptr' references. Added 'use ptr' references to lambda/anonymous functions.

New in Understand 5.0 Build 927 (Feb 23, 2018)

  • LICENSING:
  • Version 5.0 uses our new licensing system, Helios, where you will need to create an account that will allow you to manage your own license(s). You will also need to get a Claim Code from our staff in order to use the upgraded licensing in Understand. If you are using an older license, you can continue to use it by selecting “Use Legacy Licensing” in the Licensing dialog under Options.
  • C# PARSER:
  • Fixed problems where unknown entities were created when ‘Analyze Changed File’ processing was used in projects that had calls to extension methods.
  • COBOL:
  • Style Unisys ‘PROC’ beginning and ending lines as comments in the editor.
  • FORTRAN PARSER:
  • Added support for Fortran extension ‘while (expr) do’ as start of a fortran do while loop.
  • LEXER:
  • Fixed handling of wide string literals in c lexer api.

New in Understand 4.0 Build 926 (Feb 13, 2018)

  • ADA PARSER:
  • Fixed bug where no 'rename' relation was created when an unknown entity was renamed.
  • C# PARSER:
  • Made changes to improve handling of generic method invocations and of lambda expressions passed as parameters.
  • COBOL:
  • Fixed crash on analysis of COPY … REPLACING … statements where the replacement pseudo-text spans multiple lines.
  • PERL SCRIPT:
  • Removed renaming declarations from the a_notset.pl script results.
  • STRICT PARSER:
  • Enable analysis of blocks independent of target.
  • Record references to class template arguments in constructor base class initializers.
  • Added project option to simplify macro expansion in control flow graph.
  • Added missing references to types used in function pointer return and parameter types.

New in Understand 4.0 Build 925 (Feb 5, 2018)

  • C# PARSER:
  • Fixed bug where parameter types were not inferred in lambda expressions used in variable initializations.
  • STRICT PARSER:
  • Fixed invalid control flow graph source range of statements inside of macro expansions that start with macro arguments.

New in Understand 4.0 Build 924 (Jan 22, 2018)

  • CODECHECK:
  • Update Codecheck Validataion Suite

New in Understand 4.0 Build 923 (Jan 16, 2018)

  • CODECHECK:
  • Updated CodeCheck to fix slowdown issue when using automatic ignores generation. Added automatic ignores text to the result log.

New in Understand 4.0 Build 922 (Jan 12, 2018)

  • FORTRAN PARSER:
  • Fixed syntax errors for dot operators continued over lines and for the use of 'assignment(=)' in use only statements.
  • JAVA PARSER:
  • Fixed crash on browse to unknown Java package names.

New in Understand 4.0 Build 921 (Dec 11, 2017)

  • C# PARSER:
  • Fixed bug where enum base types given using the 'System….' name caused a syntax error.
  • CODECHECK:
  • Fix for a potential crash in CodeCheck analysis.
  • FUZZY PARSER:
  • Add support for c99 designated initializers in fuzzy parser.
  • GRAPHS:
  • Fixed missing includes in the Architecture Internal Dependency Graphs.
  • STRICT PARSER:
  • Added control flow graph support for Objective-C exception handlers.
  • Fixed failure to calculate cyclomatic complexity for functions containing Objective-C exception handlers.
  • USER API:
  • Move user_api function udbListEntityFilter() functionality into udbListEntity().
  • Fix crash introduced in user_api udbListEntity() in b919.

New in Understand 4.0 Build 920 (Dec 6, 2017)

  • EDITOR:
  • Fixed performance issue related to Annotations.
  • GENERAL:
  • Optimized editor reference lookup slightly.

New in Understand 4.0 Build 919 (Nov 20, 2017)

  • GENERAL:
  • Fixed a potential crash when shutting Understand down before completely initializing the GettingStarted Dialog.

New in Understand 4.0 Build 918 (Nov 14, 2017)

  • GRAPHS:
  • Add several new options to the Control Flow Graph. Add three new graphs, Calls with Objects, Object References, and Object References with Called By.
  • WEB PARSER:
  • For Php, changed kind on referenced properties from 'property' to 'unresolved property' so they don't show up in the 'Same Name' IB field and entity list.
  • For Php, made changes to avoid merging multiple global variables with same name declared in different files.

New in Understand 4.0 Build 917 (Nov 8, 2017)

  • INFOBROWSER:
  • Fix crash displaying IB for unresolved c entities.

New in Understand 4.0 Build 916 (Nov 6, 2017)

  • API:
  • Remove UdbLibrary type and associated functions from API. udbEntityLibrary() returns library name.
  • CODECHECK:
  • Codechecks to check for commented out code weren't checking certain keywords. It should find more commented out code now.
  • WEB PARSER:
  • Fixed bug where class extends of a class named in a 'use' statement sometimes resulted in an unresolved entity.

New in Understand 4.0 Build 915 (Oct 27, 2017)

  • GRAPHS:
  • Fix crash in project-level graphs introduced in b914
  • METRICS:
  • Fix crash in metrics calculation introduced in b912

New in Understand 4.0 Build 914 (Oct 23, 2017)

  • FORTRAN PARSER:
  • Fixed error where in some contexts a macro that expanded to an empty string could cause syntax errors. Fixed some issues where macros expanding to multiple lines could cause bad line count values for files.
  • GENERAL:
  • Fixed failure to restore some relative and named root files to the correct workspace when opening a project.
  • PASCAL PARSER
  • Added 'Initializer' and 'Finalizer' to kind names for initialization and finalization blocks and removed these entities from the 'unused' entities reports.

New in Understand 4.0 Build 913 (Oct 15, 2017)

  • C# PARSER:
  • Added CountDeclExecutableUnit metric for files. Changed file Avg metrics to no longer round values so they conform to Avg metrics in other languages.
  • FORTRAN PARSER:
  • Fixed syntax errors caused by some macro expansions.
  • Added CountDeclExcecutableUnits metrics. Fixed bug where average line metrics were incorrect for files containing modules. Changed file Avg cyclomatic metrics to no longer be rounded values.
  • JAVA PARSER:
  • Added CountDeclExecutableUnit metric for files. Changed file Avg metrics to no longer round values so they conform to Avg metrics in other languages.
  • API:
  • Remove udbDbLanguages() from user_api.
  • WEB PARSER:
  • Made changes to prevent imports from unknown modules from merging with global entities in other files.
  • Fixed syntax error on async methods.

New in Understand 4.0 Build 912 (Oct 4, 2017)

  • INFOBROWSER:
  • Fixed crash in Ada IB introduced in Build 911.
  • METRICS:
  • For Ada and Visual Basic, added CountDeclExecutableUnit metric that counts all units with executable code.
  • PASCAL PARSER:
  • For Pascal/Delphi, made change to handle variations of the $I include command.
  • PROJECT:
  • Updated Und remove command for directories (if Watched) to not only set the directory to not watched but ignored as well.

New in Understand 4.0 Build 911 (Sep 25, 2017)

  • CODECHECK:
  • Fixed an issue where CodeCheck detailed descriptions were not showing the entire detailed text
  • Updated TreeMaps to allow users to hide custom scaling outliers
  • Add Codecheck that looks for assignments in 'if statement' conditions. It has an option to ignore the assignment if it is nested in extra parenthesis
  • PASCAL PARSER:
  • Fixed bug where include files were not processed during the order parse phase
  • Fixed bug where include commands with '' did not work correctly
  • WEB PARSER:
  • Fixed bug where 'import from' and 'export from' statements were not processed correctly, and could result in incorrect dependencies between files

New in Understand 4.0 Build 910 (Sep 18, 2017)

  • COMMANDLINE:
  • Fixed a crash in Und when adding absolute file paths.
  • PARSER:
  • Fix lazy include mechanism to handle include files that contain non-native directory separators.
  • Fixed crash introduced in Build 909 when doing a reparse-all on a c++ db.

New in Understand 4.0 Build 909 (Sep 14, 2017)

  • C# PARSER:
  • Made changes to avoid a possible parse crash.
  • COMMANDLINE:
  • Updated Und to better cope with malformed windows commands via the command line.
  • PASCAL PARSER:
  • Fixed bug introduced in last release that caused syntax errors on some generic type instances.
  • REPORTS:
  • Fixed very slow report generation for some large c projects.
  • SEARCH:
  • Updated Find/Replace in Files Search type terminology to eliminate multiline search confusion.

New in Understand 4.0 Build 908 (Sep 6, 2017)

  • PASCAL PARSER:
  • Fixed bug where include commands inside included files did not favor the local directory when searching for a matching file name.
  • Fixed a problem with Compaq Pascal preprocessor commands.
  • Fixed several syntax issues, including a syntax error on calling a function from an array of function pointers.
  • STRICT PARSER:
  • Record decayed array type text as the original array type instead of the decayed pointer type.

New in Understand 4.0 Build 907 (Aug 28, 2017)

  • PASCAL PARSER:
  • For Pascal/Delphi, fixed syntax errors on abstract class declarations and generic function calls with no parameters
  • For Pascal/Delphi, fixed some issues with generic declarations
  • For Pascal/Delphi, added 'Abstract Class' kinds. Also, added visibility information to short entity kind names to better conform to other language short entity kinds
  • WEB PARSER:
  • Fixed bug where some class extends were creating an 'unresolved' class instead of linking to the correct defined class

New in Understand 4.0 Build 906 (Aug 15, 2017)

  • C/C++ PARSER:
  • Added support for the 'arguments' field when creating a project with json files.
  • CODECHECK:
  • Updated CodeCheck to correctly export and import checks with "//" in the check name.
  • Re-add Hersteller Intiative Software (HIS) Metrics Codechecks that were accidently removed in build 902.
  • WEB PARSER:
  • Added support for some Php 7 syntax.
  • Added support for group use declarations and optional return types on functions.

New in Understand 4.0 Build 905 (Aug 7, 2017)

  • CODECHECK:
  • Fixed an issue in CodeCheck where the check name was preventing saving the individual check state.
  • WEB PARSER:
  • Fixed syntax errors on nested template literals. Also, added reference to entities named in template literals.
  • Added support for Php version 7.0 anonymous classes and 'yield from' statements.

New in Understand 4.0 Build 904 (Aug 1, 2017)

  • FUZZY PARSER:
  • Fix hang in fuzzy c++ parser when analyzing code with illegal recursive alias namespace declarations.
  • GENERAL:
  • Disable DPI awareness on Windows. Scale window proportionally when font size is greater than 100%.
  • REPORTS:
  • Updated Understand Reports to be more intelligent when performing pre-calculations for Unused entities.
  • VHDL PARSER:
  • Fixed missing overloaded procedures/functions in the metrics browser.
  • Fixed line count metrics for files starting with a comment.
  • WEB PARSER:
  • For Web/css, added support for new syntax.

New in Understand 4.0 Build 903 (Jul 27, 2017)

  • API:
  • Update Python documentation to include new architecture draw (arch.draw) method.
  • CODECHECK:
  • Fix hang in several Codechecks when a macro is recursively defined.
  • GENERAL:
  • Update documentation.
  • WEB PARSER:
  • Added support for new '**' and '**=' operators.
  • Fixed syntax errors on return statements returning an 'await' expression. Added support for some node.js supported syntax.
  • Fixed bug where css import relations had incorrect line number information.

New in Understand 4.0 Build 902 (Jul 18, 2017)

  • API GRAPHS:
  • Add support for architecture drawing in perl scripts with $arch->draw()
  • Add support for penwidth, dashed, dotted and bold styles in upl graph scripts
  • INFOBROWSER:
  • Add accessors IB field for python properties
  • PASCAL PARSER:
  • Added support for {$IfOpt…} compiler directives
  • PYTHON PARSER:
  • Fixed bug where the Getterfor relation was missing for some property getter methods. Also, added property deleter functions with Deleterfor relations
  • VISUALSTUDIO:
  • Add support for Visual Studio 2017 C++ projects

New in Understand 4.0 Build 901 (Jul 12, 2017)

  • EDITOR:
  • Changed browse visit source action to go to the first declaration when clicking on the define reference
  • GUI:
  • Fixed Entity Explore to accommodate extremely long entity names and parameter list without distorting the Understand UI
  • REPORTS:
  • Fixed an html issue with incorrect link when using the Fortran Extension Usage report
  • Updated the generated report index to show correctly

New in Understand 4.0 Build 900 (Jul 6, 2017)

  • CODECHECK:
  • Updated CodeCheck results treemap options to include Custom Scaling.
  • FORTRAN PARSER:
  • Fixed bug where size information from implicit statements was not added to implicitly defined variables, so 'IMPLICIT REAL*8' created variables of type 'REAL' instead of 'REAL*8'.
  • PROJECT:
  • Added a "Expand All" and "Collapse All" option to the Project Browser right click / Dimple menu.
  • Fixed Pascal Namespaces list in project config to allow free text, not directory names.
  • WEB PARSER:
  • Added support for Javascipt non-standard syntax using '::' for a bind operator and fixed a syntax error on some uses of 'class' expressions.
  • Added support for new async functions and await expressions.
  • Fixed bug where unnamed classes in class expressions sometimes resulted in classes with blank names.

New in Understand 4.0 Build 899 (Jun 27, 2017)

  • WEB PARSER:
  • Fixed some syntax issues with JSX React files.

New in Understand 4.0 Build 898 (Jun 19, 2017)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 16.3, MISRA 2008 rule 6-4-5, MISRA 2004 rule 15.2, and All Check script unconditionalStatementShallTerminateNonEmptySwitchClauses.upl where circular references within a switch causes Understand to freeze.
  • FORTRAN PARSER:
  • Fixed syntax errors in fixed format fortran on c style define statements which continue over multiple lines.
  • Added support for quadruple precision literals (e.g. 1.q0).
  • Fixed crash processing c style preprocessor 'define' statements with empty argument lists.
  • Fixed bug where an 'END FILE' statement caused a syntax error when used in a logical if statement.
  • FUZZY PARSER:
  • Fixed memory leak in fuzzy c++ parser.
  • WEB PARSER:
  • Added support for new Javascript syntax allowing spread operators in object literals.
  • Added lookup of Javascript names used in JSX tags. Fixed invalid syntax errors in JSX properties with no '=value'.

New in Understand 4.0 Build 897 (Jun 12, 2017)

  • C PYTHONAPI:
  • Fixed unresolved symbol error on database open on Linux
  • WEB PARSER:
  • Made changes to handle React JSX syntax in Javascript files

New in Understand 4.0 Build 895 (Jun 6, 2017)

  • GRAPHS:
  • Fixed an issue with Cluster Control Flow Graph not exporting .svg files correctly
  • Fixed an issue with the Internal Dependency graph not filtering c derive, C# derive and java extend couple
  • JAVA:
  • Updated the Java Configure Project Class Path – New Jar dialog to allow the user to add more than one .jar file at a time
  • TREEMAP:
  • Fixed an issue with Metric Treemaps not potentially producing the same colors for "flat" and "group by" treemaps
  • Added a custom scaling feature to Metric Treemaps to allow users to specify a "Min" and "Max" number. This allows for easier comparison between different projects and allows for a nice before and after picture with the same scale used
  • WEB PARSER:
  • Fixed a problem where some occurances of <![CDATA[ in xml files caused syntax errors
  • Fixed a syntax error in javascript when an embedded script line begins with <!–//–>
  • Fixed several javascript parse issues
  • Fixed a problem where some counts of embedded javascript lines were one less than they should have been

New in Understand 4.0 Build 894 (May 26, 2017)

  • JAPANESE:
  • Japanese Special Build
  • GRAPHS:
  • Fixed pathological performance on cluster control flow graph generation in relative and named root projects.
  • Fixed hang on cluster control flow graph generation for some Fortran programs.
  • JAVA PARSER:
  • Fixed bug where loading scala generated .class files could cause invalid Cyclic Dependency errors.

New in Understand 4.0 Build 893 (May 23, 2017)

  • ECLIPSE:
  • Fixed error dialog when generating graphs.
  • GENERAL:
  • Fixed crash on info browser visit shortcuts when the info browser is empty.
  • Added a "Show Detailed Architecture Metrics" checkbox to the Project Metric browser window. Please note that enabling the detailed metrics may dramatically increase the time needed to show the metrics depending upon your project size.
  • GRAPHS:
  • Added "Other" class category to the Project Overview Charts for appropriate classes, procedures, methods that are not global, internal, protected, private, default, local, unknown, unnamed and unresolved.
  • PASCAL PARSER:
  • Fixed bug where the return type text was duplicated on functions with a declaration in a unit interface and a definition in a unit implementation part.
  • PYTHON PARSER:
  • Fixed bug where nested f-strings could cause syntax errors.
  • Fixed syntax error on some print function calls in Python 2.
  • SEARCH:
  • Fixed an issue with Ctrl + Up Arrow and Ctrl + Down arrow not working in the code window when the FIF results window is open.
  • VISUAL BASIC:
  • Fixed bug where a .Invoke call to a delegate did not generate a call reference.

New in Understand 4.0 Build 892 (May 23, 2017)

  • CODECHECK:
  • Updated MISRA 2012 rule 16.3, MISRA 2008 rule 6-4-5, MISRA 2004 rule 15.2, and All Check script uncomditionalStatementShallTerminateNonEmptySwitchClauses.upl to use the Control Flow Graph for scanning switch statements.
  • EDITOR:
  • Updated Find in Files to allow for event processing when there is an insanely large line being searched and styled.
  • FUZZY PARSER:
  • Fixed C++ fuzzy parser to handle massive numbers of repeat using clauses within namespaces.
  • GENERAL:
  • Updated the Scope List to open automatically if it was open when Understand was closed last.
  • PYTHON PARSER:
  • Fixed a couple of issues with Python 3.6 variable type hints.
  • Added support for Python 3.6 'async' keyword in additional contexts, and for multi-line f-strings. Made change to allow 'yield' statement in f-strings. Also, fixed several syntax issues.
  • Fixed syntax error on some uses of '**' and '*' in dictionary/set creation.

New in Understand 4.0 Build 891 (May 9, 2017)

  • GRAPHS:
  • Added parameter filtering and a 'show only' option to the Calls and Called by graphical views.
  • PYTHON PARSER:
  • Added support for Python 3.6 f-strings.
  • Added support for Python 3.6 variable type hints, async for, and underscores in numeric literals.

New in Understand 4.0 Build 890 (May 3, 2017)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 21.2 and All Check script CPP_I016_reservedIdentifiersMacrosAndFunctionsShallNotBeDeclared where range based loops were not handled correctly.
  • Expanded the CodeCheck Results by File – Check Name column to allow for easier reading of the check name.
  • Fixed an issue in CodeCheck UndCC_NextLine() where only one parameter (checkID) was being recognized.
  • GENERAL:
  • Updated Configure Project – Files dialog to include a right click "Expand All" and "Collapse All" menu option for directories.
  • GRAPHS:
  • Fixed an issue with the Web Php function butterfly graph callbys were not displayed correctly.
  • Fixed bug when creating a large number of graph files from a script.
  • PYTHON:
  • Made changes to make symbol information from several .pyd files in the Python Dlls directories available to the Python parser.
  • REPORTS:
  • Updated the File Contents report to show nested classes.
  • STRICT PARSER:
  • Fixed sysroot option on Linux.
  • Fixed failure to detect headers by include when using named roots.

New in Understand 4.0 Build 889 (Apr 25, 2017)

  • ANNOTATIONS:
  • Fixed crash on analysis after the annotation dialog has been opened.
  • Fixed an issue with Annotation filtering where the filter could possibly give an "Annotations loading error" message.
  • C# PARSER:
  • Fixed bug where syntax error at end of file gave incorrect line/column number.
  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 5.3, MISRA 2008 rule 2-10-2, and MISRA 2004 rule 5.2 and All Check script scopeHiding.upl where variables defined in for loop condition weren't treated correctly.
  • PYTHON PARSER:
  • Fixed parser crash when a directory in a project is deleted from disk, but not removed from the project, and an analyze changed files command is executed.
  • Added parser option to suppress warning messages for import statements that appear in try-except blocks.
  • Removed warning messages for imports of modules available only as .pyd files.
  • REFACTOR:
  • Fixed an issue with the Refactor Rename tool not finding all of the entity references correctly.
  • Fixed the Refactor Extract Function to correctly pass the ~ in C++.

New in Understand 4.0 Build 887 (Apr 24, 2017)

  • CODECHECK:
  • Updated C# naming convention for methods to ignore accessor methods.
  • GENERAL:
  • Include python sample scripts.
  • PYTHON PARSER:
  • Fixed bug where relative imports using .. didn't work unless parent directory contained an __init__.py file.
  • STRICT PARSER:
  • Fixed additional issue detecting header files by include on Windows.
  • UPERL:
  • Fix Japanese translation
  • VISUAL BASIC PARSER:
  • Fixed bug where sets of function names for return values were recorded as recursive calls.
  • Fixed bug where members of Array class referenced through return values of functions loaded from dll files were not recognized and resulted in unknown entities.

New in Understand 4.0 Build 885 (Apr 12, 2017)

  • CODECHECK:
  • Fixed an issue with the persistent dialog message boxes and using shift to see the message again not working correctly
  • EDITOR:
  • Fixed unused entity highlighting for PHP functions
  • FORTRAN PARSER:
  • Fixed bug where some macro expansions with arguments could cause syntax errors
  • GENERAL:
  • Fixed an issue when the database was being written to when open is cancelled
  • PYTHON PARSER:
  • Fixed an error that sometimes resulted in the creation of an unknown entity when an entity from an enclosing context should have been found
  • Fixed problem where some uses of 'from filename import name' did not locate the imported enitiy and resulted in an unknown entity
  • STRICT PARSER:
  • Fixed failure to detect headers with non-standard extensions on Windows
  • VISUAL BASIC PARSER:
  • Fixed bug where some calls to overloaded methods without parameters were missed

New in Understand 4.0 Build 884 (Apr 10, 2017)

  • Japanese Special Build

New in Understand 4.0 Build 883 (Apr 10, 2017)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 directive 4.5, MISRA 2008 rule 2-10-1 and All Check script differentIdentifiersShallBeTypographicallyUnambiguous.upl where violations triggered on reserved identifiers.
  • Added All Check scripts CPP_I016_reservedIdentifiersMacrosAndFunctionsShallNotBeDeclared.upl and CPP_P029_unusedMacroDeclaration.upl to Code Check.
  • Fixed a bug where MISRA 2012 rule 21.2 would throw a violation on the built in identifiers __begin, __end and __range.
  • Fixed a bug in MISRA 2012 rule 2.5 when a MACRO defined and used within inactive code threw a violation when using the Fuzzy parser.
  • Fixed a bug in MISRA 2012 rule 17.8 and All Check script CPP_F023_parameterNotModified.upl where the entity named in the violation was the offending function and not the parameter.
  • EDITOR:
  • Fixed an issue where adding multiple new editor styles was not working correctly.
  • GUI:
  • Fixed an issue with the Most Recently Used tab feature not working correctly.
  • PYTHON PARSER:
  • Fixed a syntax error on parsing some uses of dictionary argument expansions.
  • STRICT PARSER:
  • Added option to disable analysis of unincluded headers in isolation.
  • Fixed worker process crash on invalid target settings left over from previous versions.
  • Enable exceptions and RTTI unconditionally when targetting PS4.
  • VISUAL BASIC PARSER:
  • Added support for generic class instantiations.

New in Understand 4.0 Build 882 (Apr 10, 2017)

  • ANNOTATIONS:
  • Fixed line annotations relative to enclosing scope
  • Fixed editor indicator
  • COBOL:
  • Fixed errors in portable projects
  • Fixed syntax highlighting and possible copy errors in comment entries in the identification division
  • EDITOR:
  • Fixed binary file check
  • FORTRAN PARSER:
  • Fixed a bug where dec preprocessor commands using lower case keywords for logical operators did not work correctly
  • GRAPHS:
  • Added Visual Basic Classes and Methods to Metric Treemaps
  • JAVA API:
  • Fixed failure to load native library on Mac
  • SEARCH:
  • Updated the Find in Files dialog to include the Visual Basic extensions in the extension droplist
  • VISUAL BASIC PARSER:
  • Fixed bug where preprocessor symbols defined using other preprocessor symbols didn't expand correctly
  • Fixed bug in some preprocessor #if evaluations
  • Made changes to handle project level defines of preprocessor symbols

New in Understand 4.0 Build 881 (Apr 6, 2017)

  • ASSEMBLY PARSER:
  • Add support for set and modify references in 1750A Assembly parser.
  • CODECHECK:
  • Updated MISRA 2012 rule 8.6, MISRA 2008 rule 0-1-10, All Check script identifierWithExternalLinkageOneDefinition.upl, All Check script definedFunctionsCalled.upl, and Scitools Recommended Check definedFunctionsCalled.upl to exclude the C++ standard library.
  • Updated MISRA 2012 rule 20.13 and All Check script validPreprocessingDirective.upl to have an option to ignore GCC directives.
  • Updated MISRA 2012 directive 4.4 to include the closest entity name to violation.
  • Updated library code checks to test for a definition before throwing a violation.
  • Fixed bug in All Check script pointersMustBeInitialized.upl where multiplication inside an array declaration triggered a false positive.
  • Fixed a bug in MISRA 2008 rule 7-3-6 and All Check script usingDirectiveDeclarationsNotInHeaderFiles.upl where define a template in a namespace could cause a false positive.
  • Updated the CodeCheck result treemap to allow for image export.
  • SEARCH:
  • Instant search, Show search results after clicking on an item in the suggestion popup list.
  • VISUAL BASIC PARSER:
  • Made changes so that inactive lines are shown in the editor.
  • Fixed problem where some metrics were missing for modules.
  • Made change to purge dll file information from the database when dll files are removed from the reference list.
  • Added support for Const and If,Elseif,Else,Endif directives.

New in Understand 4.0 Build 880 (Mar 9, 2017)

  • COMPILER:
  • Added support for Keil arm c compiler.
  • FORTRAN PARSER:
  • Fixed a couple of parsing errors.
  • GRAPHS:
  • Add branch nodes in Control Flow Graph for IBM Assembly.
  • VISUALBASIC PARSER:
  • Fixed a few memory leaks.

New in Understand 4.0 Build 879 (Feb 28, 2017)

  • ASSEMBLY PARSER:
  • Add support for 1750A assembly variant where 15 leading spaces does not mean a comment.
  • CODECHECK:
  • Updated MISRA 2012 rule 2.3, MISRA 2008 rule 0-1-5, and All Check script UnusedTypeDeclarations.upl to no longer flag derived typedefs.
  • EDITOR:
  • Move the user style .lua file to the .ini file location and treat the old files appropriately. If the theme is not found then we inform the user and default to the Understand theme.
  • FORTRAN PARSER:
  • Fixed several parsing issues.
  • Fixed syntax errors when preprocessor #include lines appeared within continued statements.
  • GENERAL:
  • Updated the Project Overview Charts colors.

New in Understand 4.0 Build 878 (Feb 24, 2017)

  • CODECHECK:
  • Updated MISRA 2008 rule 17.8 and All Check script CPP_F023_parameterNotModified.upl to no longer test parameters explicitly passed by reference.
  • Updated MISRA 2012 rule 2.3, MISRA 2008 rule 0-1-5, and All Check script UnusedTypeDeclarations.upl to include specializeby references.
  • Updated MISRA 2012 rule 2.3, MISRA 2008 rule 0-1-5, and All Check script UnusedTypeDeclarations.upl to ignore template parameters.
  • Fixed a bug in MISRA 2004 rule 16.5 and All Check script explicitVoidWhenNoParams.upl where the check option to ignore unresolved functions only checked unresolved functions.
  • Updated Effective C++ rule 3 to ignore member objects.
  • Updated MISRA 2012 rule 15.5, MISRA 2008 rule 6-6-5, MISRA 2004 rule 14.7, HIS rule 10, and All Check script oneExitPerFunction.upl to ignore lambda functions.
  • Switched pointer violations from type *const to const type *.
  • Updated 3_potentialConst.upl to no longer flag range based loops.
  • Updated MISRA 2012 rule 15.5, MISRA 2008 rule 6-6-5, MISRA 2004 rule 14.7, HIS rule 10, and All Check script oneExitPerFunction.upl to ignore functions defined with MACROs.
  • FORTRAN PARSER:
  • Fixed problem where large files of inactive code caused slow processing.
  • GENERAL:
  • Updated the split window icons to stay selected if being used.
  • GRAPHS:
  • Control flow graph, Left align collapsed blocks.
  • IBM ASSEMBLY PARSER:
  • Added Beta support for Structured Assembly Language Programming for the IBM 390.
  • METRICS:
  • Fixed an issue with Metric Charts showing incorrectly.
  • VISUALBASIC PARSER:
  • Fixed some memory leaks in the Basic parser and in the control flow graph code.
  • Added support for overload resolution involving implicit narrowing type conversions. Also, fixed bug where invocations of overloaded methods made with no parentheses did not generate 'call' relations.

New in Understand 4.0 Build 877 (Feb 16, 2017)

  • C# PARSER:
  • Fixed some problems with incorrect line count metrics
  • CODECHECK:
  • Fixed a potential issue where a " – " in the short name of the user checks may not allow the check to be run properly
  • Updated MISRA 2012 rule 16.6, MISRA 2008 rule 6-4-8, MISRA 2004 rule 15.5 and All Check script switchStatementShallHaveCaseClause.upl to properly handle empty case clauses that utilize curly braces
  • Updated CodeCheck results text/dashboard export to convert html code back to plain text where needed
  • GENERAL:
  • Updated the Dependency Browser and Dependency Graphs to remove implicit dependencies in Java
  • JAVA PARSER:
  • Fixed some problems with incorrect line counts in code with lambda expressions and Javadoc comments
  • TREEMAP:
  • Fixed issue with using the metric for functions and the TreeMap not resizing correctly

New in Understand 4.0 Build 876 (Feb 8, 2017)

  • CODECHECK:
  • Added MISRA 2012 rule 18.7 and All Check script CPP_S0001_flexibleArrayMembers.upl to Code Check.
  • Updated MISRA 2012 rule 8.3, MISRA 2008 rule 3-2-1, MISRA 2004 rule 8.3, and All Check script allDeclarationsShallUseSameNameAndTypes.upl to no longer test declarations and definitions constructed with functional MACROs.
  • Updated MISRA 2008 rule 16-0-6, MISRA 2004 rule 19.10 and All Check script definitionOfFunctionLikeMacroShallEncloseParameterInParentheses.upl to no longer throw a violation on parameters encased in spaces.
  • FORTRAN PARSER:
  • Fixed problem in parse where 'use' statements with '::' characters sometimes resulted in an invalid parse order and missing module warnings.
  • GENERAL:
  • Fixed Reports->Dependencies->Class Dependencies->Cytoscape Export to include the Kind and handle html characters (&) in the longname file path.
  • GRAPH:
  • Updated Metrics->TreeMap to include python functions and classes.
  • IREPORT:
  • Updated the api.info.upl plugin so it will show metrics with a zero value.
  • STRICT:
  • Added missing metrics for lambda functions.
  • TOOLS:
  • Updated the Tools->Options page to include a .ini settings file backup/load option.
  • Updated Tools->Options->General to allow users to specify a backup .ini file for manual save/load.
  • Updated the Tools->Options->Restore Defaults button to restore defaults for all option pages instead of just the current page.
  • Updated Tools->Options and Tools->UserTools Settings so that updates will be applied to other open instances of Understand on Save or Apply (usertools, editor styles, keyboard shortcuts).
  • VISUALBASIC:
  • Made changes to better handle overload resolution in method calls.

New in Understand 4.0 Build 875 (Feb 2, 2017)

  • CODECHECK:
  • Updated MISRA 2008 rule 16-1-1, MISRA 2004 rule 19.14, and All Check script definedPreProcessorOperatorTwoStandardForms.upl to properly detect multiple MACROs used to define defined.
  • Updated MISRA 2012 rule 21.1, MISRA 2008 rule 17-0-1, MISRA 2004 rule 20.1, and All Check script reserverIdentifiersMacrosAndFunctionsShallNotBeDefined.upl to no longer test inactive code.
  • Added MISRA 2012 rule 20.6 to Code Check:
  • Fixed a bug in MISRA 2008 rule 16-1-1, MISRA 2004 rule 19.14 and All Check script definedPreProcessorOperatorTwoStandardForms.upl where a defined operator was incorrectly flagged as a violation when used after a line continuation character while using the Fuzzy parser.
  • Fixed bug in MISRA 2008 rule 0-1-10 and All Check script definedFunctionsCalled.upl where a function call in inactive code wasn't being counted when using the Fuzzy parser.
  • COMPARE:
  • Fixed off-by-one error for some hunks where one side is empty.
  • FORTRAN PARSER:
  • Fixed syntax error on some continuation lines in free format files.
  • JOVIAL:
  • Added support for Jovial variation that allows copy directives with file names of the form '&DIR:NAME&' and copy files with .dat file endings.
  • STRICT:
  • Fixed failure to save freetext to the database for file entities.

New in Understand 4.0 Build 874 (Jan 24, 2017)

  • CODECHECK:
  • Added MISRA 2012 rule 17.8 and All Check script CPP_F023_parameterNotModified.upl to Code Check.
  • Updated MISRA 2004 rule 16.5 and All Check script externalIdentifiersUnique.upl to have an option to ignore unresolved entities.
  • Fixed a bug in referenceSymbolSpacing.upl where an inline comment, mid declaration, followed by a space, caused a false positive
  • Added option to MISRA 2012 rule 5.8 and All Check script externalIdentifiersUnique.upl to ignore unresolved entities.
  • Fixed bug in MISRA 6-5-4 and All Check script loopCounterShallBeModifiedByConstant where if a loop counter was modified by a MACRO, this script would throw a false positive.
  • REPORTS:
  • Updated the "File Contents" report to be more complete.

New in Understand 4.0 Build 873 (Jan 17, 2017)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 15.7, MISRA 2008 rule 6-4-2, MISRA 2004 rule 14.10 and All Check script danglingElse.upl where an if-else if chain constructed with the preprocessor could throw false positives.
  • Added MISRA 2012 rule 17.3 and All Check script CPP_DO33_functionNotDeclaredImplicitly.upl to Code Check.
  • Added MISRA 2012 rule 17.7 to Code Check.
  • GRAPHS:
  • Fix for text alignment issue in Visio Export.
  • STRICT PARSER:
  • Updated clang to version 3.9.1.

New in Understand 4.0 Build 872 (Jan 10, 2017)

  • CODECHECK:
  • Added fixedValueConstants.upl for Ada to Code Check.
  • Fixed bug in MISRA 2012 Directive 4.3 and MISRA 2008 rule 7-4-3 where a function without an 'End' reference caused a scripting error.
  • Fixed a bug in MISRA 2008 rule 6-3-1, MISRA 2004 rule 14.8 and All Check script bodyOfSwitchOrLoopShallBeACompoundStatement.upl where a function without an 'End' reference caused a scripting error.
  • Fixed bug in MISRA 2008 rule 6-4-1, MISRA 2004 rule 14.9 and All Check script ifConstructShallBeFollowedByACompoundStatement.upl where function without an 'End' reference caused a scripting error.
  • Fixed bug in MISRA 2012 rule 15.5, MISRA 2008 rule 6-6-5, MISRA 2004 rule 14.7, HIS rule 10 and All Check script oneExitPerFunction.upl where a function with a missing 'DefineIn' reference caused a scripting error.
  • UND COMMANDLINE:
  • Fixed an issue in Und involving -rescanwithoutanalyze and case-sensitive renames in case-insensitive filesystems.
  • VISUALBASIC PARSER:
  • Made change to allow ambiguous namespace references for VS2015.

New in Understand 4.0 Build 871 (Jan 10, 2017)

  • PASCAL PARSER:
  • Add pascal option to set prepend text for external-linkage entities.
  • Added 'External Variable' entity kind to allow external variables to be referenced from other languages.
  • PYTHON PARSER:
  • Made change to tag any class with an '@abstractmethod' decorator on a method as abstract class.
  • Made change to tag any class with an '@abstractproperty' decorator as an abstract class.
  • UPERL:
  • Fix upl $db->metrics() call to filter out non-project metrics.

New in Understand 4.0 Build 870 (Jan 2, 2017)

  • ASSEMBLY PARSER:
  • For Coldfire 68K Assembly, fixed bug where some SECTION directives caused syntax errors.
  • C# PARSER:
  • Fixed duplication of '@' characters in InitValue and other entity attributes.
  • CODECHECK:
  • Potential fix to a crash reported when externally editing a file then running CodeCheck with a re-analyze.
  • COMMANDLINE:
  • Updated Und to allow users to see which assembler is set and the possible assemblers. Also updated Und to allow users to set which assemlber via the -assemblyassembler setting.
  • PASCAL PARSER:
  • Added support for Pascal86 syntax.

New in Understand 4.0 Build 869 (Dec 26, 2016)

  • ANNOTATIONS:
  • Updated to check for a new/modified annotation file and load it if changed.
  • API:
  • Fixed a Perl API issue where architecture depends Value was not returning the correct references when a key was passed in.
  • Fix Basic not being identified as the current language when querying from the perl API.
  • PASCAL PARSER:
  • Made changes to allow syntax variations with '#include' for including files and 0x… for hex literals.
  • Made change to allow syntax variation with 'external' on a variable declaration.
  • Made change to create procedure entities from initialization and finalization blocks in Delphi Units. This allows line, statement, and complexity metrics to be collected for these code blocks, and for control flow graphs to be generated. Compleixity metrics were removed from Delphi Units since these metrics were always 0.
  • Fixed parse error on some expressions.
  • PYTHON PARSER:
  • Added Abstract Class kind.
  • Made changes to implement the 'Dynamic Resolve, Assume nearest matches' option. This turns on/off resolving attribute references to attributes defined in the same file or imported files. This option is off by default which differs from the prior behavior.
  • TOOLS:
  • Fixed an issue in "Run a Command" where quotes were being lost when the command was run a second time from the Command Window run button.
  • VHDL:
  • Fixed crash on View Information on unknown entities.

New in Understand 4.0 Build 868 (Dec 13, 2016)

  • CODECHECK:
  • New feature allowing Codechecks to be ignored from the source code directly (https://scitools.com/codecheck-comment-keywords/).
  • EDITOR:
  • Added semantic syntax highlight styles for PL/M.
  • Fixed keyword highlighting for PL/M.
  • GRAPHS:
  • Update butterfly graph to better show Java virtual calls.
  • PYTHON API:
  • Fixed architecture entity lookup call to respect recursive argument.
  • PYTHON PARSER:
  • Added package metrics. For file average complexity and line metrics, made change to include the complexity and executable line count for executable code at the file level. Files with no executable code at the file level now have complexity and path count metrics of 0 instead of 1. Fixed bug where CountStmt metric was missing for class entities.
  • STRICT PARSER:
  • Report errors about passing non-pod arguments through variadic functions as warnings since they don't affect the analysis in any way.

New in Understand 4.0 Build 867 (Dec 13, 2016)

  • CODECHECK:
  • Fixed bug in MISRA 2012 17.6 where a failed lexer creation would cause a script error.
  • FUZZY PARSER:
  • C++ Parser, Add support for Tasking TriCore compiler.
  • GENERAL:
  • Fixed invalid dependency on libcurl on Linux.
  • Fixed runtime warnings and related issues on Mac.
  • PASCAL PARSER:
  • For Pascal/Delphi, fixed bug where some unresolved entities failed to merge.
  • For Pascal/Delphi, fixed bug where using 'private' for a record component name caused a syntax error.
  • For Pascal/Delphi, fixed bug where no unknown entity reference was created for selected components of unknown entities.
  • Fix slow pascal resolve times for large projects.
  • STRICT PARSER:
  • Fixed missing init references for constructor init list references to fields that have a C++11 style in-class member initializer.
  • VISUALBASIC PARSER:
  • Fixed bug in Visual Basic PercentLackOfCohesion metric that resulted in negative values in some code with auto-implemented properties.
  • Added support for VS2015 use of ? in dictionary access and delegate calls, and added support for NameOf operator.

New in Understand 4.0 Build 866 (Dec 13, 2016)

  • Japanese Special Build

New in Understand 4.0 Build 865 (Nov 25, 2016)

  • C# PARSER:
  • Fixed bug causing negative value for PercentLackOfCohesion in some code with expression bodied property getter.
  • C++ PARSER:
  • Save comments for c++ entity declarations.
  • GRAPHS:
  • Control flow graph, fixed empty source on nodes consisting of a single 0 character.
  • VISUALBASIC PARSER:
  • Added support for VS2015 string interpolation.
  • Added Average metrics for files.
  • Fixed parser crash on some syntax errors in expression lists.
  • Added support for VS2015 new '?.' operator and comments after implicit line continuations.

New in Understand 4.0 Build 864 (Nov 25, 2016)

  • C# PARSER:
  • Fix resolve issue introduced in the last build.
  • Fixed parser crash on some predefined type member expressions.
  • Fixed syntax errors on some unicode white space characters.
  • JAVA PARSER:
  • Fixed syntax errors on some unicode white space characters.
  • PASCAL PARSER:
  • For Pascal/Delphi, changed calculation of the PercentLackOfCohesion metric to exclude form fields initialized and used only in the form dfm file.
  • Fixed syntax errors on some unicode white space characters.
  • VISUALBASIC PARSER:
  • Release Visual Basic Parser Beta Version.

New in Understand 4.0 Build 863 (Nov 8, 2016)

  • C# PARSER:
  • Added support for C# 6 expression-bodied methods.
  • Fixed errors on some uses of C# 6 interpolated string expressions.
  • INFOBROWSER:
  • Changed c# resolve so that identically-defined methods are not merged together but result in separate entities.
  • METRICS:
  • For Pascal/Delphi, fixed bug where property declarations were incorrectly counted in the PercentLackOfCohesion metric.
  • PYTHON PARSER:
  • Removed 'implicit import' relations from modules to parent packages __init__.py files.

New in Understand 4.0 Build 862 (Nov 8, 2016)

  • GRAPHS:
  • Fixed issue with Perl Graphs not working on Linux
  • FORTRAN PARSER:
  • Added highlighting of inactive source regions
  • JOVIAL PARSER:
  • Fixed syntax error on some directives between 'start' and 'compool' keywords
  • PYTHON PARSER:
  • Fixed bug where 'implicit import' relations were sometimes created from a module file to the __init__.py file in the same directory

New in Understand 4.0 Build 861 (Oct 26, 2016)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 8.7 and All Check script noExternalLinkageUnlessExternal.upl where the check would fail on an entity that did not have a parent.
  • Potential fix to a CodeCheck crash when interrupting/stopping an analysis.
  • Fixed a bug in MISRA 2012 rule 8.4 and All Check script compatibleDeclarationVisibleWhenExternalLinkageIsDefined.upl where the check would fail on an entity that did not have a parent.
  • CodeCheck Ignores Violation fix to allow commas in the notes field during an export/import. Also fixed an issue in the export when Check names contain quotes.
  • GENERAL:
  • Fixed a spelling error in Tools – Options – User Interface – Command Window Font.
  • Fixed several Python API issues in the new Mac app bundle layout.
  • PROJECTGRAPH:
  • Fixed an issue where duplicate names were not showing on the graph or table correctly (showing 0 on the table and combined on the graph).

New in Understand 4.0 Build 860 (Oct 19, 2016)

  • CODECHECK:
  • Added Code Check for MISRA-C 2012. Rule: 16.6.
  • Updated MISRA 2004 rule 5.1 and All Check script significantTo31Chars.upl to ignore inactive entities.
  • Updated MISRA 2012 rule 5.4, All Check scripts macroIdentifiersShallBeDistinct.upl and macroNamingConvention.upl to no longer check inactive MACROs.
  • FORTRAN PARSER:
  • Fixed bug in parsing some fixed format module declaration lines with 'function' in the module name.
  • GENERAL:
  • Fix Metrics Export Crash.
  • INFOBROWSER:
  • Fixed crash on double-click to expand info browser root header.
  • JAVA PARSER:
  • Added metrics Knots, MaxEssentialKnots, and MinEssentialKnots.
  • PROJECT:
  • Add dynamic resolve project options for python.
  • PYTHON PARSER:
  • Added support for option to turn on/off resolving attribute references to any single like named attribute in the project. The default behavior is 'off' which differs from the prior behavior.
  • SEARCH:
  • Fixes for Find in Files crashes.

New in Understand 4.0 Build 859 (Oct 19, 2016)

  • CODECHECK:
  • Added Code Check for MISRA-C 2012. Rule: 17.6
  • Added Code Check for MISRA C 2012. Rule: 17.1
  • COMPARE:
  • Fixed ignore case and skip whitespace diff options that were broken in build 855
  • JAVA PARSER:
  • Fixed bug where assigning a lambda expression to a variable caused a syntax error
  • Fixed invalid syntax errors on some method definitions with generic return types
  • REPORTS:
  • Document the "Directory" option in the Interactive Report template
  • SEARCH:
  • Fix crash on close when Find in Files is still running

New in Understand 4.0 Build 858 (Oct 10, 2016)

  • API:
  • Location Changes for C, Python and Custom Perl files. More details here https://scitools.com/api-location-changes-for-c-python-and-custom-perl/
  • C# PARSER:
  • Fixed a problem with the wrong overloaded method being chosen in some cases. Also, fixed a problem that could cause unknown entities to be created for library entities on refresh parsing.
  • Fixed some problems with overload resolution and references using implicit typing in 'foreach' statements.
  • CODECHECK:
  • Added MISRA 2012 Directive 4.12 to Code Check.
  • Added MISRA 2012 rule 16.5 to Code Check.
  • Updated MISRA 2008 rule 2-13-4 and All Check script literalSuffixesShallBeUpperCase.upl to no longer test inactive code.
  • Added MISRA 2012 rule 16.4 to Code Check.
  • Added MISRA 2012 rule 20.4 and All Check script macroDefinedAsKeyword.upl to Code Check.
  • Add MISRA 2012 directive 4.8 and All Check script objectImplementationHidden.upl to Code Check.
  • Updated MISRA 2012 rule 20.1, MISRA 2008 rule 16-0-1, MISRA 2004 rule 19.1 and All Check script includesComeFirst.upl to ignore inactive code.
  • INSTALLER:
  • Fixed some errors in package install on Mac.
  • PASCAL PARSER:
  • For Pascal/Delphi, added CountLineInactive metric.
  • SEARCH:
  • Fixed an issue with Find in Files when a user closes the results window while finding. Fixed an issue in the Find and Replace preview window when no project is loaded.
  • STRICT PARSER:
  • Disable built-in includes on Windows.
  • WEB PARSER:
  • For web/html, fixed crash on extremely long strings for href url names.

New in Understand 4.0 Build 857 (Sep 21, 2016)

  • CODECHECK:
  • Added MISRA 2012 directive 4.6 to Code Check
  • GENERAL:
  • Fixed crash on exit when dock widgets are drawered

New in Understand 4.0 Build 856 (Sep 15, 2016)

  • CODECHECK:
  • Updated MISRA 2008 rule 0-1-10 and All Check script definedFunctionsCalled.upl to have a configurable option to ignore standard library functions.

New in Understand 4.0 Build 855 (Sep 7, 2016)

  • CODECHECK:
  • Added Code Check for MISRA-C 2012 rule: 20.2.
  • Added Code Check for MISRA-C 2012 rule: 20.3.
  • EDITOR:
  • Fixed syntax highlighting of Objective-C literal strings with escaped quotes.
  • FORTRAN PARSER:
  • Fixed bug where the wrong filename could appear on missing include file warnings in free format when the include line was itself in an included file.

New in Understand 4.0 Build 854 (Aug 30, 2016)

  • CODECHECK:
  • Updated MISRA 2004 rule 2.4 to have configurable option to ignore inactive code.
  • Added Code Check for MISRA-C 2012 Rule 20.11.
  • GENERAL:
  • Fixed possible crash on projects containing file entities with trivial long names.
  • JOVIAL:
  • Added 'set' relations for uses of variables as out parameters in subroutine calls.
  • STRICT:
  • Fixed failure to find angled bracket includes with the option to search for missing includes among project files.

New in Understand 4.0 Build 853 (Aug 30, 2016)

  • CODECHECK:
  • Fixed divide by zero error with HIS #11.
  • Added Code Checks for MISRA C 2012 Rules: 2.1, 16.2, 16.3, 17.2, 19.2, 20.1, 20.5, 20.10, 20.13, 20.14, 21.1, 21.2, 21.3, 21.4, 21.5, 21.6, 21.7, 21.8, 21.9, 21.10, 21.11, 21.12
  • Fixed logic error in MISRA 2008 rule 16-0-3 and MISRA 2004 rule 19.6.

New in Understand 4.0 Build 852 (Aug 15, 2016)

  • COBOL:
  • Fixed crash on invalid COPY … REPLACING … statements
  • Added support for TITLE statement in the id division
  • JAVA PARSER:
  • Fixed syntax error on type cast of lambda expression
  • LICENSING:
  • Fixed a licensing server issue where if an older client build connected and established a license to a license server, a newer client build from the same computer with the same user and a valid maintenance expiration date could not use the same license

New in Understand 4.0 Build 851 (Aug 9, 2016)

  • ADA:
  • Fixed bug where using named parameter association in import_procedure pragmas did not work correctly in some cases.
  • C# PARSER:
  • Fixed bug where ‘analyze -changed’ did not analyze all required files in some cases.
  • CODECHECK:
  • Updated MISRA 2004 rule 20.9 and All Check script stdio.hLibNotUsed.upl to not test inactive code.
  • Fixed a bug in MISRA 2008 rule 6-4-8, MISRA 2004 rule 15.5, and All Check script switchStatementShallHaveCaseClause.upl where compound statements were not handled correctly.

New in Understand 4.0 Build 850 (Aug 3, 2016)

  • C# PARSER:
  • Fixed incorrect values for AvgComplexity metrics on some files that contain interface type declarations.
  • Fixed syntax error on use of 'out' keyword in named parameter association.
  • CODECHECK:
  • Expanded functionality of MISRA 2008 rule 7-1-2 and All Check script parameterShallBeDeclaredAsConst.upl to better detect when a parameter is passed to another function.
  • Updated MISRA 2008 rule 8-5-1 and All Check script variablesShallHaveValueBeforeUsed.upl to have a configurable option to treat data members passed to another function as initialized.
  • Updated MISRA 2008 rule 12-1-3 and All Check script explicitConstructors.upl to ignore copy and move constructors.
  • Updated MISRA 2008 rule 7-1-1 and All Check script unmodifiedVariablesShallBeConst.upl to have a configurable option to lessen the requirements to variables and parameters independently.
  • Updated MISRA 2008 rule 6-4-5, MISRA 2004 rule 15.2 and All Check script unconditionalStatementShallTerminateNonEmptySwitchClauses.upl to accept Preprocessing directives used in switch statements.
  • FORTRAN:
  • Fixed bug in auto format determination that sometimes produced a truncate value that was too low.
  • JAVA PARSER:
  • Fixed bug where a method reference prefixed by an unknown method name sometimes resulted in a reference to the wrong method entity.
  • LICENSING:
  • Updated the License Server, Und, the various APIs and the Eclipse plugin to extend the expires timeout to 2 hours (applies to Und, APIs and Eclipse plugin only). The database open and analyze will re-checkout the license and the database close will check in the license. Please note that both the license server and the clients need to be updated to have the new extended expires time active.
  • Updated Understand/Und to use the Portable/Dongle license expiration date as a maintenance expiration date.
  • PASCAL PARSER:
  • Fixed syntax error on some uses of attributes on property declarations, and syntax error on some generic function declarations.
  • Fixed syntax error on 'stdcall' in some contexts, syntax error on some uses of the 'inherited' keyword, and syntax error on some public property declarations following method declarations.
  • Fixed syntax error for some const class and record fields.
  • SEARCH:
  • Fixed an issue in Find in Files – Architectures where the architecture from the Architecture Browser right click menu would not be checked by default.
  • STRICT:
  • Fixed scope of template parameter define references to be the templated entity instead of the enclosing scope.
  • WEB PARSER:
  • For xml, made change to use fullnames for xml elements, so separate elements are created for elements with the same simple name but nested in parent elements with different names.
  • For Javascript, removed parent context name from full names of properties defined in object literals in executable code.

New in Understand 4.0 Build 849 (Jul 30, 2016)

  • CODECHECK:
  • Updated MISRA 2008 rule 9-3-3 and All Check script methodsMadeConstOrStaticIfPossible.upl to test for calling non static and non const functions.
  • FORTRAN:
  • Fixed bug in auto format determination where truncate column was sometimes determined incorrectly when string literals contained long sequences of space characters.
  • FUZZY PARSER:
  • In unnamed enum definitions in typedefs, display the typedef name for the enumerator types.
  • PASCAL PARSER:
  • For Delphi/Pascal, fixed bug causing parser hang.
  • REFACTOR:
  • Fixed an issue in Refactor – Rename with not allowing for File includes to be renamed.

New in Understand 4.0 Build 848 (Jul 30, 2016)

  • API:
  • Improve api lexer for c++ preprocessor lines.
  • C# PARSER:
  • Fixed bug where some overloaded method calls with implicit conversion parameters resulted in references to unknown methods.
  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 0-1-7 and All Check script discardedReturnValues.upl where a void cast, pointer calling of a method, was flagged as a violation.
  • INSTALLER:
  • Add Digital Signatures to the Windows Installers and executables.

New in Understand 4.0 Build 847 (Jul 12, 2016)

  • C# PARSER:
  • Fixed bug where using a type keyword for a member reference, e.g. 'string.Empty', resulted in an unknown entity instead of a reference to the correct member.
  • FORTRAN PARSER:
  • Fixed bug where call statement with alternate returns was not supported correctly in the control flow graph.
  • IREPORT:
  • Remove the Batch Graph Interactive Report from the installer since it causes issues with the Python API on Linux. It can still be installed from https://scitools.com/support/gui-plugins/
  • PROJECT:
  • Updated New Project Wizard to allow users to specify a One Time Import option when using CMake or Visual Studio import files. This disables the sync functionality but allows the user to modify project files after the import.
  • PYTHON PARSER:
  • Added support for Python 3.5 async, await, and the @ operator.

New in Understand 4.0 Build 846 (Jun 30, 2016)

  • C# PARSER:
  • Added use reference for variable increment/decrement with ++/– when the resulting value is used in the expression.
  • CODECHECK:
  • Added an option to MISRA 2012 rule 15.5, MISRA 2008 rule 6-6-5, MISRA 2004 rule 14.7, Hersteller Initiative Software rule 10, and All Check script oneExitPerFunction.upl to ignore code within inactive code blocks.
  • Fixed a bug in MISRA 2012 rule 8.4 and All Check script compatibleDeclarationVisibleWhenExternalLinkageIsDefined.upl where global const declared objects were being checked.
  • Fixed a bug MISRA 2008 rule 6-4-5, MISRA 2004 rule 15.2, and All Check script unconditionalStatementShallTerminateNonEmptySwitchClauses.upl where compound statement in the default clause and switch statements that exist inside inactive code were not handled correctly.
  • Fixed a bug in MISRA 2012 rule 15.5, MISRA 2008 rule 6-6-5, MISRA 2004 rule 14.7, Hersteller Intiative Software rule 10, and All Check oneExitPerFunction.upl where inline void functions were not being treated correcly.
  • JAVA PARSER:
  • Added use reference for variable increment/decrement with ++/– when the resulting value is used in the expression.
  • REFACTOR:
  • Updated the Refactor tool to exclude inappropriate references.
  • REPORTS:
  • Updated the "Unused Objects and Functions" report to exclude implicit constructors and parameters that belong to overridden abstract functions for php.
  • WEB PARSER:
  • For Javascript, added use reference for variable increment/decrement with ++/– when the resulting value is used in the expression.

New in Understand 4.0 Build 845 (Jun 30, 2016)

  • CODECHECK:
  • Fixed a bug in 10_assignmentOperatorReturnThis.upl and assignmentOperatorReturnThis.upl where a false positive was triggered when const was part of the FQN.
  • Updated MISRA 2008 rule 15-3-6 and All Check script exceptionsHaldersOrderedFromMostToBase.upl to be faster and more accurate.
  • GENERAL:
  • Add detailed language information to the hover text on the Project Configuration Language Panel.
  • IREPORT:
  • Add a new project level Interactive Report to Batch Generate Graphs.
  • METRICS:
  • Added CountPathLog metric for ada, c#, c++, fortran, java, jovial, pascal, python, and web languages.
  • PROJECT:
  • Fixed restoration of excluded directories from the context menu.
  • SEARCH:
  • Fixed an issue with the Find in Files exclude checkbox unchecking when the file types were modified.
  • STRICT:
  • Record calls to functor object call operators as 'call' instead of 'use'.

New in Understand 4.0 Build 844 (Jun 6, 2016)

  • API:
  • Fix string functions (eg, udbEntityNameLong) in user_api.
  • CODECHECK:
  • Fixed a bug in codeSlicingShouldNotOccur.upl where setting a string member object triggered a script failure.
  • Updated MISRA 2008 rule 9-3-3 and All Check script methodsMadeConstOrStaticIfPossible.upl to not test operator overloads.
  • GENERAL:
  • Fix for intermittent crash in creating the default architecture.
  • GRAPHS:
  • Fix issue with UML Class diagram where slashes in the default value of a member object would cause the graph to not draw.
  • JAVA PARSER:
  • Fixed some problems with Java 8 method references using 'class_name::method_name' syntax. Also, fixed a bug where multiple function calls within the same expression, separated with '.', sometimes resulted in incorrect call references.
  • STRICT:
  • Added class and instance method counts for Objective-C.
  • Fixed kind of const and volatile qualified member function templates.

New in Understand 4.0 Build 843 (Jun 6, 2016)

  • ANNOTATIONS:
  • Fixed issue where line annotations were incorrectly showing up in other files.
  • CODECHECK:
  • Add two Ada Codechecks to test for unused and uncommented variables.
  • FUZZY PARSER:
  • For fuzzy c++ parser, show function and variable location in IB when specified with certain compiler extensions, such as '@', '_at_' and 'pragma location'.
  • PORTABILITY:
  • Fixed issues with relative and named root files in visual studio and cmake projects.

New in Understand 4.0 Build 842 (Jun 6, 2016)

  • C# PARSER:
  • Fixed a bug in handling partial types that resulted in unknown entity references.
  • COMMANDLINE:
  • Improve documentation for und settings.
  • GENERAL:
  • Fixed intermittent crash when changing project portability mode.
  • JAVA API:
  • Updated the Java API to include the ent.library() call.
  • Updated the Java API entity to include "value, language and parameters".

New in Understand 4.0 Build 842 (May 26, 2016)

  • C# PARSER:
  • Fixed a bug in handling partial types that resulted in unknown entity references.
  • COMMANDLINE:
  • Improve documentation for und settings.
  • GENERAL:
  • Fixed intermittent crash when changing project portability mode.
  • JAVA API:
  • Updated the Java API to include the ent.library() call.
  • Updated the Java API entity to include "value, language and parameters".

New in Understand 4.0 Build 841 (May 18, 2016)

  • JOVIAL PARSER:
  • Fixed parser hang on some !Assembly directives. Also, made change to allow no ';' before 'begin' in a 'def block' statement

New in Understand 4.0 Build 840 (May 11, 2016)

  • C# PARSER:
  • Fixed bug where a reference to a class with the same name as a nested class could sometimes generate a reference to the wrong entity.
  • INFOBROWSER:
  • Show python sub packages and parent packages in IB.
  • Show java sub packages and parent packages in IB.
  • JAVA PARSER:
  • Added 'transient' and 'volatile' to the type text of variables declared with these modifiers. Also, added a new reference kind, 'use return' for a variable directly returned by a method.
  • LICENSING:
  • Updated the License Server almhostid mismatch error.
  • PROJECT:
  • Updated Understand/Und to report the "Last Locked Process Id".
  • PYTHON PARSER:
  • Removed '__init__' from full names of entities defined in package __init__.py files.
  • Added 'declare/declarein' relations between packages and subpackages.

New in Understand 4.0 Build 839 (May 3, 2016)

  • C# PARSER:
  • Fixed bug where no call reference was created when an overloaded method was called but parameters passed didn't match any overload
  • Fixed bug where the use of an alias type name in a 'new' expression as an actual argument caused problems with overload resolution
  • FORTRAN:
  • Potential fix for a Fortran 66 Project Overview Chart crash
  • FUZZY PARSER:
  • Preserve parameter types in function pointer types in fuzzy c++ parser
  • GENERAL:
  • Added MaxNesting metric to the Treemap options
  • GRAPHS:
  • Preserve open/closed status of graphic nodes when changing Comments, Filename and Name options
  • Fixed a UML Sequence Diagram crash from the command line and the GUI
  • JAVA PARSER:
  • Created package entities for all levels of a dotted package name and linked packages to subpackages with a 'declare' relation
  • PASCAL PARSER:
  • For Pascal/Delphi, fixed syntax error on use of 'inline' in .dfm file
  • PYTHON PARSER:
  • Added 'Python Module File' kind

New in Understand 4.0 Build 838 (Apr 27, 2016)

  • ANNOTATIONS:
  • Fixed an issue in Annotations where duplicate annotations sometimes appeared.
  • C PARSER:
  • Add support for volatile and const volatile method kinds in fuzzy c++ parser
  • EDITOR:
  • Fixed C# semanitic syntax highlight issues.
  • GENERAL:
  • Fixed an issue with the Windows Navigator shortcut not working properly.
  • INFOBROWSER:
  • Add support for php overrides field in IB.
  • PROJECT:
  • Ensure that nonexistant "found" includes are removed from the project on rescan.
  • REPORTS:
  • For Web Php, added 'overrides' link from function in child class to an overridden function in parent class. Fixed bug where overriding functions were listed as Unused.
  • WEB PARSER:
  • For Php, fixed bug where reference to a constant inherited from a parent class in a different file resulted in an 'unresolved' entity.

New in Understand 4.0 Build 837 (Apr 19, 2016)

  • ANNOTATIONS:
  • Fixed an Annotation issue where the Annotation search results were not opening the correct location in the editor.
  • GRAPHS:
  • Add php Property entities to the UML Class diagram.
  • Fixed a crash in the UML Sequence Diagram when trying to use unresolved entities.
  • PASCAL PARSER:
  • For Delphi/Pascal, made change to better recover from some syntax errors in parsing.
  • For Pascal, fixed bug where more than one label on a statement caused syntax errors.
  • REPORTS:
  • Fixed a crash in report generation when annotating a project file that does not have a valid file extension for any of the languages.
  • WEB PARSER:
  • For Php, added call to class constructor at a 'new ' expression.

New in Understand 4.0 Build 836 (Apr 13, 2016)

  • ANNOTATIONS:
  • Fixed an issue with annotations trying to convert to the latest project portability settings after an analysis instead of when a user changes the project settings.
  • CODECHECK:
  • Add yield() api support for codecheck scripts.
  • Updated the CodeCheck gui log to display a longer file path name instead of just the filename and extension.
  • Updated the CodeCheck gui log to show the file and the check in progress.
  • Improve interactivity when Codecheck scripts are running.
  • Updated the CodeCheck gui verbose log to show the individual check being run, the running time or duration of each file, and the overall running time or duration.

New in Understand 4.0 Build 835 (Apr 5, 2016)

  • CODECHECK:
  • Add the word Global to the description of each Global CodeCheck

New in Understand 4.0 Build 834 (Mar 29, 2016)

  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 12-8-1 and All Check script copyConstructorInitializeBaseAndMembers.upl where certain member functions were being flagged as violations despite not being a copy constructor.
  • GRAPH:
  • Fix a crash dealing with the Cluster Graphs.
  • Fixed possible crash in control graph generation.
  • PROJECT:
  • Add project option for Javascript module search path.
  • USER API:
  • Enforce const correctness and temporary nature of strings in user_api.
  • WEB PARSER:
  • For Javascript, made changes to use module search path option to locate imported modules in Javascript 6.

New in Understand 4.0 Build 833 (Mar 22, 2016)

  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 15-3-3 and All Check script constructorOrDestructorShallNotReferenceNonStaticMembers.upl where violations weren't being reported correctly.
  • GENERAL:
  • Moved the Project Configuration Options to Tools – User Interface.
  • Moved the Command Window Font option to Tools – User Interface.
  • Added an option to allow the user re-open graphs when opening a project. By default, this is turned off so that graphs do not reload automatically.
  • GRAPHS:
  • Added Cluster With Butterfly graph for Ada.
  • Update the UML Class Diagram to display if a method is virtual.
  • PARSER:
  • Add support for IAR ARM compiler extension _Pragma().
  • PROJECT:
  • Updated the Und command line settings -adaVersion to update the Standard directory as well.
  • WEB PARSER:
  • For Javascript, fixed bug where javascript 6 import of a default entity generated an import relation with line number 0.
  • Fixed bug in line counts when css files contain import rules.

New in Understand 4.0 Build 832 (Mar 16, 2016)

  • ANNOTATIONS:
  • Updated the Project Conversion to convert the annotation entities uniquenames instead of orphaning them
  • CODECHECK:
  • Updated MISRA 2012 rule 8.2 and All Check script functionsTypesInPrototypeForm.upl to correctly handle lambda functions
  • Fixed a bug in MISRA 2012 rule 5.8 and All Check script externalIdentifiersUnique.upl where duplicate violations were reported
  • Fixed a bug in MISRA 2008 rule 0-1-7 and All Check script discardedReturnValues.upl where C style casts were being incorrectly handled

New in Understand 4.0 Build 831 (Mar 16, 2016)

  • ADA PARSER:
  • Changed the CountSemicolon metric for subroutines to include semicolons that separate parameter declarations.
  • CODECHECK:
  • Updated MISRA 2012 rule 8.10 and All Check script inlineFunctionDeclaredStatic.upl to no longer test operator overloads.
  • COMMANDLINE:
  • Fixed an issue where Und would not set the file to excluded when removing file that were added using -CommandAddMode.
  • GENERAL:
  • Updated to not allow analysis when reports are generating or allow access to Reports/Generate Reports or Reports/Configure Reports when analyzing.
  • Missing Header Files Dialog updates.
  • GRAPHS:
  • Add Imports and ImportedBy graphs for javascript.
  • INFOBROWSER:
  • Show alias and export references in javascript IB.
  • Add aliases and import/export fields for javascript IB.
  • PROJECT:
  • Fixed CodeCheck ignores list to update when project portability is switched.
  • SEARCH:
  • Added an option to turn off hover text in Find in Files Results.
  • WEB PARSER:
  • For Javascript, allow full path names in Javascript 6 module imports and reexports.

New in Understand 4.0 Build 830 (Mar 3, 2016)

  • ADA PARSER:
  • Made changes to support Ada to C linkage of subroutines using aspects
  • Fixed bug where pragma imports of constants did not correctly link to the external c entity
  • CODECHECK:
  • Updated MISRA 2012 rule 8.10 and All Check script inlineFunctionDeclaredStatic.upl to not test inline template functions
  • Updated MISRA 2012 rule 8.10 and All Check script inlineFunctionDeclaredStatic.upl to no longer test member functions
  • Updated MISRA 2008 rule 9-3-3 and All Check script to have a configurable option to treat passing of member data to another function as modifying the data
  • EDITOR:
  • Show annotations in printouts
  • FORTRAN:
  • Add missing binary.f90 to Fortran sample project
  • GENERAL:
  • Fixed an issue where add/remove files were not Case Insensitive for windows
  • Disallow rescan during analysis
  • INSTALLER:
  • Fix display issue with Windows installer and slashes
  • LICENSING:
  • Fixed a floating licensing issue with multiple builds from a single computer
  • Fixed a ToGo license issue where the license server was reporting a denied ToGo license as checked out but not as part of the total licenses in use
  • METRICS:
  • For web Javascript, added metrics for Javascript 6 classes
  • WEB PARSER:
  • For web Javascript, changed relation kind for Javascript 6 'export … from file' to a 'reexport' relation (previously it was' export'). Added a new 'reexport all' relation for 'export * from file'

New in Understand 4.0 Build 829 (Feb 23, 2016)

  • CODECHECK:
  • Updated MISRA 2008 rule 0-1-7 and All Check script discardedReturnValues.upl to correctly handle templated constructor initialization lists
  • Updated MISRA 2008 rule 7-5-4, MISRA 2004 rule 16.2, HIS rule 12, and All Check script noRecursion.upl to point violation at the instance of recursion
  • Updated MISRA 2008 rule 7-1-2 and All Check script parameterShallBeDeclaredAsConst.upl to have a configurable option to treat parameters passed to another function as modified
  • Updated All Check script externalTypeMismatch.upl to have a configurable option to treat MACROs without a value as an empty string
  • Updated All Check script constRefParam.upl to ignore move constructors
  • Updated All Check script oneVariablePerLine.upl to correctly handle range based loops
  • GENERAL:
  • Fixed crash on switching projects with the contextual information sidebar open
  • Fix bug where file extension to file type mapping was broken
  • Fixed an issue where the expand/collapse icon would disappear in the Project Config dialog
  • LICENSING:
  • Allow resizing of the License Setup Dialog
  • STRICT PARSER:
  • Fixed invalid entity kind for functions called in a template parameter dependent context and found through a using declaration. Added missing 'Using' reference to templates referenced in a using declaration
  • Fixed duplicate references to constructor call arguments in template class instantiations
  • WEB PARSER:
  • For Web Javascript, made changes to handle symbol lookup and refresh parsing for modules
  • For Web html and xml, fixed bug that caused invalid syntax errors and incorrect line counts

New in Understand 4.0 Build 827 (Feb 17, 2016)

  • CODECHECK:
  • Updated MISRA 2012 rule 8.2 and All Check script functionsTypesInPrototypeForm.upl to correctly handle functions declared with template parameters
  • Updated MISRA 2012 rule 6.1 and 6.2 as well as All Check scripts bitFieldsDeclareWithAppropriateType.upl and singleBitNamedBitFieldsNotSigned.upl to properly handle nested typedef(s)
  • Fixed bug in MISRA 2008 rule 2-13-1, MISRA 2004 rule 4.1, and All Check script onlyStandardEscapes.upl where #include directives that included a \ character were flagged as violations
  • LICENSING:
  • Fixed licensing issue with Linux when adding an additional license
  • PROJECT:
  • When converting projects to relative mode, don't convert files above the project directory
  • Fixed project browser file sync

New in Understand 4.0 Build 826 (Feb 13, 2016)

  • CODECHECK:
  • Fixed a bug in MISRA 2012 rules 5.2 and 5.3, MISRA 2008 rule 2-10-2, MISRA 2004 rule 5.2 and All Check script identifiersDistinctInScope.upl and scopeHiding.upl where certain file endings were not handled correctly.
  • Updated MISRA 2012 rule 8.3, MISRA 2008 rule 3-2-1, MISRA 2004 rule 8.3, and All Check scripts allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl to properly handle functional MACRO expansion.
  • Updated MISRA 2008 rule 0-1-4 and All Check script singleUseVariables.upl to not test template parameters.
  • GENERAL:
  • Fixed crash on override definition.
  • GRAPHS:
  • UML Sequence Diagram updated to show the defined in instead of the parent (if valid).
  • Updated the UML Sequence Diagram Visio export to fix an issue with malformed Visio code.
  • PARSER:
  • Add support for displaying scopes in assembly files.

New in Understand 4.0 Build 825 (Feb 10, 2016)

  • CODECHECK:
  • Fixed bug in MISRA 2008 rule 15-3-7 and All Check script catchAllHandlerShallOccurLast.upl where nested try .. catch blocks and successive try .. catch blocks were not tested correctly.
  • Fixed bug in MISRA 2012 rule 8.2 and All Check script functionsTypesInPrototypeForm.upl where functions built with MACROs were not handled correctly.
  • Updated MISRA 2012 rule 8.4 and All Check script compatibleDeclarationVisibleWhenExternalLinkageIsDefined.upl to not run on function templates.
  • Fixed bug in MISRA 2008 rule 15-5-1 and destructorsNotThrowException.upl where destructors defined by MACROs were not handled correctly.
  • Updated MISRA 2008 rule 7-1-1, All Check scripts unmodifiedVariablesShallBeConst and separateVariableDeclaration.upl to correctly handle template parameters.
  • Updated MISRA 2008 rule 11-0-1 and All Check script nonPodMemberDataPrivate.upl to ignore class templates.
  • Updated MISRA 2012 version 8.2 and All Check script functionsTypesInPrototypeForm.upl to allow for a MACRO defined as void to serve as an empty parameter list.
  • Updated MISRA 2004 rules 8.10 and 8.11 as well as All Check scripts explicitStaticWhenInternal.upl and staticLinkageWhenPossible.upl to not test function templates.
  • Updated operandOfSideEffect.upl to handle lambda functions correctly.
  • Updated MISRA 2008 rule 3-1-1 and All Check script possibleToIncludemultipleTranslationsWithoutViolatingOneDefinition.upl to not run on class template methods.
  • Updated MISRA 2004 rule 16.1 and All Check script noVarArgs.upl to no longer check implicit declarations.
  • Updated MISRA 2008 rule 6-4-6, MISRA 2004 rule 15.3 and All Check script switchHasDefault.upl to correctly handle MACROs used to build switch statements.
  • COMMANDLINE:
  • Updated Und Settings -CommandAddMode to correctly add files and directories to the project as Relative or Absolute independent of the Settings -AddMode configuration.
  • LICENSING:
  • Licensing dialog – Fixed a text issue with multiple "days" showing up.
  • PROJECT:
  • Updated the New Project Wizard so that none of the languages are on by default during the initial new project setup.
  • WEB PARSER:
  • For Web Javascript, made changes to allow parsing of Javascript 6 classes.
  • For Web Javascript, made changes to handle import and export syntax for Javascript 6.

New in Understand 4.0 Build 824 (Feb 3, 2016)

  • CODECHECK:
  • Updated MISRA 2012 rule 8.4 and All Check script compatibleDeclarationVisibleWhenExternalLinkageIsDefined.upl to ignore main.
  • Updated incompleteConstructorInitializationList.upl to handle class templates correctly.
  • GRAPHS:
  • Update to UML Sequence Diagram. Shows undefined functions in their own lifeline.
  • PROJECT:
  • Fixed failure to update fuzzy/strict settings panels on change.
  • STRICT PARSER:
  • Fixed worker process crash on malformed lambda.

New in Understand 4.0 Build 823 (Feb 3, 2016)

  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 4-5-1, MISRA 2004 rule 12.6 and All Check script booleanOperatorShallBeUsedCorrectly.upl where the token following a boolean was not being tested
  • Add Regular Expression option to Naming Convention Checks
  • COMMANDLINE:
  • Fixed failure to start Und in interactive mode
  • Updated Und version with the "-dbversion" switch. This will allow the users to view the database version creation and modified build number. The database "-db" will need to be supplied. I.E. und version -dbversion somedatabase.udb
  • PROJECT:
  • Fixed crash on project rescan

New in Understand 4.0 Build 822 (Jan 31, 2016)

  • CMAKE:
  • Fixed relative name lookup.
  • CODECHECK:
  • Updated MISRA 2012 rule 8.6 and All Check script identifierWithExternalLinkageOneDefinition.upl to not run on unknown or undefined objects.
  • Updated MISRA 2008 rule 8-4-2, MISRA 2004 rule 16.4, and All Check script sameIdentifiersInDeclAndDef.upl to use lexeme->ent for greater accuracy.
  • Fixed a bug in MISRA 2012 rule 8.2, MISRA 2008 rule 8-4-2, MISRA 2004 rule 16.4, and All Check scripts functionsTypesInPrototypeForm.upl as well as sameIdentifiersInDeclAndDef.upl where function MACRO expansion was not handled correctly.
  • Updated MISRA 2012 rule 5.8 and All Check script externalIdentifiersUnique.upl to no longer test unknown entities.
  • Fixed bug in missingParameterName.upl where >> was not handled correctly.
  • ECLIPSE:
  • Update Eclipse plugin on update site to version 1.1.3.
  • GENERAL:
  • Changed new project wizard to allow import from CMake compile command databases.
  • GRAPHS:
  • UML Sequence Diagram C, fix for an issue where functions do not have a valid parent.
  • LICENSING:
  • Fixed an issue with the license server not returning a valid license when looking for the earliest available non maintenance expired license.
  • METRICS:
  • For C#, added knot count metrics.
  • PROJECT:
  • Allow files and directories that are automatically added during analysis to be excluded from the project instead of removed entirely. This means that they won't be re-added during subsequent analyses.
  • Fix rescan to not force a full reparse of MSVC projects.
  • VISUALSTUDIO:
  • Add support for MSVC 2015.

New in Understand 4.0 Build 821 (Jan 20, 2016)

  • ADA:
  • Added new 'end body' relations for ends of program unit bodies. Made declare relations for 'accept..do' statements 'declare body' relations.
  • CODECHECK:
  • Fixed a bug in missingParameterName.upl where a false positive was thrown when a std::array object was used as a parameter.
  • Updated HIS 01 and CommentCodeRatio.upl to have an option to run on either per file or per function.
  • Updated unusedLocal.upl to ignore __range local object that's created during a range based loop.
  • Updated MISRA 2004 rule 16.3, All Check script allFuncParamsNamed.upl and the InfoSiftr.pm library to utilize entities for more accurate parameter parsing.
  • COMMANDLINE:
  • Updated Und to include an -exitstatus (lowercase) command line parameter for CodeCheck. This will override the errorlevel returned by Und with the CodeCheck violation count.
  • GENERAL:
  • Added Scopes List support for basic, cobol, javascript, php, plm, vhdl and xml.
  • GRAPH:
  • Updated the UML Sequence Diagram to display the function filename instead of the function name in the lifeline header. The activation/click lifeline header will be for the file as well (not the function).
  • PERL:
  • Updated a_globals.pl with configurable flag options for testing local objects used across multiple program units.
  • PROJECT:
  • Don't show watched directories that are empty because all of their contents are excluded.
  • Added project settings page to manage CMake compile command databases.
  • Add CMake compile command databases as synced project files.
  • STRICT:
  • Fixed missing define reference to exception catch variable decls defined inside of lambdas.
  • VHDL:
  • Changed 'end' references to 'end body' for package and subprogram body declarations.

New in Understand 4.0 Build 820 (Jan 13, 2016)

  • CODECHECK:
  • Fixed bug in MISRA 2008 rule 9-3-2 and All Check script memberFunctionsShallNotReturnNonConstHandles.upl to ignore methods with a const return type
  • Updated MISRA 2012 rule 8.6 and All Check script identifierWithExternalLinkageOneDefinition.upl to have an option for exempted namespaces
  • Updated MISRA 2012 rule 8.6 and All Check script identifierWithExternalLinkageOneDefinition.upl to not test lambda functions
  • ECLIPSE:
  • Removed the limit on how many files could be added to a new Understand project when creating it with the Eclipse plugin
  • GENERAL:
  • Updated the View Menu and removed the Scope List View button from the toolbar
  • GRAPHS:
  • Add an option to the UML Class diagram to hide standard library classes
  • JAVA PARSER:
  • Added support for lambda parameter type inferrence
  • STRICT:
  • Fixed end reference location of lambda functions
  • TOOLS:
  • Fixed icon size issue and extra separator for Mac in the UserTools toolbar

New in Understand 4.0 Build 819 (Dec 30, 2015)

  • EDITOR:
  • Fixed regression in triggering indent after inserting opening curly braces.
  • GRAPHS:
  • Added C support for UML sequence diagrams.
  • JAVA PARSER:
  • Fixed bug where references to any class '?' indicator caused an increment in the count of coupled classes.

New in Understand 4.0 Build 818 (Dec 30, 2015)

  • API LEXER:
  • Fixed bugs in column determination in api lexer when handling certain c++ macro expansions.
  • C#:
  • Add C# project option to control if extending standard classes is counted in MaxInheritanceTree metric. The default behavior in new and existing projects is to not count standard classes in the MaxInheritanceTree metric.
  • CODECHECK:
  • Updated Scott Meyers 9 and All Check script virtualFUnctionCallInConstructorDestructor.upl.
  • Updated MISRA 2008 rule 3-2-4, MISRA 2004 rule 8.9, and All Check script externalLinkageExactlyOneDefinition.upl to not test lambda functions.
  • COMMANDLINE:
  • Fixed an issue with the -CommandAddMode not adding relative paths.
  • IREPORT:
  • Add architecture information to the API Info interactive report.
  • JAVA:
  • Added super name to type text for variables and parameters defined using '? super type-name'.
  • Add java project option to control if extending standard classes is counted in MaxInheritanceTree metric. The default behavior in new and existing projects is to not count standard classes in the MaxInheritanceTree metric.
  • PROJECT:
  • Removed info browser sync to the current selection when the project browser gains focus.
  • SEARCH:
  • Fixed Find in Files Architectures to load correctly on a per project basis.

New in Understand 4.0 Build 816 (Dec 19, 2015)

  • COBOL:
  • Fixed failure to analyze free format files with compiler directives at column 6.
  • JAVA API:
  • Added 'type' and 'freetext' functions to Entity class.
  • STRICT PARSER:
  • Fixed regression in build 815. Unknown files got an empty name.

New in Understand 4.0 Build 815 (Dec 19, 2015)

  • API:
  • Fixed bugs in api lexer when handling c++ macro expansion.
  • CODECHECK:
  • Fixed bug in MISRA 2008 rule 0-1-7 and All Check script discardedReturnValues.upl where a preprocessing #if was being treated as a standard if statement.
  • Updatd MISRA 2008 rule 8-5-1 and All Check script variablesShallHaveValueBeforeUsed.upl to not test template parameters.
  • Updated MISRA 2008 rule 3-2-3, MISRA 2004 8.8, and All Check scripts typeObjectOrFunctionShallBeDeclaredOnce.upl and extDeclareOneFile.upl to not run on Implicit declarations.
  • Updated missingParameterName.upl to correctly handle templated parameters.
  • Updated MISRA 2004 rule 16.3 and All Check script allFuncParamsNamed.upl to ignore =delete and =default delcarations.
  • COMPILER:
  • Add support for @ extension in MPLAB XC8 compiler support.
  • Add support for Renesas RL78 C++ compiler.
  • GENERAL:
  • Updated the bottom layout area to function exactly like the left layout area (saves and restores correctly instead of grouping on startup).
  • IReport Modify the API Info Interactive Report to print entity names as objects that can be interacted with.
  • JAVA PARSER:
  • Added generic type arguments to type text for variables and parameters.
  • METRICS:
  • Add support for MaxNesting metric in c++ classes.
  • PYTHON API:
  • Fixed Ent.refs() signature in class summary to mention 'unique' parameter.
  • SEARCH:
  • Fixed an issue with changing the Find in Files dialog to the Directory setting failing to resize properly.
  • Updated the Find in Files dock/drawer to close the dock on Esc if a dock and close the drawer on Esc if a drawer.
  • STRICT PARSER:
  • Fixed header resolve errors when headers are found in the working directory or when the input character encoding is different from the system encoding.

New in Understand 4.0 Build 814 (Dec 8, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 9-3-3 and All Check script methodsMadeConstOrStaticIfPossible.upl to have an option to ignore virtual functions.
  • Updated MISRA 2008 rule 7-1-2 and All Check script parameterShallBeDeclaredAsConst.upl to detect simple cases where the parameter is passed out of scope.
  • Fixed bug in MISRA 2012 rule 5.3, MISRA 2008 rule 2-10-2, MISRA 2004 rule 5.2, and All Check script scopeHiding.upl where overriding functions may be detected as false positives.
  • Updated MISRA 2012 rule 8.3, MISRA 2008 rule 3-2-1, MISRA 2004 rule 8.3, and All Check rule allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl to use expanded MACRO text.
  • Updated All Check script destructorSetDataPtrTo0.upl to correctly handle C style and C++ style type casting.
  • PROJECT:
  • Updated the project configuration rescan to properly scan for the file types that may have been changed but not saved yet (while still in the configuration dialog).
  • STRICT PARSER:
  • Fixed possible crash after a large number of consecutive file-not-found errors.
  • Disabled error related to MS-style inline asm. Inline asm isn't analyzed.
  • Added some missing special keywords (e.g. __declspec) to macro expansion. Fixed errant macro expansion tokens expanded from macro names passed as arguments.
  • WEB PARSER:
  • For php, fixed crash on files with unterminated comments.

New in Understand 4.0 Build 813 (Dec 1, 2015)

  • CODECHECK:
  • Fixed an issue with CodeCheck results where Entity name and Check result error message were not displaying html text correctly
  • PROJECT:
  • Updated Und to allow users to set the c++ option 'Kill Worker Processes After'. -c++KillWorkerProcessAfter – Note that valid values range between 1 and 99 minutes
  • Added -commandaddmode option to Und. This will allow for users to specify to add includes, macros etc. in a different addmode for the Und Command (single use). Arguments are 'Absolute' or Relative'

New in Understand 4.0 Build 812 (Nov 26, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 8-3-1 and All Check script overridingVirtualFunctionsShallNotChangeDefaults.upl to not test constructors and destructors.
  • Fixed but in MISRA 2008 rule 9-3-3 and All Check methodsMadeConstOrStaticIfPossible.upl where non static data members were not being detected properly.
  • Updated MISRA 2004 rule 16.3, All Check script allFuncParamsNamed.upl, and the library InfoSiftr.pm to properly utilize MACRO expansion when the 'Save expanded Macro text' option is turned on.
  • Updated MISRA 2004 rule 8.11 and All Check script explicitStaticWhenInternal.upl to not run on classes.
  • Updated MISRA 2008 rule 17-0-3 and All Check script standardLibraryFunctionsShallNotBeOverridden.upl to not run on classes.
  • Updated MISRA 2004 rule 8.10 and All Check script staticLinkageWhenPossible.upl to not run on classes.
  • PYTHON PARSER:
  • Fixed bug where an import from a subpackage using 'from . import name' caused an 'implicit import' relation to the __init__.py file in the current directory.
  • SEARCH:
  • Updated the editor search line (Ctrl+f) to ensure that the search box is at least so wide and made the "Search Wrapped" label a tooltip to provide additional space.
  • Updated Find in Files window to allow the dock/undock feature (pushpin icon) to behave correctly. Note that Escape will not close the window when not free floating.
  • STRICT PARSER:
  • Show calls to functions marked with the noreturn attribute as an exit from the function in the control flow graph.

New in Understand 4.0 Build 811 (Nov 22, 2015)

  • CODECHECK:
  • Fixed a few Perl warnings being caused by mismatched number of parameters.
  • Updated MISRA 2012 rule 8.2 and All Check script functionsTypesInPrototypeForm.upl to correctly handle C++ 11 lambda functions.
  • Updated MISRA 2012 rule 8.2 and All Check script check functionsTypesInPrototypeForm.upl to ignore template specializations.
  • COMMANDLINE:
  • Updated Und to accept wildcards when using the command line ignore options (-C++Ignore, -C++IgnoreAdd, -C++IgnoreRemove).
  • GENERAL:
  • Fixed loss of bookmarks after analysis.
  • PROJECT:
  • Updated the add directory (new project) in Understand and Und to not ignore the exclude when setting the watch property to off.
  • STRICT PARSER:
  • Reduced default template instantiation depth to 128 on Windows.
  • TOOLS:
  • Updated UserTools to not try to run the command if empty.

New in Understand 4.0 Build 809 (Nov 13, 2015)

  • C# PARSER:
  • Added support for c# 6.0 index initializers.
  • Fixed bug loading some reference dll files that have structures used as generic actual parameters for parent classes. This fix may cause changes to CountMethodAll and CountClassCoupled metrics.
  • Add support for MSVC 2015 C# project.
  • Added support for c# 6.0 string interpolation.
  • Added support for c# 6.0 exception filters.
  • CODECHECK:
  • Updated MISRA 2008 rule 6-4-8, MISRA 2004 rule 15.5 and All Check script switchStatementShallHaveCaseClause.upl to allow for MACROs used in switch construction.
  • Updated MISRA 2008 rule 0-1-7 and All Check rule discardedReturnValues.upl to properly handle void casted member functions.
  • Fixed bug in MISRA 2008 rule 8-4-1 and All Check script functionsShallNotBeDefinedWithEllipsisNotation.upl to handle template functions correctly.
  • GENERAL:
  • Fixed popup menu issues in entity filter and 'C++ (Strict)' options panel on Linux and Solaris. Fixed command line warnings related to the same issue.
  • Potential fix for Getting Started News hanging and potentially crashing Understand if shutting down in that state.
  • LICENSESERVER:
  • Updated licensing text email body for sending an almhostid to scitools.
  • Updated the LicenseServer.exe to clear all data and load the new data in the reporting (graph and chart) if a new log file is selected.
  • STRICT PARSER:
  • Fixed invalid implicit init reference for data members with an in-class initializer.

New in Understand 4.0 Build 808 (Nov 13, 2015)

  • C# PARSER:
  • Added support for VS 2015 property initialization.
  • Added support for the c# 'using static' directive and for the use of an expression as a property getter.
  • Added support for c# 6.0 null-conditional operators.
  • CODECHECK:
  • Updated MISRA 2008 rule 7-1-2 and All Check script to correctly handle const type * const correctly.
  • Fixed bug where MISRA 2008 rule 15-1-1 and All Check script throwShallNotItselfCauseAnException.upl could get stuck in an infinite loop.
  • Updated MISRA 2012 rule 8.6 and All Check script identifierWithExternalLinkageOneDefinition.upl to not fail in the event of an entity without a reference.
  • Updated CodeCheck Ignores to use the script error message without the variables filled in to compare when removing ignored violations.
  • Updated noDynamicMemory.upl to have an option to ignore smart pointers.
  • PARSER:
  • Improve c++ resolve time.
  • STRICT PARSER:
  • Fixed possible worker process crash on template parameter dependent bit width expressions.
  • Added option to kill worker processes after timeout. Default is two minutes.
  • Fixed hang on abort when reporting error messages.
  • TOOLS:
  • Added links to LiveChat for evaluation customers.
  • WINDOW:
  • Fixed split workspace drop into chosen tab order.

New in Understand 4.0 Build 807 (Nov 13, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 8-0-1 and All Check script anInitDeclaratorListShallConsistOfASingleInitDeclarator.upl to not throw a false positive on template declarations that use a comma.
  • Updated catchConstRef.upl to have an option to ignore ellipsis.
  • Add Hersteller Intiative Software (HIS) Metrics to CodeCheck.
  • Updated MISRA 2008 rule 8-4-4 and All Check script functionIdentifierShallBeUsedToCallOrAddress.upl to correctly handle function templates.
  • Updated MISRA 2008 rule 15-3-5 and All Check script aClassTypeExceptionWillBeCaughtByReference.upl to be more accurate.
  • FUZZY PARSER:
  • For fuzzy c++ parser, fixed bug where deref references could be erroneously created for some parameter declarations.
  • INFOBROWSER:
  • Updated the New Information Browser key command to not send a sync to the other Information Browsers if the Ctrl key is used. Used the Ctrl key to stay uniform with the option to hold the Ctrl key when using the 'View Information' context menu to open a new IB.
  • STRICT PARSER:
  • Added missing throw and catch references.
  • TOOLS:
  • Updated the hover text in User Tools – Menu Text.
  • Fix for the User Tool ordering with the Move Up and Move Down buttons.
  • User Tools – Added convenience menu items to directly access parts of the User Tools configuration.
  • WEB PARSER:
  • For Php, fixed bug where some static class member references were not recognized.

New in Understand 4.0 Build 806 (Nov 13, 2015)

  • C# PARSER:
  • Fixed bug where same named parameters within overloaded methods had the same uniquename.
  • CODECHECK:
  • Updated MISRA 2004 rule 16.3 and All Check allFuncParamsNamed.upl to have a configurable option to ignore fuctions declared with macros.
  • Removed incremental find popup menu because of resizing and other issues.
  • Updated All Check script uninitialized_objects.upl to ignore static and global objects.
  • Updated MISRA 2012 rule 8.7 and All Check script noExternalLinkageUnlessExternal.upl to recognized friendby references as external usage.
  • Updated All Check script fixedValuesConstants.upl to have an option to ignore pragma directives.
  • COMPARE:
  • Potential fix for a crash in the DiffView component.
  • DOCUMENTATION:
  • Fix title in 4.0 help documentation.
  • EDITOR:
  • Fixed bookmarks disappearing and getting lost after removing the preceding line.
  • Avoid triggering auto-indent with '{' in the middle of a line.
  • FUZZY PARSER:
  • Fixed fuzzy c++ parser to pickup references to constants used as parameters initializers in function declarations and definitions.
  • JAVA PARSER:
  • Fixed bug where same named parameters within overloaded methods had the same uniquename.
  • LICENSING:
  • License Server Status (licenseserver.exe) report updated to account for multiple 4.0 licenses.
  • PROJECT:
  • Removed the option to stop analysis and keep partial analysis data.
  • Fixed deadlock when trying to abort analysis during the resolve phase.
  • STRICT PARSER:
  • Restore some missing init references.
  • Fixed reference kind of deleted special member functions.
  • Allow language standard flag to be spelled with two dashes and normalize to lower case.

New in Understand 4.0 Build 805 (Nov 13, 2015)

  • C# PARSER:
  • Fixed invalid syntax error when using 'as ' in a conditional expression
  • CODECHECK:
  • Fixed bug in MISRA 2008 rule 16-1-1, MISRA 2204 rule 19.14 and All Check script definedPreProcessorOperatorTwoStandardForms.upl where chained defined operators inside a larger marcro defintions was not handled correctly
  • Updated MISRA 2008 rule 18-4-1 and All Check script noDynamicMemory.upl to allow for C++ 11 method and constructor delete
  • Updated MISRA 2008 rule 8-4-4, MISRA 2004 rule 16.9 and All Check script functionIdentifierShallBeUsedToCallOrAddress.upl to correctly handle member functions and functions defined within a namespace
  • COMMANDLINE:
  • Updated the Und dependencies export 'longnoroot' and 'root' format to export the correct root
  • EDITOR:
  • Fixed possible crash in auto-indent within C/C++ preprocessor conditionals
  • FAVORITES:
  • Updated the Favorites 'New Favorites' dialog to have focus on the line edit box
  • Updated Favorite Groups to select the next item in the list after removing the currently selected item
  • GENERAL:
  • Add Understand icon to the install directory to make shortcuts easier to create
  • Fixed invalid prompt to save modified editors after canceling the project configuration dialog
  • PROJECT:
  • Fixed a case sensitivity Windows issue with the 'Browse for Missing Includes' dialog
  • Fixed file encoding override copy/paste
  • STRICT PARSER:
  • Fixed failure to remember override settings for C/C++ language standard and sysroot when changed from the settings dialog
  • Fixed C/C++ language standard override copy/paste
  • Recognize 'h++' as a header extension

New in Understand 4.0 Build 804 (Oct 9, 2015)

  • COMMANDLINE:
  • Updated Und to use a Table of Contents for the -html and -htmlsnippets CodeCheck report export.
  • DOCUMENTATION:
  • Update documentation to reflect 4.0 changes.
  • GENERAL:
  • Clarify user_api functions that return temporary strings that must be copied immediately by the caller.
  • Fixed crash when closing or switching projects with annotations.
  • Fixed failure to update title bar file name in split view.
  • JOVIAL:
  • Made Jovial 3 subroutines declared in compool files but never implemented have kind 'unresolved subroutines'.
  • SEARCH:
  • Fixed a Find in Files issue where Relative and Absolute directory paths were not being searched correctly.

New in Understand 4.0 Build 803 (Oct 9, 2015)

  • C# PARSER:
  • For c#, fixed possible crash in attribute parsing.
  • CODECHECK:
  • Fixed bug in MISRA 2008 rule 6-6-1 and All Check script labelReferencedByAGotoShallBeInSameBlock.upl where /* and */ are used in alternating strings.
  • Updated MISRA 2008 rule 7-1-2 and All Check script parameterShallBeDeclaredAsConst.upl to ignore function pointer parameters.
  • Upgraded MISRA 2008 rule 2-10-5, MISRA 2004 rule 5.5 and All Check staticReuse.upl to include an option to ignore functions that are unknown or unresolved.
  • FUZZY PARSER:
  • Fixed bug in fuzzy c++ parser where macros defined in local scopes were not handled properly.
  • GRAPHS:
  • Rename deferred option in Control Flow Cluster graph to ‘Show Finally-Block Flows’ and enable by default.
  • IREPORT:
  • Add Interactive Report to display API Information for all entities (previously the All Info script).
  • JOVIAL:
  • Added essential complexity and path count metrics.
  • Improved handling of Jovial 3 goto switch statements in control flow graph.
  • Fixed problem where the use of Jovial 3 goto switch statements did not increase the cyclomatic complexity.
  • SEARCH:
  • Fixed an issue where adding Architectures, etc.. would resize the Find in Files dialog inappropriately.
  • STRICT PARSER:
  • Added a persistent warning dialog box for strict parser errors.
  • TREEMAP:
  • Updated the Metrics – TreeMap hover text.

New in Understand 4.0 Build 802 (Sep 30, 2015)

  • CODECHECK:
  • Added MISRA 2012 rule 15.4 and MISRA 2004 rule 14.6 to Code Check. Also updated MISRA 2008 rule 6-6-4 and All Check script noMoreThanOneBreakOrGoto.upl to be more accurate and robust.
  • Added MISRA 2012 rule 15.7 to Code Check.
  • Added MISRA 2012 rule 15.5 to Code Check.
  • COMMANDLINE:
  • Fixed an issue with Und not adding include paths with environment variables correctly on windows.
  • FUZZY PARSER:
  • Added support for National Instruments LabWindows/CVI compiler to fuzzy c++ parser.
  • JOVIAL:
  • Added control flow graphs for Jovial.
  • Added api lexers for Jovial.
  • STRICT PARSER:
  • Fixed regression in showing Windows-specific options in target settings.
  • Downgrade unqualified pointer to member function error to a warning in MSVC compatibility mode.
  • Enable modules by default for Objective-C files.
  • Added better support for blocks.
  • Fixed possible crash on bit field expressions that don't evaluate to an integer constant.
  • Added C++14 language standard options to the configuration panel.

New in Understand 4.0 Build 801 (Sep 23, 2015)

  • BUILDSPY:
  • Added automatic detection of -std flag for switching the C/C++ language standard.
  • CODECHECK:
  • Fixed a bug in MISRA 2012 rule 5.1 and externalIdentifiersShallBeDistinct.upl where unresolved entities were incorrectly handled.
  • Fixed bug in MISRA 2012 rule 15.6 and All Check script iterationStatementShallBeCompoundStatement.upl where do .. while loops were not being handled correctly.
  • Fixed bugs in MISRA 2012 rule 8.4, 6.1 and both of their All Check counterparts as well as externalTypeMismatch.upl to correctly handle typedefs.
  • Updated MISRA 2008 rule 0-1-7 and All Check script discardedReturnValues.upl to handle inline void declarations correctly.
  • Fixed an issue with the tabs shifting focus incorrectly when sorting alphanumerically through the dimple menu and on the CodeCheck tab title change (when alphanumeric sorting is enabled). Also fixed the CodeCheck modified icon (red/green) to show correctly.
  • Updated MISRA 2012 rule 8.6 and All Check script identifierWithExternalLinkageOneDefinition.upl to include a note about adding system header files to project.
  • GRAPHS:
  • Fixed an issue where the .DOT export option was not available on various graph types.
  • For Ada control flow graphs, fixed bug where text was missing for 'abort' statements and select 'when' statements.
  • Fixed a crash on Mac when enabling the .DOT export.
  • STRICT PARSER:
  • Fixed analysis of preprocessed files containing GNU line markers.
  • Added support for all MSVC extensions used in MFC/ATL headers.
  • WEB PARSER:
  • Fixed bug where entity fullnames sometimes had double '..' sequences.
  • For Javascript, fixed bug in nodejs mode where 'exports' properties from different files were being merged.

New in Understand 4.0 Build 800 (Sep 15, 2015)

  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 3-2-1 and All Check script allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl where declarations of type ( Function ) ( Parameters ) were not handled correctly.
  • Added MISRA 2012 rule 15.3 to Code Check.
  • Fixed bug in MISRA 2008 rule 3-2-1 and All Check script allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl where DeclareIn Using references were handled improperly.
  • COMMANDLINE:
  • Added correct usage text for Und analyze -rescan. Affected files will be analyzed after the rescan.
  • Added a new switch -rescanwithoutanalyze to allow users to utilize the Und rescan ability without requiring an analyze of the added/removed files.
  • GENERAL:
  • Fixed sluggish performance in updating the menu system with the new User Tool "Disable for this project" feature.
  • LICENSING:
  • Update dongle licenses to support newer Operating Systems.
  • Fixed an Understand Portable License issue where a weird dialog appeared the first time Understand was run (clean installation) and the portable license dongle was in use.
  • METRICS:
  • Fix calculations of computed project metrics, such as Cyclomatic.
  • PYTHON PARSER:
  • Fixed bug where 'parent' of a python package was sometimes one of the referencing files.
  • STRICT:
  • Added missing init reference for C++11 in-class initialization of non-static data members.

New in Understand 4.0 Build 799 (Sep 11, 2015)

  • CHANGE:
  • Fix for potential crash when analyzing and accessing the Entity Comparison.
  • COBOL:
  • Added support for EJECT and SKIP1/SKIP2/SKIP3 statements.
  • CODECHECK:
  • Fixed a bug in MISRA 2008 rule 6-5-1 and All Check script forLoopShallContainASingleLoopCounter.upl where the new C++ 11 style for loop would crash the script.
  • Fix a CodeCheck issue when double clicking a Result code snippet and no valid entity is associated with that violation. E.G. TODO comment.
  • Fixed a bug in MISRA 2008 rule 3-2-1 and All Check script allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl where nested parenthesis within a declaration would crash the script.
  • Fixed bugs in MISRA 2008 rule 6-5-3, 6-5-5, All Check scripts loopControlVariableNotModifiedWithinConditionOrExpression.upl and loopCounterShallNotBeModified.upl where lexigraphically scanning the for loop did not handle C++ 11 style for loops correctly.
  • Updated externalIdentifiersShallBeDistinct.upl and identifiersDistinctInScope.upl to fail without a script error when scanning malformed code.
  • FORTRAN PARSER:
  • Fixed bug where some macro expansions caused problems in the control flow graph.
  • GENERAL:
  • Fixed an issue with File Dependency CSV Export Dialog hanging on Mac.
  • Fixed library link names for user API library on Mac.
  • LICENSING:
  • Updated the License Server to not allow the AlmFree command to free ToGo licenses.
  • STRICT:
  • Added option to compare include files by contents instead of path when adding found includes.
  • Fixed worker process crash on designated initialization in an anonymous struct or union.
  • TOOLS:
  • Updated User Tools to allow the user to disable a user tool depending upon the project loaded.

New in Understand 4.0 Build 798 (Sep 11, 2015)

  • ADA:
  • Changed allocation reference kind from a plain 'ref' to a 'use alloc'. Also, changed reference kind for a default formal subroutine from a 'call' to a 'ref default formal'.
  • ANNOTATIONS
  • Fixed an issue with Annotations disappearing from various text files.
  • CODECHECK:
  • Updated MISRA 2012 rules 5.1, 5.8 and 8.5 as well as All Check script externalIdentifiersUnique.upl to be able to run on multi language projects.
  • Fixed bug in MISRA 2012 rule 7.3 where a bad entity was being passed to violation.
  • COMPARE:
  • Updated the Tools – Compare – Files results to display the MD5 hash when the files are considered the same.
  • GENERAL:
  • Previewer – Added a keybinding that allows users to toggle the previewer sync checkbox.
  • Fixed text typo in the Project Portability dialog.
  • INFOBROWSER:
  • Add includeby references to Pascal References IB field.
  • PARSER:
  • For Pascal/Delphi, made missing include file messages 'warnings' instead of 'errors' to be consistent with other languages.
  • STRICT:
  • Fixed possible crash on #include_next directives with the option to search for missing includes among project headers enabled.
  • UPERL:
  • Fixed crash on database load with external perl + understand module.

New in Understand 4.0 Build 797 (Aug 26, 2015)

  • API:
  • Fix error handling strings with parentheses in api lexer with macro expansion enabled.
  • C# PARSER:
  • Fixed bug where no 'end' reference was produced for anonymous types.
  • CODECHECK:
  • Updated MISRA 2008 rule 7-3-4 and All Check script usingDirectivesShallNotBeUsed.upl to include line and column numbers in violations.
  • Updated MISRA 2012 rule 8.5 to include file, line number and column number of one of the declare references.
  • Updated MISRA 2012 rule 8.3, MISRA 2004 rule 8.3, MISRA 2008 rule 3-2-1 and All Check script allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl to be more robust in the Strict parser.
  • Fixed potential crash in CodeCheck when jumping to violation code in the Results Locator.
  • CodeCheck – Terminology updated (Analysis – Inspect).
  • Updated name of noErrno to be consistent with other check names.
  • Added 'Fuzzy' tag to MISRA C 6.1, bitFieldsDeclaredWithAppropriateType.upl, singleBitNamedBitFieldsNotSigned.upl, and bitFieldsBoolOrExplicitSignedness.upl.
  • Updated MISRA 2012 rule 8.14 and All Check script restrictShallNotBeUsed.upl to include a notice about using C99 and later.
  • Updated MISRA 2012 rule 8.6 to include the Strict Only tag.
  • Added MISRA 2012 rule 15.6 and All Check script iterationStatementShallBeCompoundStatement.upl to Code Check.
  • FUZZY PARSER:
  • Fix bug handling MSVC solution files with '.' project subdirectory specifications.
  • GENERAL:
  • Fixed an issue with renaming not working properly on files with a different case.
  • GRAPH:
  • For control flow graphs, make change to better handle switch/case statements with no branch alternatives.
  • INFOBROWSER:
  • Bookmark and IB windows now will display the project name if there are multiple instances of Understand running and the windows are floating (not Docked).
  • JAVA PARSER:
  • Added Java Implicit Member Variable and Java Implicit Method kinds to represent the implicit array members 'clone' and 'length'.
  • PASCAL PARSER:
  • For Pascal/Delphi, fixed some problems with include file processing.
  • STRICT PARSER:
  • Fixed regression in saved macro expansion text for some functional macros.

New in Understand 4.0 Build 796 (Aug 18, 2015)

  • ANNOTATIONS:
  • Updated the orphaned annotations to allow the user to right click the annotation or to double click the orphan annotation detail and set the filter text.
  • CODECHECK:
  • Updated MISRA 2008 rule 6-5-3 and All Check script loopCounterShallNotBeModified.upl to be more accurate.
  • Fixed bug in MISRA 2004 rule 14.10 and All Check script danglingElse.upl where an else if statement that ended with preprocessing directives would not properly detect the dangling else.
  • Fixed a bug where MISRA 2012 rule 8.7 and All Check script noExternalLinkageUnlessExternal.upl where unresolved objects were being tested for parents.
  • COMMANDLINE:
  • Fixed an issue in Und where settings -override_c++Includes commands were crashing.
  • INDEX:
  • Fixed intermittent instant search indexer crash.
  • STRICT:
  • Fixed several saved macro expansion text issues.

New in Understand 4.0 Build 795 (Aug 18, 2015)

  • ADA PARSER:
  • Fixed possible crash on attempt to parse binary files as Ada source.
  • ANNOTATION:
  • Fixed crashes in Annotation Orphan management.
  • Fixed an Annotation issue when searching annotations and including orphans.
  • CODECHECK:
  • Updated MISRA 2004 rule 13.3, MISRA 2008 rule 6-2-2 and AllCheck script testingEqualityInFloatingPointValues.upl to also test for !=
  • Updated namespaceNamingConvention.upl to include a configurable option for file names and line numbers.
  • Updated CodeCheck result to sync when visiting the source code.
  • Updated MISRA 2004 rules 20.10 and 20.11 as well as MISRA 2008 rules 18-0-2, 18-0-3 and 18-0-5 to include a configurable option to allow more than one violation per file.
  • Fixed a bug in pointersMustBeInitialized.upl where pointers were not being tested unless the option box was checked.
  • Updated MISRA 2004 rule 6.5, MISRA 2008 rule 9-6-4 and AllCheck script signedBitFieldsUseful.upl to include the Fuzzy Only tag.
  • Fixed bug in MISRA 2004 rule 20.6 and AllCheck script noOffsetof.upl where not all references to forbidden macro were being checked.
  • Fixed bug in MISRA 2008 rule 3-1-2 where functions declared within another function were not being flagged as violations.
  • Fixed bug in MISRA 2004 rule 20.7 and MISRA 2008 rule 17-0-5 where setjmp macro usage was not properly detected.
  • EDITOR:
  • Fixed possible crash on startup or other interference with editor configuration from a local Lua installation with the LUA_PATH environment variable set.
  • GRAPHS:
  • Add options to UML Class diagram to change layout direction and colorize edges for better visibility.
  • Potential fix for an issue in the Cluster Control Flow graphs.
  • PARSER:
  • For assembly, fixed possible crash in parse when Assembly is selected as a language but no assembly files are in the project.
  • PASCAL PARSER:
  • For Pascal/Delphi, fixed bug where some relations could be missing from include files.
  • For Pascal/Delphi, fixed bug where line count metrics for some include files were zero instead of the actual count value.
  • STRICT PARSER:
  • Added simple interface to recursively search a directory for frameworks.

New in Understand 4.0 Build 794 (Aug 4, 2015)

  • BUILDSPY:
  • Fixed regressions in detecting the source file in some compile commands.
  • FORTRAN PARSER:
  • Fixed bug where use of 'endprocedure' and 'endsubmodule' in fixed format files caused the creation of invalid local variables.
  • Fixed bug in fixed format files where reference column numbers were incorrect when multiple semicolon separated statements appeared on a single line. These statements also appeared incorrectly in the control flow graph.
  • Made change to create an unknown module when a submodule's parent is not found.
  • Added support for Fortran 2008 lock and unlock statements.
  • Added intrinsics08.txt file with list of intrinsic functions and modules for Fortran 2008. Added some missing names to the Fortran 2003 instrinsics file.
  • Improved handling of unknown types. All unknown types with the same name now merge into a single entity instead of generating a separate entity for each referencing program entity.
  • GENERAL:
  • Fixed an issue where the Info Browser – Visit Next and Visit Previous would not leave the focus of a released window.
  • Save-All toolbar button now displays properly.
  • Fixed an issue with the Navigator not marking unsaved edited files with "*" correctly.
  • LICENSING:
  • Fixed an issue in almtest where ToGo debug info was showing unnecessarily.
  • REPORTS:
  • Fixed bug where the line break was sometimes missing after the first line of an html object cross ref item.
  • SEARCH:
  • Find in Files – Updated to dynamically resize the height of the dialog depending upon the "Find In" selection.
  • Find in Files – Open Files – Fixed to use the File Types field correctly.

New in Understand 4.0 Build 793 (Jul 30, 2015)

  • PARSER:
  • Improved parsing of source files with apparent embedded null characters, due to missing or improper file encoding specifications.
  • PYTHON PARSER:
  • Made change to count docstring literals as comments instead of statements.
  • Fixed bug where an ‘import from’ an unknown module or package could result in an ‘unknown module’ entity with itself as the ‘parent’.
  • SEARCH:
  • Find in Files – Moved the ! checkbox for file types to a separate line with text for clarification. Fixed the buttons to appear correctly on the Mac.
  • STRICT PARSER:
  • Fixed worker process crash on project header lookup from some #include_next directives.
  • WEB PARSER:
  • For web xml, fixed bug where invalid xml sometimes resulted in zero values for line count metrics.

New in Understand 4.0 Build 792 (Jul 23, 2015)

  • ANNOTATIONS:
  • Wrap Annotations in hover text in editor.
  • CODECHECK:
  • Fixed bug in MISRA 2004 rule 8.8 and corresponding All Check script where declaration of namespaces was not ignored.
  • In Codecheck Checks Panel, wrap the "Detailed Description: File\Path\…" label when it exceeds the width of the window.
  • Updated the Ignored Violations to display the notes as a column and allow for word wrap.
  • In Code Check Checks view, allow columns to be user-resized.
  • Added next page and previous page shortcuts to the codecheck window that can be set under tools->options->keybindings->codecheck.
  • Fixed a bug in MISRA 2008 rule 11-0-1 and it's corresponding All Check script where a POD class was treated as a Non-POD class.
  • GENERAL:
  • Only show indent file and indent selection options in files that support it.
  • Fix custom architectures to remember file entities when project portability changes.
  • Fix editor hover text for unknown functions to match info browser for the parameters and return type.
  • Add a right click menu option for c macros without a define reference to define/change the project value.
  • Possible fix for issue, editor tab tooltips sometimes missing.
  • LICENSESERVER:
  • Update to log usage and provide various reporting tables and graph.
  • LICENSING:
  • Almstatus – Updated the -b attribute to include the CheckedOut and CheckedIn status numbers. Also updated the -? (help) to detail the -b csv format.
  • Almhostid – Updated to include a -s to show all almhostid's including duplicates. Fixed the Almhostid descriptions that were incomplete or absent.
  • PASCAL PARSER:
  • For Delphi Pascal, fixed invalid syntax error parsing some nested type declarations.
  • For Pascal, fixed crash on parsing units with the same name as the containing namespace.
  • PROJECT:
  • Remember Project Browser File Sync checkbox state when Understand closes and reopens.
  • SEARCH:
  • Fixed Project Browser and Information Browser resize when showing incremental search.

New in Understand 4.0 Build 791 (Jul 23, 2015)

  • ANNOTATIONS:
  • Make the add/edit Annotations dialog non-modal. If a reparse invalidates the entity (or the scope for the line), then the Annotations cannot be saved.
  • EDITOR:
  • Added an option to wrap Annotations at a given column, available under tools->options->editor->advanced settings.
  • Show error message for crash on startup from missing or invalid configuration files (instead of silently failing).
  • FORTRAN PARSER:
  • Fixed bug in fixed format files where use of a double word keyword sometimes caused an incorrect column number for the following entity reference.
  • Make individual elements of Fortran fullname IB field clickable.
  • Add Children Information Browser field for Fortran modules.
  • Add Parent Information Browser field for Fortran submodules.
  • Fixed some syntax errors parsing Fortran 2008 submodules in fixed format files.
  • GENERAL:
  • Fix crash on import architecture from xml for xml files with extra spaces in the listed entities.
  • LICENSESERVER:
  • Fixed an issue where almhostid did not show on Mac/Linux. Also added the stop server for Mac/Linux.
  • LICENSING:
  • Almhostid – removed duplicate host ids.

New in Understand 4.0 Build 790 (Jul 23, 2015)

  • ANNOTATIONS:
  • Fix crash in line annotations saving non-project file.
  • CODECHECK:
  • In Codecheck Check List, select check when checkbox is clicked.
  • EDITOR:
  • Change editor tab tool tip to show absolute path.
  • Fixed hang on auto-indent after an unmatched closing parentheses.
  • FORTRAN PARSER:
  • Added support for Fortran 2008 submodules.
  • Added support for Fortran 2008 'impure' attribute.
  • Fixed bug where routines with explicit interface declarations had incorrect values for line counts, complexity, and paths.
  • Fixed bug where local entity created for a renaming 'use only' declaration was given the kind 'function' when a variable was renamed.
  • GENERAL:
  • Save changes to window positions and favorites as they occur.
  • Allow changing project portability and named roots from New Project Wizard.
  • Add a gui export option for macros and includes.
  • Save project information about open editors whenever an editor is open or closed.
  • In Gui for C# Reference File Alias List, allow named roots and convert files to project add mode.
  • Add a sync check box to the metrics browser.
  • GRAPHS:
  • Added an "Inverse Selection" option for graphs. The option must be given a keybinding under tools->options->keybindings->graph window to be used.
  • INFOBROWSER:
  • Add Parent IB field for Fortran submodules.
  • Add Children IB field for Fortran modules.
  • LICENSESERVER:
  • Make licenseserver binary executable on linux by default.
  • PROJECT:
  • For Project Settings that use file paths (includes, imports, and such):
  • Check those settings for named roots in Missing Named Roots dialog.
  • Add c++ frameworks, python imports, and assembly includes to the settings that follow project add mode.
  • Don't remove values with unknown NamedRoots (fixes bug where adding a named root from und removed any settings with unknown name root.)
  • Follow project add mode where possible when editing the following settings from und: assembly includes, cpp auto includes, cpp includes, cpp frameworks, fortran includes, java class paths, pascal includes, python import paths, file override cpp auto includes, file override cpp includes, file override cpp frameworks, file override fortran includes, file override pascal includes.
  • Show absolute file path in tooltips in project browser.
  • Make Project Browser sort by file extension case insensitive on windows.
  • For Project Settings that use file paths (includes, imports, and such)
  • Fix case where removing file from project browser while project browser was sorted by file extension scrolled to the next file alphabetically instead of to the next file by file extension.

New in Understand 4.0 Build 789 (Jul 23, 2015)

  • ANNOTATIONS:
  • Fix some line annotation weirdness
  • Fix some line annotation issues on file save
  • COBOL PARSER:
  • Fixed line count metrics for lines containing both code and comments in free format
  • EDITOR:
  • Added option to print form feed inline instead of starting a new page
  • Fixed printing issues in files containing control characters
  • FORTRAN PARSER:
  • Fixed bug where reference information following 'end enum' was sometimes incorrect. Also, added support for Cray Fortran extension where enums can be named
  • GRAPHS:
  • Added a key bindings page for graphs
  • Fix issue with Show Inter Child Edges Default not applying to the collapsed start entity/architecture when the graph is first generated
  • Fixed failure to activate some new graph windows when the option to sort tabs alphabetically is enabled
  • Remove progress bars for graphs because of window resizing issues. Instead, show busy cursor when the mouse is over a graph that is still generating
  • Show python class attributes in UML class diagram when showing class details
  • Allow UML Class Diagram to be generated from a Python package
  • VHDL PARSER:
  • Check for binary content before trying to analyze a file

New in Understand 4.0 Build 788 (Jul 23, 2015)

  • BUILD: Japanese Special Build.

New in Understand 4.0 Build 787 (Jul 23, 2015)

  • REPORTS:
  • Fix error in Imports report where only the first file for a given letter was printed.

New in Understand 4.0 Build 786 (Jun 23, 2015)

  • ANNOTATIONS:
  • Show Annotations in hover text in graphs.
  • COBOL PARSER:
  • Fixed comment line counts in free format mode.
  • CODECHECK:
  • Added MISRA 2012 Directive 4.3 to Code Check.
  • Added MISRA 2012 Directive 4.4 to Code Check.
  • Added MISRA 2012 Directive 4.5 to Code Check and updated language on MISRA 2012 Directive 4.4.
  • Updated MISRA 2004 rule 8.10 and All Check script staticLinkageWhenPossible.upl to ignore private methods.
  • Updated identifierWithExternalLinkageOneDefinition.upl and MISRA 2012 rule 8.6 to have an option to ignore the standard library.
  • Updated MISRA 2008 rule 4-5-3 and All Check script charShallBeUsedWithAppropriateOperators.upl to ignore Use Cast references.
  • Updated noDefinitionsHeader.upl and noExternalLinkageUnlessExternal.upl to have options for ignoring const in header file.
  • Upgraded MISRA 2012 rule 8.6 and corresponding All Check to properly handle Templates.
  • Updated MISRA 2012 rule 8.3, MISRA 2004 rule 8.3 and corresponding All Check script to properly handle arrays.
  • Updated uninitialized_objects.upl to ignore class data members.
  • Upgraded MISRA 2008 rule 9-3-2 to ignore methods that don’t return by pointer or reference.
  • EDITOR:
  • In the editor, for Fortran, treat “procedure” as a keyword to fix folds.
  • Fixed failure to print inactive line backgrounds white when the options to print black or color on white are selected.
  • FORTRAN PARSER
  • Added support for Fortran 2008 ‘critical’ construct.
  • Added support for names on Fortran 2008 block statements and the ‘mold’ option on allocate statements.
  • GENERAL:
  • Connect mouse back and forward buttons to previewer window history.
  • Double click in previewer opens in editor.
  • GRAPHS:
  • Change Graph Customizer Panel to a toolbar.
  • Remember open graphs.
  • Add an option to the Cluster Control Flow Graph to layout horizontally.
  • Added a Show Edges Between Children Default right click menu option to toggle the default. Nodes that are expanded by default (such as the initial node in an internal dependencies diagram) show inter child edges initially regardless of the setting. Note that changing defaults only affects nodes that are using the defaults (i.e. not customized) and so restore defaults may need to be called to affect the entire graph.
  • Fix issue with cluster control flow Visio export truncating lines with “

New in Understand 4.0 Build 785 (Jun 17, 2015)

  • ANNOTATIONS:
  • Fix Remove All to work for line annotations.
  • CODECHECK:
  • Fixed bug where notDefinitionsHeader.upl was not ignoring Template Functions.
  • Fixed typo in magic number checks.
  • Shortened the CodeCheck tab name and many of the graph tab names.
  • Updated inlineFunctionsInClass.upl to ignore anything that is not a function.
  • Fix error on undefined function definition in External Identifiers Shall Be Distinct check.
  • Updated variableNamingConvention.upl to treat pointer to const and const pointers correctly.
  • Updated unusedLocal to have an option for parameters.
  • Fixed an issue where moving columns in the Results by File and Results by Check windows in CodeCheck causes the text to overlap.
  • Updated MISRA 2008 rule 7-1-2 and parameterShallBeDeclaredAsConst.upl to ignore parameters that are passed by value.
  • COMMANDLINE:
  • Added the number of files added to the und add build.log message.
  • CSHARP PARSER:
  • Fixed error where some Framework 4 dll files did not load correctly, resulting in 'unknown' entities and incorrect values for metrics CountDeclMethodAll and CountClassCoupled.
  • FORTRAN PARSER:
  • Added support for Fortran 2008 block construct.
  • Added support for Fortran 2008 sync statements.
  • Added support for Fortran 2008 codimension and contiguous statements.
  • For Fortran 2008, made changes to allow multiple type-bound procedures to be defined in one statement.
  • Added support for Fortran 2008 Do Concurrent statement.
  • FUZZY PARSER:
  • Improve fuzzy c++ parser handling of function declarations with unknown types.
  • GENERAL:
  • Fixed an issue of not cancelling the New Project dialog when you have a project open, with a changed, unsaved file and cancelling the save file dialog.
  • Re-aligned the second column in Bookmarks to ignore the file name and shift next to the line numbers.
  • Fixed Scheduler Options to reset settings when the option dialog is cancelled.
  • INFOBROWSER:
  • Have the CIS Information browsers refresh the annotations field as needed.
  • METRICS:
  • For c#, fixed bug where event and indexer accessors were not counted in the containing class's CountDeclMethod metrics.
  • PERL:
  • Add index for sample perl scripts.
  • PROJECT:
  • Add support for php comment collection.
  • REFACTOR:
  • Fix error where extract function refactor tool garbled some unicode strings.
  • Fix error with extract function refactor tool when text contained %.
  • SEARCH:
  • Revert hiding empty entity filter categories because of performance regression.
  • STRICT PARSER:
  • Fixed occasional bogus references to entities referenced in default argument initializers.

New in Understand 4.0 Build 784 (Jun 5, 2015)

  • ANNOTATIONS:
  • Changed Annotation Search Results to show a line number (start from 1) rather than an offset (start from 0). The number is still relative to the entity, so function(2) would be the 2nd line in the function, not the second line in the file
  • Prevent annotation search/filter/orphan dialogue from shrinking to a size where the options are truncated or hard to read
  • COBOL PARSER:
  • Increment Cyclomatic and CyclomaticModified metric counts for PERFORM # TIMES statements
  • COMMANDLINE:
  • Update und analyze message to clarify that files added and files removed lines come from a rescan of watched directories
  • GENERAL:
  • Fixed failure to launch on Mac
  • Fix Previewer Window Title translation
  • PROJECT:
  • Changed Analysis Log menu option names to match those in the Information Browser

New in Understand 4.0 Build 783 (Jun 5, 2015)

  • ADA PARSER:
  • Made change to allow '$' in identifiers to support the XD Ada compiler.
  • C# PARSER:
  • Made change to use an appropriate named root for the mscorlib.dll file if one is defined.
  • Made change to use named root paths instead of absolute paths for files imported through the References list.
  • Fixed bug where the short name for namespace entities was the full dotted name instead of the simple name.
  • COBOL:
  • Fixed statement count metrics for some files that copy copybooks.
  • CODECHECK:
  • Fixed bug where binary operator != was treated as the unary ! in MISRA 2008 rule 4-5-2 and enumShallBeUsedWithAppropriateOperators.upl.
  • ECLIPSE PLUGIN:
  • Update Eclipse plugin to handle linked resources when creating an Understand project. This fix must be downloaded from the update site.
  • FORTRAN PARSER:
  • For Fortran 2008, added coarray variables and coindex references.
  • LICENSING:
  • Fix for a license server issue not showing the correct maintenance.

New in Understand 4.0 Build 782 (Jun 5, 2015)

  • CODECHECK:
  • Fix function length codecheck not working right in some scenerios.
  • FORTRAN PARSER
  • Made changes to handle Fortran 2008 codimension declarations.
  • GENERAL:
  • Fixed licensing issue where a valid auto eval license was not recognized when exiting the Licensing Setup Dialog. Fixed licensing issue when no Understand.ini file is present and connecting to a license server gave a false maintenance message to the user.
  • Match Annotation tab names to annotation menu text for consistency.
  • Added the dependency browser to the view menu.
  • GRAPHS:
  • Fixed error where '>' character was added onto the ends of multi-line function names on calls/called by graph svg export.
  • Fix cluster coloring in svg export.
  • IREPORT:
  • Restore missing tree arrows in the ireport results window.
  • Make arrows in trees follow application style foreground color.
  • JAVA PARSER:
  • Fixed bug where a named root used in a classpath .jar did not work correctly.
  • PROJECT:
  • For reports, added Extend Tree for C++.
  • SEARCH:
  • Only show entity filter categories with content.
  • UND COMMANDLINE:
  • Fixed bug where some project settings, like adding found include files to the project, were not working properly when used from the command line.

New in Understand 4.0 Build 781 (May 21, 2015)

  • COMMANDLINE:
  • In Und, change the name of the Import report to Imports to avoid name conflict with the command import.
  • ECLIPSE:
  • Fix an issue where the Eclipse plugin failed to analyze when a graph was open. (To apply fix, you must update the Eclipse plugin from the update site).
  • FUZZY PARSER:
  • Improved handling of macros defined in inactive regions in fuzzy C++ parser.
  • GENERAL:
  • Fix for crash in previewer window that sometimes occurred on reparse.
  • Fix some translation issues in annotations dialogue, application styles settings page, and previewer.
  • Changed the icon in tools->options->User Interface to a user, and removed icons for the sub pages to make it consistent with the rest of the dialogue.
  • GRAPHS:
  • Add support for Java and C# for uml sequence diagrams.
  • Fix cluster control flow graph bug that showed all nodes even when hide nodes with no highlighted edges was checked.
  • Fix issue with styled labels in cluster control flow graphs repeating the first character for each node in Python.
  • INFOBROWSER:
  • Fix possible crash on view information.

New in Understand 4.0 Build 780 (May 21, 2015)

  • FUZZY PARSER: Add support for non-standard __typeof__ operator to GNU C, for fuzzy C parser
  • GENERAL: Fixed performance regression on project open
  • GRAPHS: Fix UML Class diagram not always rendering correctly when ‘Show Class Details’ was enabled
  • INSTANT SEARCH: Moved calculation of out-of-date files onto indexer background thread to improve responsiveness for project files located on a network share
  • STRICT PARSER: Fixed saved macro expansion text to exclude unexpanded functional macro arguments
  • WEB PARSER: For Javascript, fixed bug where ‘finally’ nodes were omitted from try-catch-finally structures

New in Understand 4.0 Build 779 (May 13, 2015)

  • CODECHECK:
  • Change option layout for Control Character check.
  • EDITOR:
  • Added the ability to annotate a line. Line annotations are tied to the scope entity where possible and are updated on reparse, opening a file, and saving a file. Externally modified files can be reparsed to restore the annotations to the correct areas. Annotations that belong to lines after the last line in the file are moved to the last line of the file. Line annotations may be orphaned if the scope entity is removed, and are handled the same as other orphans.
  • GENERAL:
  • Moved the “Save Released Window Positions” and the “Clear Saved Window Positions” to Tools – Options – User Interface – Windows. Also only enable the “Clear Saved Window Positions” button when there are saved window positions.
  • GRAPHS:
  • Added a Show Legend option to cluster control flow graphs (off by default).
  • Allow Cluster Control Flow Graphs to be generated from the API. (Note: styled text is NOT available from the API).
  • For C#, Java, Php, and Python, Changed the control flow graphs for try-catch-finally statements that contain exits to more accurately reflect the actual control flow.
  • Added a Show Deferred Edges option to cluster control flow graphs (off by default).
  • LICENSING:
  • Almstatus now displays the server build number in the results.
  • Fixed an issue of getting the “No Valid License” error when Escaping (Esc key) out of the license Setup Dialog. Esc now performs the same action as the Cancel button.
  • METRICS:
  • For C#, Java, Php, and Python, fixed incorrect essential complexity value for some instances of routines with exits from try-catch-finally statements.
  • VHDL:
  • Added control flow graph.

New in Understand 4.0 Build 778 (May 11, 2015)

  • C# PARSER:
  • For c# control flow graphs, added label text to labeled statements.
  • CHANGE:
  • Removed “Global Objects” option from the Compare Entities dropdown list.
  • CODECHECK:
  • Add new codecheck to look for control characters like formfeed and bell.
  • EDITOR:
  • Fixed editor detection of file names containing a plus.
  • GENERAL:
  • Possible fixes for crash in preview window on reparse / project open.
  • Fixed binary detection of files loaded from zip files. The editor will now prompt before trying to open .class files from jar files.
  • Update Keybindings page for Previewer window to have the correct name.
  • GRAPHS:
  • Fixed an issue with graphs taking the shortcut key from an editor while in split view.
  • PYTHON PARSER:
  • Changed database entity information to make checksum part of uniquename for an entity be based on unix style file names.
  • Changed database entity information to make uniquename for an entity not be based on line number within a file.
  • SCHEDULER:
  • Fixed an issue with Scheduled Activities not using the “Run every X Minutes” setting correctly.
  • STRICT PARSER:
  • Fixed worker process crash on #include_next directive found by searching project headers.
  • Fixed resolve of methods in Objective-C categories.
  • TOOLS:
  • Added Understand::Gui::sync(entity) to perl api.
  • UPERL:
  • Add documentation for freetext command to Perl API.

New in Understand 4.0 Build 777 (Apr 28, 2015)

  • CSHARP PARSER:
  • Fixed bug where the essential complexity was incorrect for some routines with goto statements inside try-catch-finally statements. Also, in the control flow graph for these routines, duplicate deferred-goto links are no longer displayed.
  • FORTRAN PARSER:
  • Made changes to add dimension text to variable type text.
  • Fixed a bug where an include inside an interface block caused a syntax error.
  • GENERAL
  • Added an application-wide color scheme panel under tools->options->user interface->application styles. Changed windows such as find in files results and the analysis log to follow the application style rather than have specific settings. Users can match the application styles to current editor settings.
  • hiding the vertical headers in the manage architectures tables since they don’t contain any information and appear bright against dark backgrounds.
  • changing explore entities initial window to be the alternate row color instead of yellow so that it doesn’t clash with dark backgrounds.
  • set row indentation for tree views and alternating row colors for other views through the style sheet so that it applies to everything.
  • Change C++ Class Names editor style to include all tag type names (struct, union, and enum).
  • Added a Previewer window (View->Previewer) that is basically an editor window that can be synced. The window can also be set to be used by default when going to a reference, and has it’s own history. Also, made view information (hotkey or menu click) trigger a sync.
  • GRAPHS:
  • Added a right click menu option to show legend for graphs with custom styling (architecture dependency graphs, cluster call graphs, and relationship graphs).
  • Improve graph search to better handle newlines caused by wrapped text. Also, improve graph search highlighting for regular expression searches and cluster control flow graphs to highlight the correct number of characters in the correct location.
  • Made cluster control flow graph node backgrounds and default node foregrounds follow editor style when styled labels is on.
  • Added an include virtual edges option for call/callby relationship graphs. Unlike cluster call graphs, relationship graphs only show virtual edges as a different color if set to do so under tools->options->graphs.
  • LICENSING:
  • Update to Floating license server to use older maintenance licenses before newer ones.
  • Updated the “Thank you for your purchase” message to be less confusing when displaying maintenance expiration days.
  • SCRIPTS:
  • Fix Visio format in _export_graphics.pl script.
  • STRICT PARSER:
  • Enabled option to ignore directory names in include directives.

New in Understand 4.0 Build 775 (Apr 10, 2015)

  • We recently sent out new floating license files that will support Understand 4.0, however we neglected to let you know that for Understand 4.0 to connect to this license, the license manager software also needs to be updated to version 770 or later. Sorry about that, it was an oversight on our part. The license manager can be downloaded from here: https://scitools.com/download/licensemanager/ The good news is that this new license is backwards compatible and will support any version of Understand from version 2.5 onward so your team can update to Understand 4.0 at their convenience.
  • In order to update the license manager you will need to stop and exit the running license server GUI by right clicking on the License Server icon in the system tray and selecting quit (see the image below). Then run the installation package to the same location.
  • Again we are sorry for any inconvenience this may cause, please let us know if there are any issues or questions we can help with.
  • STRICT:
  • Fixed worker process crash on invalid global allocation function declaration.

New in Understand 3.1 Build 774 (Apr 10, 2015)

  • We recently sent out new floating license files that will support Understand 4.0, however we neglected to let you know that for Understand 4.0 to connect to this license, the license manager software also needs to be updated to version 770 or later. Sorry about that, it was an oversight on our part. The license manager can be downloaded from here: https://scitools.com/download/licensemanager/ The good news is that this new license is backwards compatible and will support any version of Understand from version 2.5 onward so your team can update to Understand 4.0 at their convenience.
  • In order to update the license manager you will need to stop and exit the running license server GUI by right clicking on the License Server icon in the system tray and selecting quit (see the image below). Then run the installation package to the same location.
  • Again we are sorry for any inconvenience this may cause, please let us know if there are any issues or questions we can help with.
  • STRICT:
  • Fixed worker process crash on invalid global allocation function declaration.

New in Understand 3.1 Build 773 (Apr 10, 2015)

  • ASSEMBLY PARSER:
  • For Coldfire 64K Assembly, made unknown include files referenced with a relative or absolute filename have a shortname and longname value. Also, made change to allow quote characters around filenames in include statements.
  • CHANGE
  • Added the compare right click context menu to non-project files.
  • CODECHECK
  • Updated discardedReturnValues.upl to be more robust.
  • Updated MISRA 2008 rule 3-3-1 to eliminate various reporting errors and added All Check script objectsOrFunctionsWithExternalLinkageShallBeDeclaredInAHeaderFile.upl to Code Check.
  • Add several MISRA 2012 Code Checks.
  • COMMANDLINE
  • Und fix that allows the “-l somedir\somefile.dat” to be before the create command instead of always trailing/last.
  • EDITOR:
  • Added language specific editor styles to themes, and updated predefined themes to stylize function, class, and variable names. Added a classics theme for the original Understand theme.
  • Editor Styles, remove old .ini keys so that old values don’t override new ones. This makes Editor Styles not backwards compatible (if you open Understand 4.0 and then open an earlier version, the earlier version will not have the styles).
  • GENERAL:
  • Make the keyboard icons in tools->options consistent with the editor icons in the same view (one keyboard icon for the main page and no icons for sub pages).
  • GRAPHS
  • Add a show virtual edges option to cluster call graphs that show override/overriddenby edges. Override edges are light blue by default, to change go to tools->options and enter a custom edge style for “overrides,overriddenby” and make sure that “Use Custom Styles on Cluster Call Graphs” is checked.
  • Cluster Call Graphs, Fix aggregate by architecture to work instead of vanishing nodes or doing nothing.
  • Added relationship graphs between two entities. From the UI, a dialog appears to select the second entity, and the second entity can be changed using the sync option of the graph window. From the API, specify the second entity in the option string as “secondent=entityUniqueName”.
  • Cluster Call Graphs, Show c pure virtual methods in cluster call graphs (previously excluded because they were technically unknown).
  • Cluster Call Graphs, Made available from api.
  • Allow c# properties to be clusters in cluster call graphs to improve get/set names.
  • Fix graph window reuse checkbox to work across all graph types. So, all graphs whether architecture, global, or entity will reuse the same window. This fixes errors where reuse checkbox being checked caused a graph of a different type to not be generated at all.
  • Cluster Call Graphs, Improve parent determination so that references don’t appear twice in the graph and known entities with unknown parents still appear.
  • LICENSING:
  • Added the ability for the c api to point to a specific build/installation for licensing purposes. This is accomplished by calling udbSetLicense(installedDir) before calling udbDbOpen(dbFilename). The installedDir needs to be the directory above the conf folder. For example: the prioritylicense.dat file that I want the c api to use is in “C:\sti\conf\license” so my installedDir would be “C:\\sti\\”.
  • Updated to check for maintenance expiration and license expiration.
  • PARSER
  • For web php, added support for using ‘list’ in foreach statements.
  • For web php, added support for Php 5.4 callable typehint and binary numeric literals.
  • For web php, fixed problem causing invalid syntax errors parsing nowdoc strings that contain variable references.
  • For web php, added support for ‘yield’ statement.
  • For web php, made change to allow expressions in ‘empty’ check.
  • For web php, added support for ‘finally’ statement.
  • For web php, made ‘self’ and ‘parent’ keywords non case sensitive for Php 5.5.
  • STRICT:
  • Changed empty macro definitions to match fuzzy. They now expand to nothing instead of being implicitly converted to 1. Buildspy and CMake command line argument parsing have been changed to interpret -DMACRO flags (i.e. without any =) as a macro definition with value 1. Projects that use these mechanisms may need to be regenerated.
  • Fixed incorrect executable statement count for some functions.
  • VISUALSTUDIO:
  • Fix crash processing MSVC project files with quoted include directories.

New in Understand 3.1 Build 771 (Mar 24, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rules 3-9-2, 7-1-1, 7-1-2, 9-3-3 and their All Check counter parts to be more accurate.
  • COMMANDLINE:
  • Fixed bug in und add -exclude flag where wild cards were expanded instead of being assigned to the directory exclude field.
  • GENERAL:
  • Disabled tooltips in editors that don't have focus.
  • GRAPHS:
  • Fixed error in cluster call graphs where going from Aggregate by Arch to Aggregate by something not an arch, and then back to aggregate by original arch did not work.
  • Fixed error in cluster call graphs where collapsing the parent of the root node drew the root node anyway as a parentless node.
  • Fixed error in saving architecture cluster call graphs where graph saved an entity as the root instead of the arch.
  • Added Uml Sequence Diagrams (graph also available from API)
  • Fixed error in cluster call graphs where file clusters vanished upon expansion when aggregating by an architecture.
  • PROJECT:
  • Removed prompt to close all open editor windows when project portability settings change. Fixed failure to update editor window state after files open in an editor are added to the project by rescan.
  • SEARCH:
  • Fixed failure to load relative and named root paths in the replace-in-files preview window.
  • Fixed failure to launch find-in-files from find results window.
  • UPERL:
  • Fixed metrics treemap generation from Python and Perl APIs.

New in Understand 3.1 Build 770 (Mar 23, 2015)

  • GRAPHS:
  • Fix issue with butterfly graph not showing virtual function calls.
  • REPORTS:
  • Report Config – Fixed a crash in Und by removing the persistent dialog box that prompted users before the first time removing report directories.
  • WEB PARSER:
  • For web php, fixed bug where trait alias definitions that did not give a new name caused an unnamed entity to be created.
  • For web php, made changes to handle expression parsing modifications from 5.4.
  • Added IB and graphic support for php trait uses.

New in Understand 3.1 Build 769 (Mar 11, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 7-1-2 and All Check script parameterShallBeDeclaredAsConst.upl to not require const qualification at the beginning of a declaration/definition.
  • WEB PARSER:
  • For PHP, added support for short array syntax ($a=[1,2,3]).
  • For PHP, added support for traits.

New in Understand 3.1 Build 768 (Mar 9, 2015)

  • ADA PARSER:
  • Fixed bug with the 'Create and cross reference record object components' option where named associations used in record aggregate assignments were resulting in references to the type components instead of the object components.
  • C++ PARSER:
  • Better handle extensionless include files that are automatically added to the project.
  • GRAPHS:
  • Fixed tab activation issue when opening graph windows with the option to sort tabs alphabetically enabled.
  • JAVA PARSER:
  • Fixed syntax errors on extra trailing semicolons on package and import statements.
  • STRICT PARSER:
  • Disable aarch64 as a target architecture.
  • Added missing define references to lambda expression parameters.

New in Understand 3.1 Build 767 (Mar 9, 2015)

  • ADA PARSER:
  • Fixed problem with references to overloaded enumeration literals in the same context in which they were declared.
  • GRAPHS:
  • Flesh out attributes and operations in the UML class diagram to show parameters and types.
  • INFOBROWSER:
  • Fixed possible crash after analyze when viewing some unresolved files in the information browser.
  • STRICT PARSER:
  • Fixed failure to resolve file entities included with relative directory names whose case doesn’t match the case of the file on disk.
  • WEB PARSER:
  • For web Javascript, made change to allow non-standard syntax where a get or set declaration has a single statement instead of a function body.
  • For web Javascript, added Javascript 6 object and array destructuring in formal parameter lists.
  • For web Javascript, added support for the array spread operator in an argument list.

New in Understand 3.1 Build 766 (Mar 9, 2015)

  • WEB PARSER:
  • For web Javascript, fixed error where some property references were 'unresolved'.

New in Understand 3.1 Build 765 (Mar 9, 2015)

  • CHANGE:
  • Added the compare right click context menu to non-project files
  • INFOBROWSER:
  • Fixed/Updated the Information Browser to allow the right click “Copy” command to copy itself and any of its children (if visible)
  • PERL:
  • Update the _delta.pl script to more accurately count Ada statements
  • SEARCH:
  • Fix for error where a large search string in the history of the incremental search would cause the field to take a lot of space the next time understand was opened and incremental search used
  • STRICT:
  • Added option to choose Objective-C memory management mode
  • VHDL:
  • Enabled metric reports
  • WEB PARSER:
  • For web Javascript, added support for template literals, methods as property declarations, and identifier references as property declarations
  • For web Javascript, added support for object destructuring in var declarations
  • For web Javascript, added array and object destructuring in const and let declarations

New in Understand 3.1 Build 764 (Mar 9, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 16-0-7 and MISRA 2004 rule 19.11 and All Check script undefinedMacroIdentifiersShallNotBeUsed.upl to ignore macros used within inactive code
  • GENERAL:
  • Speed up right click menu on files
  • GRAPHS:
  • Fixed crash in certain uperl plugin uses of $ent->filerefs()
  • PROJECT:
  • Fix context menu selection in project browser
  • WEB PARSER:
  • For web Javascript, made changes to handle Javascript 6 ‘yield’ statements

New in Understand 3.1 Build 763 (Mar 9, 2015)

  • CODECHECK:
  • Update MISRA 2008 rule 6-2-2, MISRA 2004 rule 13.3 and All Check script testingEqualityInFloatingPointValues.upl to function properly in both fuzzy and strict parser.
  • C PARSER:
  • Missing Includes search issue fixed.
  • FUZZY PARSER:
  • Fix error recently introduced in fuzzy parser when handling comments in macro calls.
  • GRAPHS:
  • Fixed failure to show some graphs on 32-bit Linux.
  • REPORTS:
  • Added links from annotated html files to referenced generic subroutines. Also, fixed bug where links from annotated files to dictionary were not correct when 'Index by method name' option was off.
  • STRICT PARSER:
  • Fixed reference kind of tentative definitions. One of the tentative definitions is now nominated as the 'define' reference when no other definition exists in the translation unit.
  • WEB PARSER:
  • For web Javascript, added support for Javascript 6 arrow functions.
  • For web Javascript, allow Javascript 6 generator function* syntax.

New in Understand 3.1 Build 762 (Mar 9, 2015)

  • CODECHECK:
  • Updated MISRA 2008 rule 6-5-1 and All Check script forLoopShallContainASingleLoopCounter.upl to be more accurate.
  • Updated MISRA 2008 rule 7-1-1 and All Check script unmodifiedVariablesShallBeConst.upl to be more accurate. Removed potentialConst.upl as this check is now obsolete.
  • Updated MISRA 2004 rule 14.4 and All Check script noGotoStatements.upl to be faster.
  • Updated All Check script externalLinkageShallBeDeclaredInAHeaderFile.upl to be more accurate.
  • ENTITY LOCATOR:
  • Added a history with forward and backward buttons to the entity locator.
  • GENERAL:
  • Fixed crash when activating some items from the Window menu with the keyboard on Windows.
  • Better support all platforms when updating versions from within Understand.
  • Fixed bug in duplicating architectures.
  • GRAPHS:
  • Fixed a crash in architecture dependency graphs with selected entities that occurred after analyze.
  • JAVA PARSER:
  • Fixed crash in parsing some lambda expressions.
  • SEARCH:
  • Include Search verifies that only directories are searched.
  • STRICT PARSER:
  • Fixed kind of static functions with the static specifier on a declaration but not the definition.
  • UND:
  • Added support for the -iframework flag in CMake compile command import.
  • VHDL PARSER:
  • Fixed file relative name calculation in projects with VHDL enabled.
  • WEB PARSER:
  • For web Javascript, added support for some Javascript 6 features (array decomposition in var declaration).

New in Understand 3.1 Build 761 (Mar 9, 2015)

  • C++ PARSER:
  • Fixed crash in fuzzy c++ parser handling of comments in macro definitions.
  • CODECHECK:
  • Updated testingEqualityInFloatingPointValues.upl to ignore pointers to floating point values.
  • Upgraded MISRA 2004 rule 8.7 and All Check script objectsAtBlockScopeWhenPossible.upl to have fewer false positives.
  • Updated MISRA 2004 rule 13.3 and MISRA 2008 rule 6-2-2 to ignore pointers to floating point values.
  • ENTITY LOCATOR:
  • Added a freeze column option to the entity locator (available in the dimple menu). Limitations: Only the right most frozen column can be resized. Frozen columns cannot be moved.
  • Frozen columns are always moved to the left of the view.
  • Added a sync option for the entity locator. If the selected entity is not currently part of the locator (ex: locator is only showing functions and user selects file) nothing happens.
  • Made the filter for the kind and declared in kind columns to have a drop down list of the possibilities present in the full table.
  • Select text in filter fields when changing focus to the entity locator, or tabbing between fields. This allows faster deletion of the current contents of the filter.
  • GRAPHS:
  • Add option to disable the Parameters field on the Ada Declaration graph.
  • GUI:
  • Fixed crash on project browser double-click past item extent.
  • JAVA PARSER:
  • Made change so that removing a file causes files that depend on it to be reparsed.
  • PARSER:
  • For Assembly, Jovial, Pascal, and Web languages, made change so that removing a file causes files that depend on it to be reparsed.
  • REFACTOR:
  • Added accelerator keys to refactor dialog buttons.
  • WEB PARSER:
  • For Web Javascript, made changes to improve handling of global variables. Global variables with the same name in different files are no longer merged into a single entity.

New in Understand 3.1 Build 760 (Mar 9, 2015)

  • CODECHECK:
  • Updated MISRA 2008 and All Check script noMoreThanOneBreakOrGoto.upl to detect irregular loop construction and bypass without throwing a script error.
  • Updated MISRA 2008 rule 6-6-4 and All Check script noMoreThanOneBreakOrGoto.upl to not crash when encountering an irregular loop construction.
  • Updated unusedLocal.upl to skip [unnamed] variables.
  • Updated MISRA 2004 rule 2.2 and All Check script noSingleLineComments.upl to not throw multiple violations when a block of C99 comments are encountered.
  • Added implicitFunctionDeclarations.upl to All Check and Scitools Recommended Checks.
  • Update C/C++ specific codechecks not to test files from other languages in multi-language projects.
  • ECLIPSE:
  • Version number changed to 1.1.0. Note that this new plugin version is not compatible with older builds of understand, and the old plugin version is not compatible with this build of understand.
  • Entity Graphs (not metric treemap):
  • Double click on entity nodes jumps to definition.
  • Single click on control flow graph nodes goes to the line in the source code.
  • Right-click on entity nodes gives the entity context menu.
  • Right-click on anything other than the entity nodes give the full menu for the graph (as it appears in understand). Additional menu options may be added by eclipse because of the nature of eclipse context menus.
  • For instructions on installing the Eclipse plugin visit www.scitools.com/eclipse
  • EDITOR:
  • Updated labels under tools->options->Editor->Externally modified files.
  • FORTRAN PARSER:
  • Made changes to better handle IO statements with control transfer specifiers, for example READ with an END specifier. Also, fixed bug where these control transfers were not counted in cyclomatic complexity.
  • GENERAL:
  • Fixed most recently used tab activation order.
  • Save Project As starts with current project name in field.
  • GRAPHS:
  • Improved representation of Fortran IO statements in Control Flow graph.
  • Update Cluster Control Flow for Fortran IO statements.
  • JAVA_API:
  • Add documentation for new Java API to installer.
  • PARSERS:
  • For Ada, c#, and Fortran, made change so that removing a file causes files that depend on it to be reparsed.
  • PROJECT:
  • Added a sort by file extension option to the project browser, available in the dimple menu.
  • Fixed a crash that could happen in Config : C# : References if named roots are used and then deleted.
  • Changed context menus in the Project Browser to be consistent with context menus in the Entity Filter.
  • Remove dimple menu buttons from the selected item in the Entity Filter and Entity Locator.
  • PYTHON PARSER:
  • Update python documentation.
  • REFACTOR:
  • Fixed some minor issues with Extract Function Refactor Tool (correctly handle when last selected character is newline, always add extra line after new function, correctly expand return value combo box for longer names, change “Not Member” to “Non-member” in gui, changed Move Up and Move Down buttons to stay at the top rather than center.)
  • Added an extract temp refactor tool for c++.
  • STRICT PARSER:
  • Fixed possible worker process crash on 32-bit Windows.
  • Report missing header files in analysis log.
  • UPERL:
  • Update uperl documentation.

New in Understand 3.1 Build 759 (Mar 9, 2015)

  • C# PARSER:
  • Fixed bug where get and set accessor methods were not counted in the CountDeclMethod metrics.
  • Added CountDeclProperty and CountDeclPropertyAuto metrics for classes.
  • CODECHECK
  • Updated MISRA 2004 rule 8.11 and All Check script explicitStaticWhenInternal.upl to only work on C entities.
  • Updated MISRA 2004 rule 8.3 and MISRA 2008 rule 3-2-1 to only function on C and C++ entities.
  • Combined two versions of MISRA 2008 rule 6-6-4 and then their corresponding All Check scripts into single scripts. Additionally made the checks more robust and less prone to errors.
  • FORTRAN PARSER:
  • Fixed invalid syntax errors on common block statements with more than one block defined in a single statement.
  • Fixed syntax error in some 'interface operator' declarations in free format files.
  • METRICS:
  • For Pascal/Delphi, added CountDeclProperty metric. Previously, properties were counted in CountDeclInstanceVariable.
  • REFACTOR:
  • Added an initial extract function refactor tool for c/c++.
  • STRICT PARSER:
  • Fixed worker process crash on range-based for loops with a dependent initializer.
  • Fixed crash on some invalid Objective-C super expressions.
  • UND:
  • Fixed several issues with build log import.

New in Understand 3.1 Build 758 (Dec 24, 2014)

  • CODECHECK:
  • Updated MISRA 2008 rule 8-3-1 and All Check sript overridingVirtualFunctionShallNotChangeDefaults.upl to handle more cases.
  • Updated noMoreThanOneBreakOrGotFuzzy.upl, noMOreThanOneBreakOrGotoStrict.upl and allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl to only function on C and C++ files.
  • ECLIPSE PLUGIN:
  • Change call and call by graphs to show 3 levels.
  • FORTRAN PARSER:
  • Fixed bug where using a keyword as a kind parameter on a literal caused a syntax error.
  • Fixed bug where use of a function name as an argument within the function was recorded as a 'call ptr' instead of a 'use'.
  • Fixed bug where passing string literals as macro arguments caused invalid syntax errors.
  • GENERAL:
  • Fixed spurious warning for missing C# references in relative and named root projects. Allow the opportunity to cancel the import of C# reference list files when any of the references are found to be invalid.
  • INSTALLER:
  • Add a message to the installer redirecting Windows XP users to the appropriate download.
  • JAVA PARSER:
  • Made change to optionally count Javadoc comments preceding entities in the CountLine, CountLineComment, and RatioCommentToCode metrics.
  • LICENSE SERVER:
  • Updated License Server Application for Mac issues.
  • LICENSING:
  • Updated Understand License GUI when adding a SDL license to always show the Licensee email address field.
  • Fixed almd crash on Mac.
  • SEARCH:
  • Fixed failure to restore instant search and find-in-files results window in drawered mode.
  • TOOLS:
  • Added a keybinding for explore entity. When multiple explorations are available, display a menu like edit companion files.
  • WEB PARSER:
  • Fixed some problems with dependency diagrams.

New in Understand 3.1 Build 757 (Dec 17, 2014)

  • FORTRAN PARSER:
  • Fixed bugs in c style preprocessor macro definitions and usage where macro definitions continued over more than one line caused syntax errors and where use of predefined macros such as ‘__LINE__’ in a macro definition caused syntax errors.
  • GENERAL:
  • Fixed regression in adding workspace tabs alphabetically.
  • On windows, make companion files case insensitive.
  • INSTALLER:
  • Fix osx certificate.
  • JAVA PARSER:
  • Fixed bug where a trailing comma in an array initializer in an annotation caused a syntax error.
  • For Java, fixed bug where a call to a static generic method with explicit type arguments caused a syntax error in some contexts.
  • TOOLS:
  • Fix issue in und when line started with “.

New in Understand 3.1 Build 756 (Dec 17, 2014)

  • PYTHON PARSER:
  • Made change so that deleting a Python file causes any files that import it to be reparsed.
  • GENERAL:
  • Correct developer certificate for OSX installation.

New in Understand 3.1 Build 755 (Dec 17, 2014)

  • CODECHECK:
  • Updated MISRA 2008 rule 16-2-1 and All Check script preprocessorOnlyUsedForInclusionAndGuards.upl to throw fewer false positives.
  • Updated MISRA 2008 rule 3-1-1 and All Check script possibleToIncludeMultipleTranslationsWithoutViolatingOneDefinition.upl to be more accurate.
  • Updated MISRA 2008 rule 16-2-3, MISRA 2004 rule 19.15 and All Check script includeGuardsShallBeProvided.upl to be more accurate.
  • Added a note to the description qualifying checks as Strict only checks.
  • COMMANDLINE:
  • Fixed ‘und -rescan’ to purge parse information for files that no longer exist.
  • FUZZY PARSER:
  • Change so that deleting a c++ include file causes files known to include it, to be reparsed.
  • GENERAL:
  • Fixed drag-and-drop of files from Finder on Mac OS X Yosemite.
  • Fixed crash on command line invocation with -existing -contextmenu flags during database resolve.
  • Analysis Log, Added an option to allow the user to specify the selection color in Tools -> Options -> User Interface -> Windows.
  • INSTANT SEARCH:
  • Updated to use the rich text selection color. Added the extended code base for the tooltip.
  • SCOPE LIST:
  • Fix for redundant methods in scope list toolbar and scope list widget.
  • STRICT PARSER:
  • Fixed worker process crash on Objective-C property declare references where the associated interface can’t be found.
  • USER TOOLS:
  • Changed user tools to treat quotes in the parameter list the same as the Windows command prompt and Linux terminal.
  • TREEMAP:
  • Possible fix for crash during analyze when metrics treemap is open.
  • WEB PARSER:
  • For web html, made changes to not create entities for html ids and tags with empty names.
  • For Javascript, fixed some problems with full name recognition for properties of global objects.
  • For web javascript, fixed crash when parsing some dotted name expressions.
  • For web css, fixed parser hang on some invalid css code.

New in Understand 3.1 Build 754 (Dec 17, 2014)

  • GENERAL:
  • Release new build to include missing Visual Studio Redistributable for Windows.

New in Understand 3.1 Build 752 (Dec 17, 2014)

  • BOOKMARKS:
  • Updated to show 5 lines of code surrounding the bookmark in question in the tooltip over the right side of the bookmark (left side still shows time and date).
  • C# PARSER:
  • Fixed a bug where a reference to an unknown method using ‘base’ as a prefix did not create a reference to the unknown method entity.
  • CODECHECK:
  • Updated the richText highlight to adjust the font correctly.
  • EDITOR:
  • Added a keybinding to highlight an entity until the same keybinding is applied again. Added a second keybinding to clear all such highlights. Supports up to four highlighted entities per editor.
  • ENTITY FILTER:
  • Added a “Most Recently Used” menu to the right click menu of the Filter line edit field.
  • GENERAL:
  • In Project Metrics Browser, keep scroll bar constant when changing between entities/architectures with the same number of metrics.
  • Fixed crash when scrolling over a disappearing tooltip on Mac with the trackpad or magic mouse scroll gesture.
  • SEARCH:
  • Updated the selected foreground text to be displayed better (white text for darker shades and black text for lighter shades).
  • Updated the Find in Files Result Window and the “Search – Show Find Results” to reflect the correct wording (Find in Files Results).
  • TOOLS:
  • In User Tools, changed $PromptFor macros so that the result only became its own argument if it contained spaces. In other words, the results of all $PromptFor macros used to be treated as if they were quoted, and now that behavior only occurs if there are spaces in the result.

New in Understand 3.1 Build 751 (Dec 17, 2014)

  • GENERAL:
  • Fixed failure to fully restore open files from relative projects after upgrading from an older build of understand. These same files would then fail to open correctly during regular use.

New in Understand 3.1 Build 750 (Dec 17, 2014)

  • ARCHITECTURES:
  • Improve architecture builder speed for folders with lots of files.
  • BOOKMARKS:
  • Allow next/previous bookmark actions to wrap.
  • CODECHECK:
  • Added shallNotPassByReference.upl and fileLength.upl to Code Check.
  • Updated MISRA 2008 rule 3-2-1 and All Check script allDeclarationsOfAnObjectShallHaveCompatibleTypes.upl to be more accurate.
  • EDITOR:
  • Added separate semantic highlight category for C++ virtual functions.
  • FUZZY PARSER:
  • Improve c++ fuzzy parser handling of deeply recursive macro expansions.
  • GENERAL:
  • Export cytoscape XML in UTF-8 encoding.
  • Bookmarks hover display added.
  • Fix crash in visual studio arch with same-name project/solutions.
  • Added an import/export theme option for global editor styles.
  • REFACTOR:
  • Fix error in refactor rename tool for java functions.
  • SCOPELIST:
  • Make Scope List Toolbar list show overloads like the Scope List Window.
  • SEARCH:
  • Find in Files Result Window, Added the code snippet as a tooltip on the result so the user can bypass expanding the result if desired.
  • STRICT PARSER:
  • Added missing reference for tentative variable definitions in C.
  • VISUALSTUDIO:
  • Fix processing of MSVC 2010/2012/2013 project files to handle out-of-order file definitions

New in Understand 3.1 Build 749 (Dec 17, 2014)

  • CODECHECK:
  • Added All Check script objectsOrFunctionsWithExternalLinkageShallBeDeclaredInAHeaderFile.upl to Code Check.
  • Updated MISRA 2008 rule 3-3-1 to eliminate various reporting errors.
  • Update All Checks, ‘No direct or indirect recursion allowed’ check to work in many different languages.
  • Added MISRA 2004 rule 8.3.
  • ECLIPSE PLUGIN:
  • Make Eclipse plugin work with Java 1.6.
  • Update Eclipse Plugin Japanese Translation Files.
  • EDITOR:
  • Fixed issue with the settings dialog going behind the main window on Mac.
  • GENERAL:
  • Exclude standard library entities from dependency analysis (affects dependency reports, architecture dependency graphs, and the dependency browser). It can be changed in Tools->Options->Dependencies.
  • Fixed occasional loss of focus when switching tabbed windows.
  • GRAPHS:
  • For file entities only show the uml class diagram if there are classes defined in that file.
  • METRICS:
  • Fixed some architecture metrics that were incorrect for files with namespaces.
  • PROJECT:
  • Project Browser updated to show a horizontal scrollbar when needed.
  • REFACTOR:
  • Improve messages in the inline temp refactor dialog and the prompt for save & analyze before refactoring dialog.
  • Added an inline temp refactor tool for c/c++ local variables.
  • SEARCH:
  • Added an IO Unit filter to the entity filter for Fortran.
  • Fixed an errant Find in Files dialog from popping up unasked for.

New in Understand 3.1 Build 748 (Dec 17, 2014)

  • C API:
  • Added C99, C11, and C++11 keywords to C/C++ API lexer.
  • GENERAL:
  • Fixed possible crash and other issues with pinned dock windows.

New in Understand 3.1 Build 747 (Dec 17, 2014)

  • CODECHECK:
  • For Typedef Naming Convention check allow Struct and Enum typedefs to have their own rules.
  • Updated MISRA 2008 rule 2-13-4 and All Check script literalSuffixesShallBeUpperCase.upl to work regardless of context and not just as set references.
  • GRAPH:
  • Fixed gvlayout crash in build 746.
  • PROJECT:
  • Added an automatic architecture for visual studio solutions and projects. For existing Understand projects, the architecture will not be visible until after a rescan.
  • SEARCH:
  • Fixed incorrect expansion indicators after expand all in instant search results.

New in Understand 2.0 Build 502 (Feb 4, 2010)

  • Fixed several Fortran syntax highlighting bugs.
  • Ui improvements to languages and visual studio panels
  • Fortran, Added Intel project file extension in Visual Studio open dialog
  • Made "database lock" warning message more verbose
  • Java, Fixed bug where an annotation with parentheses but no arguments caused a syntax error.
  • Ada, made additional change to reduce db size when 'Create and cross reference record components' option is used.
  • Java Fixed bug where an enum constant with an empty argument list caused a syntax error.
  • Fixed possible crash on project save, introduced in b501
  • Fix option handling in interactive reports, broken in b476
  • For Ada report generation, made change to limit invocation tree report to begin with only 'main' program units as specified in the Ada options panel. If no 'main' program units are specified, the invocation tree report generates an entry for each uncalled subprogram.

New in Understand 2.0 Build 501 (Feb 4, 2010)

  • Fixed possible crash on windows when using shortened path name with und.exe -db option.
  • Ada, Made change to 'Create and cross reference record components'option so that unreferenced components of local variables and parameters are not added to the database.
  • Handle references to conflicting definitions of c/c++ functions better by considering the relative physical locations of the declarations.
  • Added character encoding meta tag to generated HTML reports.

New in Understand 2.0 Build 500 (Feb 4, 2010)

  • Fixed possible crash when doing a find-replace with the regular expression button checked.
  • Fixed GUI artifacts caused by reference highlighting changes.

New in Understand 2.0 Build 499 (Feb 4, 2010)

  • Fixed several bugs in Ada SPARK annotation highlighting.
  • Fixed out of memory error message not showing on windows bug
  • Changed the email address in the "email support" link from [email protected] to [email protected]
  • Added version and platform info to the support email in the About Understand box
  • Fixed regression in splittable workspace where dragging tags between workspaces was broken
  • Fixed custom zoom dialog buttons
  • Removed UndChat.
  • Update the connection timeout to the license server to be fast again with a -SlowConnect that will allow for the original slow timing for networks with long latancy.
  • Fixed possible crash in almhostid on windows.
  • Added a cmd line option -p to remove the pause at the end of the application execution.
  • Fixed a minor leak in database resolve and a leak in parsing C++ template parameters.
  • Added support for referencing c++ labels
  • C/C++, In comment association, save blank lines between blocks of comments
  • For Fortran, fixed bug where 'free' format setting resulted in 'auto' format determination.
  • Fortran, Fixed bug where recorded line numbers were incorrect when c-style comments extending over one line appeared in the source.
  • C/C++, Preserve original form of simple constants and initialization values
  • Fortran, Fixed bug where defining modules in include files and including them into other source files resulted in 'multiple declarations of module ...' errors and invalid circular dependencies.
  • Fix VisualStudio 2008 project import
  • Fixed crash caused by recursive paint events
  • Fixed memory corruption caused by File Entity deleting its lexer even when the lexer had other references to it out there.

New in Understand 2.0 Build 498 (Feb 4, 2010)

  • fixed problem with the fortran truncate custom column setting
  • Fixed off-by-one error in syntax highlighting truncate column for fixed-format fortran.
  • Fix possible error with windows license manager service.
  • Fortran, Fixed bug in include processing where include files that were directly added to a project were not found if they were in a different directory than the source file unless the directoy was also added as an include path.

New in Understand 2.0 Build 497 (Dec 3, 2009)

  • Fortran, Insure that snapshots build with the correct include files.
  • Disable project sharing for the time being. We are planning to re-work it based on your feedback, and then re-introduce it into Understand.
  • add-nocheck command line option to skip checking for a previous instance of Understand running.
  • Fortran, fixed bug where relative paths and named roots were not working for fortran include directory paths.