BAZEL

The BAZEL synchronization method populates a Helix QAC project based upon an existing local Bazel build. Ensure you have Bazel installed and can perform a build, using a command such as:

bazel build <target>

This should be done in a Bazel workspace directory before synchronizing with QAC. This synchronization method is similar to the BUILD_LOG or JSON sync methods, as the compilation is done before the synchronization rather than during.

Limitations

  • We do not support remote execution, it exclusively facilitates local builds which must have been done before this command is used.
  • Only files in this Bazel project are added to the Helix QAC project. Any 3rd party dependencies downloaded during the build will not be added to the Helix QAC project.
  • We support the default mnemonics for building C/C++.
  • Custom mnemonics are supported via explicit options ‑‑custom‑mnemonics|‑m
  • We do not monitor other build systems, such as make or CMake, invoked by Bazel. For such scenarios, consider using INJECT as your synchronization method.
  • Testing has been limited to MSVC, GNU and Clang based compilers. Other compilers may produce less desirable results.
  • The default compiler that Bazel uses on Windows is clang-cl which is not supported for CCT generation.
  • Analysis may depend on temporary files or external dependencies that are downloaded by Bazel. Consequently, analysis may fail if a Bazel clean command is issued.

The following command will synchronize the Bazel project residing in the current directory with the Helix QAC project which is also in the current directory:

qacli sync -P . -t BAZEL  //…

If the bazel command requires additional parameters that would also be required to run a bazel aquery command, these options can be specified with the HELIX_QAC_BAZEL_ARGUMENTS environment variable.