ament_cmake_clang_format

Checks the code style of C / C++ source files using ClangFormat. Files with the following extensions are being considered: .c, .cc, .cpp, .cxx, .h, .hh, .hpp, .hxx.

How to run the check from the command line?

The command line tool is provided by the package ament_clang_format.

How to run the check from within a CMake ament package as part of the tests?

package.xml:

<buildtool_depend>ament_cmake</buildtool_depend>
<test_depend>ament_cmake_clang_format</test_depend>

CMakeLists.txt:

find_package(ament_cmake REQUIRED)
if(BUILD_TESTING)
  find_package(ament_cmake_clang_format REQUIRED)
  ament_clang_format()
endif()

To override the clang-format version to be used, specify the CLANG_FORMAT_VERSION argument to ament_clang_format():

find_package(ament_cmake REQUIRED)
if(BUILD_TESTING)
  find_package(ament_cmake_clang_format REQUIRED)
  ament_clang_format(CLANG_FORMAT_VERSION 10)
endif()

Alternatively, this can be specified by defining the ament_cmake_clang_format_CLANG_FORMAT_VERSION global CMake variable. This can be useful when the test is run indirectly, such as through ament_lint_auto:

find_package(ament_cmake REQUIRED)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
set(ament_cmake_clang_format_CLANG_FORMAT_VERSION 10)
ament_lint_auto_find_test_dependencies()
endif()

The clang-format configuration file can be overridden in the same way using either the CONFIG_FILE argument or the ament_cmake_clang_format_CONFIG_FILE global variable.

When running multiple linters as part of the CMake tests the documentation of the package ament_lint_auto might contain some useful information.

The documentation of the package ament_cmake_test provides more information on testing in CMake ament packages.