Components

All Helix QAC projects will have at least one component, and most projects will have several. There are different types of components:

  • Primary - These provide the basic analysis and work on a TU basis, specific to a language, such as QAC (for C) and QACPP (for C++).
  • Secondary - Provides enhanced, specific capabilities such as Namecheck, M3CM, etc. These are also TU-based.
  • Whole Program - These components work on all the output from the TUs to provide project level analysis, such as RCMA and Dataflow.
In the sections below the component_key is shown in its full format i.e. <name>‑<version>, such as "qac-9.3.0". You can also just specify the component name, such as "qac". If several different versions of the same component are configured on the system then the newest version will be chosen.

Listing Components

  • To list all components available in the system:
  • qacli pprops --list-components
  • To list all components available in the system that support a given toolchain:
  • qacli pprops --list-components -T <toolchain>
  • To list the components used in a particular project:
  • qacli pprops --list-components -P <directory>
  • To list components used in a particular project that support a given toolchain:
  • qacli pprops --list-components -T <toolchain> -P <directory>

    Adding a Component to a Toolchain in a Project

  • To add a component to a project, use the following:
  • qacli pprops --add -c <component_key> -T <toolchain> -P <directory>
  • To add a component to a project, together with any dependent components use the --force-dependencies (-f) option.
  • qacli pprops --add -c <component_key> --force-dependencies -P <directory>

    Removing a Toolchain Component from a Project

    To remove a toolchain component, use the following:

    qacli pprops --remove -c <component_key> -T <toolchain> -P <directory>

    Upgrading a Toolchain Component in a Project

    To upgrade a component, simply follow the command to add a component and the existing component will be upgraded.

    However, this will not upgrade your RCF. If the new component has a more recent RCF, you may wish to upgrade your RCF using a command such as:

    qacli project modify -P <directory> --rcf <rcf-path>

    The additional ‑‑update‑method option enables you to replace, update or merge the RCF. It accepts one of these possible values:

    • replace - The file is replaced by the one specified. This is the default for RCFs.
    • update - The existing file is updated, replacing the mappings for the existing components.
    • merge - The existing file is updated, merging rulesets from both files with the same component. In the case of a merge conflict where the new and old values differ, the new values are used.

    Update should be specified if you are already using a default RCF and you still require default mappings. Merge should be specified where you have customized the RCF and wish to retain the customizations (where possible).