1.4.48. Migration to 7.3.0

1.4.48.1. Compiler Configuration

The cafeCC compiler now supports the new JSON configuration. If no compiler rule is enabled in the new configuration, cafeCC falls back to using the old XML configuration, so existing setups still work. This fallback is deprecated and will be removed in one of the next major releases, so you are strongly encouraged to migrate your existing settings to the new configuration while both configuration systems are still supported.

We provide the command migrate compiler for automatically converting from the old configuration (cafeCC.config, predefined_macros.txt, predefined_sizes.txt, irlink.config and LanguageSupport.config) to the new configuration (written as compiler_config.json by default).

Switch Mapping

When using the old XML-based compiler configuration, there was a single switch mapping supporting both gcc-style and Microsoft-style compiler switches. In the new JSON configuration, there are different default switch mappings depending on which compiler rule (e.g. GNUToolchain or MicrosoftToolchain) is enabled.

Thus, migrating to the JSON compiler configuration effectively reduces the set of switches understood by cafeCC. If you get compiler warnings about unknown switches being ignored, you may need to re-create the mapping for the unknown switches in your project configuration.

Compiler profile setup scripts

The compiler profile setup scripts gccsetup, clangsetup, ghssetup, iarsetup, and ticgtsetup (renamed from ticcssetup, see below) are now generating the new JSON compiler configuration instead of the old XML configuration.

If you are using these scripts in batch files (generating the configuration during each analysis run), this means cafeCC will now switch to JSON mode when used with Axivion Suite 7.3. If your existing batch files modify the generated cafeCC.config, e.g. by calling bauhaus_config, you will need to change those batch files to instead modify the generated JSON configuration.

Similarly, if you have additional configuration layers that modify compiler settings using one of the old-style configuration files, e.g., cafeCC.config or irlink.config, in addition to the layer generated by the setup script, you will need to migrate these files to the new JSON format as well, as JSON and XML layers cannot be mixed: As soon as a compiler rule is enabled in the new configuration, the old-style XML files are ignored.

Finally, the tool to create compiler profiles for Texas Instruments Code Generator Tools compilers has been renamed from ticcssetup to ticgtsetup to better reflect TI CGT (Texas Instruments Code Generator Tools) as compiler toolchain as opposed to TI CCS (Texas Instruments Code Composer Studio), its IDE.

Entry point configuration

The configuration of additional entry points in the compiler (Additional_Entries and Additional_Entry_Macros options in cafeCC.config) has been combined with the existing analysis entry configuration (EntryPoints-EntriesByName and EntryPoints-EntriesByMacro). If you were previously using these EntryPoints rules, make sure the configuration for these rules is stored as a delta (“Record only differences”) so that your configuration does not unintentionally override the entry points which were previously stored in cafeCC.config.

CAFE_INCLUDE

The environment variables CAFE_INCLUDE and CAFEPP_INCLUDE are not supported when using cafeCC with a JSON configuration. Move the necessary include paths to the JSON configuration or use the environment variable named in the language_c.preprocessing.sys_include_envvar and language_cxx.preprocessing.sys_include_envvar options respectively.

1.4.48.2. Linker

The option irlink --include_entries is no longer supported. The closest alternative is the --include_unused flag.

Former linker message with message key Typedef_Mismatch has been removed and is now covered directly by stylecheck Generic-NoLinkerWarnings. So inspecting linker messages in the dashboard (which is done via Generic-NoLinkerWarnings) should report the same issues except for those that are excluded by analysis settings (e.g. in system headers) or that have been reported multiple times before.

1.4.48.3. Java

We are dropping support for Java 10 and adding support for Java 17. See updated System requirements. Recommended Java major version is now 17.

1.4.48.4. Dashboard

End of support for Microsoft Internet Explorer

No version of Microsoft Internet Explorer is actively supported any more for use with the Axivion Dashboard. Please switch to one of the supported browsers, e.g. Microsoft Edge, if you haven’t done so already.

Deprecation of Classic UI

Since 7.0 we are shipping two alternative user interfaces for the Web-Dashboard: Modern and Classic. Classic has been the default for new Dashboard configurations until now. Users that don’t have explicitly set a UI preference will be automatically switched to Modern but for now have the possibility to switch back. If you have explicitly configured the Classic UI nothing changes for now, however you are advised to switch to Modern in the near future, as one of the next major releases will drop the Classic UI and automatically switch you to Modern.

Abnormal Condition Behavior

In case of abnormal conditions like out of memory or stack overflow, the Axivion Dashboard Server will now try to terminate itself. You may want to consider adjusting the automatic service restart options if you are running the Axivion Dashboard Server as a system service. If you want to stick to the old behavior set dashboard2/TerminateOnAbnormalCondition to false in dashboard2.config

Deprecation of UserGroup-Mode for LDAP and ActiveDirectory authenticators

