Helix QAC QA·CLI Changes in 2024.4

New Bazel synchronization method

  • Command: qacli sync ‑t BAZEL
  • Old Behavior: Not available.
  • New Behavior: The new BAZEL sync method allows users to analyze projects built with a local Bazel build system. External dependencies are excluded by default but can be included by setting HELIX_QAC_BAZEL_INCLUDE_DEPENDENCIES.

XML indenting option has changed

  • Command: qacli view ‑m XML ‑‑xml‑indent
  • Old Behavior: Indent changes were done using the ‑‑xml‑indent option.
  • New Behavior: The ‑‑xml‑indent option has been deprecated and will be removed in a future release. You should now use the ‑‑indent option.

New SARIF indenting option

  • Command: qacli view ‑m JSON ‑‑indent
  • Old Behavior: Indent changes were not possible.
  • New Behavior: Sets the number of spaces or tabs that will be output for each level of indentation. Positive numbers indicate spaces, negative numbers indicate tabs. The default is 0.

New %I format specifier to output all Rule Ids

  • Command: qacli view ‑‑format "%I" | ‑‑xml‑format "%I"
  • Old Behavior: Not available.
  • New Behavior: When this specifier is used all Rule Ids in the hierarchy are output. For textual output individual Rule Ids within a rule are '|' (bar) separated, Fields for each rule are ',' (comma) separated. For XML, individual Rule Ids use the tag <SingleRuleId> with each rule in a <RuleIds> tag. For example:
  • <RuleIds>
        <SingleRuleId>M3CM-3</SingleRuleId>
        <SingleRuleId>M3CM-3_1</SingleRuleId>
        <SingleRuleId>Rule-2.3</SingleRuleId>
    </RuleIds>
    <RuleIds>
        <SingleRuleId>M3CM-3</SingleRuleId>
        <SingleRuleId>M3CM-3_1</SingleRuleId>
        <SingleRuleId>Rule-2.8</SingleRuleId>
    </RuleIds>

    In text format:

    M3CM-3|M3CM-3_1|Rule-2.3,M3CM-3|M3CM-3_1|Rule-2.8

qacli view %M and %G now always displays parent rule ID

  • Command: qacli view ‑‑format "%M %G% | ‑‑xml‑format "%M %G"
  • Old Behavior: If there was just a single rule in the rule hierarchy, as opposed to the more common 3 levels of rules, then these specifiers would not return the parent rule ID.
  • New Behavior: The parent rule ID will now always be shown, regardless of the number of rules in the hierarchy.

User message editing using 'qacli project config‑file ‑‑edit'

  • Command: qacli project config‑file ‑‑edit user‑messages
  • Old Behavior: Not available.
  • New Behavior: You can now edit the user message file.

Consistent handling of ‑‑qaf‑project | ‑P in 'qacli project' commands

  • Command: qacli project
  • Old Behavior: Various qacli project sub-commands had different default values for ‑‑qaf‑project | ‑P
  • New Behavior: ‑‑qaf‑project | ‑P is now mandatory and has no default value.

Using deprecated qacli commands now triggers a warning

  • Command: qacli
  • Old Behavior: Not available.
  • New Behavior: By default, qacli will output a message to stderr warning you are using a deprecated qacli command. Where possible, a suggested replacement command will be given. For example:
  • *** Warning - The option (--qaf-project-config) has been DEPRECATED and will be removed in a future release. ***
    Consider switching to 'qacli project create'

    To disable these messages set the environment variable HELIX_QAC_DISABLE_DEPRECATED to any value.

You can force deprecated qacli commands to fail

  • Command: qacli
  • Old Behavior: Not available.
  • New Behavior: By default, qacli will output a message to stderr warning you are using a deprecated qacli command - but it will complete as normal. qacli can be forced to fail (return code 1, Command Line Parse Failure) when it encounters a deprecated command by setting the environment variable HELIX_QAC_FAIL_DEPRECATED to any value. For example:
  • *** Warning - The option (--qaf-project-config) has been DEPRECATED and will be removed in a future release. ***
    Consider switching to 'qacli project create'
    HELIX_QAC_FAIL_DEPRECATED has been set - exiting.

Implicitly supported compilers are now mentioned in the output

  • Command: qacli help ‑a
  • Old Behavior: Implicitly supported compilers, such as cctc, were not mentioned in the output.
  • New Behavior: Implicitly supported compilers are mentioned in the output