1.4.11. Migration to 7.10.0¶
1.4.11.1. AxivionC#Frontend¶
A number of improvements have been made in how AxivionC#Frontend communicates with MSBuild:
MSBuild is now invoked directly and only once for a configured solution and project. This leads to faster build times especially with solutions consisting of many projects.
Environment variables passed to
axivion_ciare directly inherited by the MSBuild process. In particular, the following variables are no longer treated special:The
PLATFORMenvironment variable is no longer overwritten, which may cause build errors, ifaxivion_ciis executed from an environment that was created usingvcvarsall.bat.AxivionC#Frontend no longer emulates Visual Studio Design Time builds, therefore the
BuildingInsideVisualStudiovariable is no longer set totrue.The
UseSharedCompilationMSBuild property no longer set tofalse, which allows the build to use the “Compiler Server infrastructure”.The
MSBuildSdksPathMSBuild property is no longer overwritten.
AxivionC#Frontend is now able to use multiple cores when running the initial build as well as when performing analyses. For the initial build phase parallelization must be explicitly enabled using the
build_in_parallelsetting.Note: If the
binarylogsetting was previously configured in an analysis containing multiple projects, the binlog for each project was recorded as a separate file in a subdirectory. Now thebinarylogsetting refers to the name of a single log file even for solutions. If the directory still exists from a previous build, AxivionC#Frontend will print a warning message and store the binarylog in a temporary location instead. It will never delete a directory. This can be fixed by deleting the old binarylog directory manually, or by changing the name of the binarylog.
1.4.11.2. Dead Code detection for C#¶
DeadCodeDetection now reports two cases of unused code that were previously assumed to be used:
Unused code entities that have custom attributes attached to them are now reported as dead. Previously, the presence of a custom attribute made the code entity unconditionally alive. If you use custom attributes to mark a code entity as an external entry-point that should be considered alive – even if there are no uses in C# code – these entry-points can be configured using the
EntryPoints-EntriesByAttributerule.Code entities that have no implementation (such as
extern,partialorabstractmethods), are now reported as unused, if there is no caller in C# code.
1.4.11.3. Metrics¶
Metric-Coupling and Metric-InverseCoupling¶
The option coupling_edge_name was renamed to coupling_hierarchy_edge_name to better reflect its purpose.
Existing JSON configuration files that set this option are migrated on the fly when they are loaded.
1.4.11.4. Dashboard¶
Renaming of old “upload” mode¶
The boolean option /Results/Dashboard/upload was renamed to
/Results/Dashboard/database_mode with enumerators shared_database
(old upload=false) and managed_upload (old upload=true).
Migration of that option is automatic in JSON when not using an environment variable
reference. If you used an environment variable reference in JSON or are using this
option in a Python layer, you will have to adjust your configuration manually.
Initial Configuration Templates¶
Template names for the dashboard init <template> subcommand have been updated. It is now also mandatory to specify a template.
You can find more information in the full list of initial configuration options.
Encryption of Configuration Database¶
The encryption of sensitive values stored inside the file dashboard2.db was already introduced with 7.8.3. So far, only one, easily recoverable field was actually encrytped. With this version, we have greatly extended the use of encryption for sensitive fields as a protective measure. Please be aware – even though we already mentioned it in the 7.8.3 Migration Guide – that the files dashboard2.db and the file secrets.json residing next to it since 7.8.3 must always be used as a pair and loosing the file secrets.json belonging to a concrete dashboard2.db is now a lot harder to recover from.
API Tokens¶
Caution
All authentication tokens will now be deleted when user password is changed.
Previously tokens of the types General, SourceFetch and ContinuousIntegration were not affected by password change. For more information about available API token types see ApiTokenTypes. If you require a permanent token we recommend creating a passwordless user similar to what is described in axivion_ci Authentication.
Issue Annotations¶
Issue annotations (Comments/Tags) now use the correct display name of OAuth2/OpenID Connect users.
This change requires a migration of the .dbx project database.
During migration a database backup file with the extension .bak will be created.
Depending on whether the project/database is managed or unmanaged and your automatic cleanup settings,
the backup may get a .<timestamp>.trash extension and is potentially deleted after 5 days.
We recommend to disable the two Delete *.trash file ... options in the general settings page
until the users are sufficiently confident the update didn’t create problems.
Downgrading the dashboard to a previous version after this successful migration, will lead
to unexpected errors on the Issue and Issue List pages.
Therefore, use the .bak file in case of downgrading the dashboard.
OIDC Configuration¶
The configuration interface for OIDC providers has been moved from General Settings to its own page which is reachable via the settings menu. In addition to the new location, with the new interface it is now possible to have multiple providers configured simultaneously.
OIDC Logout / End Session Configuration¶
When clicking the logout button in the navigation bar, the Axivion Dashboard Server tries to also end
the session at the OIDC Provider. When finished, the OP will redirect back to the Axivion Dashboard Server base
URL. As all redirect URIs need to be registered at the OP beforehand, please add the Axivion Dashboard Server base URL
to the list of allowed post logout redirect URIs.
If your OIDC Provider does not have a separate section for post logout redirect URIs,
please use the default Redirect URIs section.
1.4.11.5. IR¶
Several IR classes have been removed; and in some places the inheritance hierarchy has been slightly simplified.
If you have custom stylecheck rules using any of the following classes, you will need to adjust your code:
Old name |
New name |
|---|---|
Ordinary_Class_Scoped_Based_Enum_Type_Definition |
Class_Scoped_Based_Enum_Type_Definition |
Ordinary_Class_Scoped_Unbased_Enum_Type_Definition |
Class_Scoped_Unbased_Enum_Type_Definition |
Ordinary_Unnamed_Based_Enum_Type_Definition |
Unnamed_Based_Enum_Type_Definition |
Ordinary_Unscoped_Based_Enum_Type_Definition |
Unscoped_Based_Enum_Type_Definition |
Ordinary_Unnamed_Unbased_Enum_Type_Definition |
Unnamed_Unbased_Enum_Type_Definition |
Ordinary_Unscoped_Unbased_Enum_Type_Definition |
Unscoped_Unbased_Enum_Type_Definition |
Using_Typename_Class_Member_Declaration |
Using_Class_Member_Declaration |
General_Using_Namespace_Member_Declaration |
Using_Namespace_Member_Declaration |
Using_Typename_Namespace_Member_Declaration |
Using_Namespace_Member_Declaration |
Literal_Operator_Function_Definition |
Operator_Function_Definition |
Literal_Operator_Function_Declaration |
Operator_Function_Declaration |
Normal_Operator_Function_Definition |
Operator_Function_Definition |
Normal_Operator_Function_Declaration |
Operator_Function_Declaration |
Standard_Command_Line_Function_Macro_Definition |
Command_Line_Function_Macro_Definition |
Standard_Source_Function_Macro_Definition |
Source_Function_Macro_Definition |
General_Catch_One_Block |
Catch_One_Block |
Asm_Definition |
Asm_Statement |
Old name |
New name |
|---|---|
CFG_Generated_Catch_All_Block |
CFG_Catch_All_Block |
CFG_Explicit_Catch_All_Block |
CFG_Catch_All_Block |
Const_Cast_Instruction |
Qualifier_Conversion_Instruction |
C_Cast_Instruction |
Conversion_Instruction |
Implicit_C_Cast_Instruction |
Conversion_Instruction |
Explicit_C_Cast_Instruction |
Conversion_Instruction |
Static_Cast_Instruction |
Conversion_Instruction |
A number of additional classes were deleted without replacement. Those classes would never appear in any C/C++ IR, so it is unlikely that they were in use in any custom rules.
In the type ir.Logical.Composite_Type, the field Finalizer was renamed to Destructor.
1.4.11.6. Stylechecks¶
Frameworks-QtSupport¶
The default value of the option
exclude_qt_generated_files
has changed from false to true, so if Frameworks-QtSupport is
activated, files generated by Qt and files in the configured Qt directory are implicitly
added to the global_excludes.
This may result in removed issues in your existing projects.
This change affects existing configurations that do not explicitly set this option and
might cause existing issues to be removed after upgrading to version 7.10.0 onwards. If
you are interested in issues in files generated by Qt or in files in the Qt directory,
you can reinstate the previous behavior by setting the option
/Analysis/AnalysisControl/Environment/Frameworks/Frameworks-QtSupport/exclude_qt_generated_files
to false in your configuration.