Both Authenticator Types Ldap and also ActiveDirectory (formerly known as Adsi) now deprecate the use of the setting MembershipResolutionStrategy=UserGroup as well as the setting UserGroup.

Should you currently be using any of these settings, please adjust your configuration accordingly.

This means you should remove configuration of the UserGroup option and adjust MembershipResolutionStrategy to one of its other values i.e. `None, MemberOfAttribute, GroupFilter or UidGroupFilter which consequently may require you to specify additional options as documented in the configuration template.

Also do not hesitate to contact us at axivion.support@qt.io in case of problems.

We are considering dropping this feature entirely in a future release.

1.4.48.5. Stylecheck

Rule MisraC++-0.1.8: the default value of the options exclude_constructors, exclude_destructors and exclude_virtual_destructors was changed from False to True.

Rule CWE-Pointer-Issues-466: the rule was removed. Please use the more general rule CWE-Pointer-Issues-119 as a replacement.

Rule AutosarC++-A5.3.2: the rule now also checks dereferences of members of pointer type. To restore the old behavior, set the option ignored_object_types to {'Field'}.

Old rules of group Resources have been moved to group DynamicResources in order to use the name Resources for a new rule group where resources such as heap memory are configured. If you still use stylecheck.py with these old rules, please update their name (or better, switch to the new configuration).

1.4.48.6. External function summaries

The rule for providing summaries about the effects of functions being unknown to the analysis have been simplified: The distinction of return cases has been removed as that is superseded by the more powerful post_conditions rule attribute. If you have used this distinction of return cases, please update your configuration to use the post_conditions attribute instead.

1.4.48.7. Semantic Analysis

Configuration of resources (such as heap memory) has been changed: A new rule group Analysis.AnalysisControl.Environment.Resources has been created where you can find rules to configure such resources. The specific checks (like FaultDetection-DoubleFree) now only select from these resource rules by name instead of repeating the full resource configuration. This avoids inconsistencies and makes it easier to add custom resources. The old approach of combining resources from iranalysis.config and the checks can still be used if you are using stylecheck.py instead of axivion_analysis (but will be dropped in the future).

If you have added custom resources to some checks, please create custom rules in rule group Analysis.AnalysisControl.Environment.Resources instead, and only select the name of this resource in the option resources of the check. If you call axivion_analysis manually with the –rule parameter (e.g. in custom test cases) for checks affected by this change, you may have to add –rule Resources explicitly in this call to axivion_analysis.

If you have configured the static semantic analysis mode (either to GLOBAL_CLASSIC_ANALYSIS or FUNCTION_BY_FUNCTION_ANALYSIS) in a Python configuration file, then please note that the type for the mode is now in the new module bauhaus.semantic instead of bauhaus.iranalysis. Therefore you have to import the new module and write, for example, analysis['StaticSemanticAnalysis'].mode = semantic.AnalysisMode.GLOBAL_CLASSIC_ANALYSIS now. If you set the mode with the graphical configuration interface, no change is required.

The result type of the iranalysis_work_item has been changed to not only contain the way semantic analysis was executed, but also the state of it for function-by-function analysis. Custom rules receiving as input the result of the iranalysis_work_item thus should be updated. For example, a former condition if iranalysis_result == work_items.IRAnalysisWorkResult.full should now be written as if iranalysis_result.has_full_iranalysis().

1.4.48.8. Suppressing architecture violations

When using code annotations to suppress or justify architecture violations, the field rule of the comment was previously compared against the causing edge type of the architecture violation. This has now been fixed to properly compare against the rule name of the architecture analysis. Additionally, the message_key of the comment can now be used to limit affected architecture violations by the type of the reflexion edge (e.g., Divergence), and the message can be used to limit by the type of the causing edge (e.g., Static_Call).

1.4.48.9. Gravis Configuration

gravis now supports the new JSON configuration. If no gravis configuration option is set in the new configuration, gravis falls back to using the old XML configuration, so existing setups still work. This fallback is deprecated and will be removed in one of the next major releases, so you are strongly encouraged to migrate your existing settings to the new configuration while both configuration systems are still supported.

We provide the command migrate gravis for automatically converting from the old configuration (gravis2.config) to the new configuration (gravis.json).

1.4.48.10. VSCode Plugin

The Axivion Visual Studio Code Plugin now uses the official VSCode secrets API. The minimal supported VSCode version is now 1.53 (previously 1.47). Users updating their Axivion Visual Studio Code Plugin will have to reenter the Axivion Dashboard Server credentials again and should revoke the Axivion Dashboard Server API token created with the old Axivion Visual Studio Code Plugin if a Axivion Dashboard Server version 7.1.0 or later was used. The system credentials/key store will contain credentials created with the old Axivion Visual Studio Code Plugin which will now be unused and can be cleaned up.