1.4.52. Migration to 7.2.0¶
1.4.52.1. Dashboard¶
HTTP JSON API endpoint changes¶
Some API endpoints have been moved, i.e. their old locations are now deprecated and you are advised to adjust your scripts to use the new locations. The old locations will remain supported for at least 2 more major releases, i.e. they won’t be removed sooner than 7.4.0.
Old location |
New location |
|---|---|
|
|
|
|
|
|
|
|
|
|
If you are using the official Python-Wrapper around the HTTP API, no adjustments are necessary.
Issue Table Filter specification and IDE Plugins < 6.5.0¶
The old variant of specifying filters for issue table queries, e.g.
?filter=errorNumber contains \"Misra\" and id < 2 is not supported any more.
This has been deprecated since 6.5.0 and is now removed. If you still have any code
using this, you’ll have to adjust it to use one query parameter per column,
e.g. ?filter_errorNumber=Misra&filter_id=<2.
Only affects the HTTP JSON API, not the Python wrapper.
IDE Plugins < 6.5.0 will not work any more with Dashboards >= 7.2.0.
Links containing Version Strings¶
Due to a bug in the Axivion Dashboard Server, version strings were built with reduced precision. This means that the version string references a point in time that is slightly earlier than the real analysis version. This affects the version selection, e.g. when viewing the issue list (start and end version).
In Axivion Suite version 7.2.0, the version string handling has been fixed, resulting in changed URLs. To not break existing bookmarks, the version selection done internally inside the Axivion Dashboard Server will still work with truncated precision. However, this behavior is now deprecated and will be removed in a future release. So please recreate your bookmarks.
If the compatibility behavior (artificially truncated precision) is removed, old version strings will refer to an earlier analysis version.
JSON-API and its Python Wrapper¶
In AnalysisVersion objects version strings without a time zone offset have been treated as in the servers system time zone. Now, they are interpreted as times in UTC.
This is only relevant if you are using manually crafted version strings. Versions gotten from a previous Dashboard request contain the time zone offset.
The meaning of the natural language expressions of the version strings are refined. Please see Specify by natural language expressions for more details.
Also if you have been parsing the date-strings given the specified format string your code might break. For programmatic usage of the dates, e.g. passing them to a graph rendering library, we recommend using the millis-field of the AnalysisVersion objects and not parsing the ISO8601-date at all.
UserDNMask mode for Generic LDAP Authenticator removed¶
The configuration option UserDNMask for directly constructing a user’s
distinguished name instead of by doing an LDAP search is not supported any more.
It has long been superseded by more flexible configuration options. Please contact
axivion.support@qt.io should you be affected by this and require assistance in
migrating to the newer options.
1.4.52.2. Tools¶
axivion_analysis and axivion_ci both had a command line option
--config. This was removed due to confusing semantics. Please use
BAUHAUS_CONFIG to point to your layered configuration.
irAR now adds .ir suffix to files if environment variable
COMPILE_ONLYIR is set (and COMPILE_ONLY is not). This is a change
in behavior, however the previous behavior was not in sync with the other irXX tools.
1.4.52.3. Configuration¶
Implicitly covered rules in MISRA and AUTOSAR guidelines (such as “apply MISRA checks to library code as well”) are no longer represented as always-active dummy rules. Instead, the rule groups, technical fact sheets and documentation now describe what has to be done to check these rules. As a consequence, these rule names are no longer known to the configuration system. If you happen to have an explicit activation of the following rules in either your JSON or Python configuration, you’ll have to remove them:
MisraC-3.6 and MisraC++-17.0.4
AutosarC++-A1.4.1 and AutosarC++-A17.0.2 for all versions of the AUTOSAR guidelines
Furthermore, in order to support configuration with the GUI, the configuration option
replacements of CertC-ERR07 and CWE-Api-Function-Errors-676 has been changed
to a new format. Now, the option just takes a dictionary mapping non-error-checking
functions to their respective error-checking replacements. Both are provided by name.
Existing custom configurations need to be updated accordingly.
1.4.52.4. Custom Python scripts¶
In order to start all Python scripts relevant to the Axivion Suite with the correct Python version, the supplied scripts all start with the same few lines of code, called “preamble”.
Before Axivion Suite 6.5.0 we used the following preamble:
import sys
if 'rfgscript' not in sys.executable:
import subprocess
sys.exit(subprocess.Popen(['rfgscript'] + sys.argv,
stdin = sys.stdin,
stdout = sys.stdout,
stderr = sys.stderr).wait())
Starting with Axivion Suite 6.5.0 we switched to a much more robust version of the preamble as follows:
try:
import bauhaus
del bauhaus
except ImportError:
import subprocess
import sys
sys.exit(subprocess.call(['rfgscript'] + sys.argv))
With 7.2.0 we now forcefully prevent execution of scripts with the old preamble within
axivion_ci and cibuild. Also, the separate tool axivion_support
will list all Python files found in the current project configuration that still have
the old preamble.
In order to keep using those scripts, you just have to replace the old preamble with the new one in the affected scripts.
1.4.52.5. axivion_ci and cibuild¶
Binary files are excluded by default from project database and hence Project Index in
the dashboard from now on. For axivion_ci the list of extensions to exclude
can be configured via /Project/VCSIntegration/ignore_globbings, for
cibuild the list is hard-coded and cannot be changed.
1.4.52.6. RFG¶
Static local variables are now generated as Variable nodes (with node attribute
Element.Is_Static set) inside Routine nodes of views Code Facts
and Declaration Facts. With this change it is also possible to visualize (and
create PDFs for) data races on static local variables (see Race Condition Analysis).
1.4.52.7. IR¶
The representation of inheritance in Logical IR has been changed.
Field Extends of classes now only represents direct inheritance,
and each entry provides a field Nested_Extends for the rest of
the inheritance tree. Functions in Python module bauhaus.ir.common.types.composite_types have been adapted and can
be used to e.g. traverse the full inheritance tree (all_base_classes()
and all_extends_relations()).
If you’ve got some custom script or rule that accesses the Extends field
directly and expects the full inheritance tree in that flat list,
it has to be updated (preferably, switch to using one of the above-mentioned
functions).