From b36177321513899803a1a6928dda7d1670573eaf Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 15 Aug 2025 18:42:13 -0700 Subject: [PATCH 1/2] #171 update sonarqube action Unable to test this locally since that's not something github actions supports. --- .github/workflows/cetlvast.yml | 26 +++- .vscode/settings.json | 1 - cetlvast/CMakePresets.json | 113 +++++++++--------- cetlvast/CMakePresetsVendorTemplate.json | 3 +- cetlvast/cmake/bin/test_report_util.py | 25 +++- cetlvast/cmake/modules/FindSonarScanner.cmake | 13 +- cetlvast/cmake/modules/FindTestReport.cmake | 13 +- cetlvast/cmake/modules/Findgcovr.cmake | 2 +- cetlvast/suites/unittest/CMakeLists.txt | 18 +-- cetlvast/suites/unittest/sonar.cpp | 20 ++++ 10 files changed, 141 insertions(+), 93 deletions(-) diff --git a/.github/workflows/cetlvast.yml b/.github/workflows/cetlvast.yml index 3cd00c08..c7fa97a5 100644 --- a/.github/workflows/cetlvast.yml +++ b/.github/workflows/cetlvast.yml @@ -171,9 +171,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis by sonarqube. - - name: Install sonar-scanner - uses: SonarSource/sonarcloud-github-c-cpp@v3 - - name: Cache ext modules uses: actions/cache@v4 with: @@ -186,10 +183,29 @@ jobs: - name: Check for SONAR_TOKEN if: ${{ env.SONAR_TOKEN == '' && github.event_name != 'pull_request' }} run: echo "::error file=cetlvast.yml,line=191,col=8,endColumn=80,title=SONAR_TOKEN-missing::SONAR_TOKEN was empty or not found." - - name: Run sonar-scanner + - name: Run build for sonar-scanner if: ${{ env.SONAR_TOKEN != '' }} working-directory: cetlvast - run: cmake --workflow --preset manual-sonar-scan-gcc-native-cpp-14-offline + run: cmake --workflow --preset manual-coverage-gcc-native-cpp-14-offline + - name: SonarQube Scan + uses: SonarSource/sonarqube-scan-action@v5.3.0 + if: ${{ env.SONAR_TOKEN != '' }} + with: + args: > + -Dsonar.organization=opencyphal + -Dsonar.projectKey=OpenCyphal_CETL + -Dsonar.projectName=CETLVaSt + -Dsonar.verbose=true + -Dsonar.cfamily.compile-commands=cetlvast/build/compile_commands.json + -Dsonar.cfamily.cobertura.reportPath=cetlvast/build/suites/unittest/coverage.xml + -Dsonar.testExecutionReportPaths=cetlvast/build/suites/unittest/unittest-sonarqube.xml + -Dsonar.sources="include,cetlvast/suites/unittest/sonar.cpp" + -Dsonar.tests="cetlvast/suites/unittest" + -Dsonar.test.inclusions="**/test_*.cpp" + -Dsonar.cfamily.ignoreHeaderComments=false + -Dsonar.coverage.exclusions="cetlvast/**/*,**/sonar.cpp" + -Dsonar.cpd.exclusions="cetlvast/**/*,**/sonar.cpp" + -Dsonar.cfamily.reportingCppStandardOverride=c++14 deploy-docs: if: > diff --git a/.vscode/settings.json b/.vscode/settings.json index b5b3a864..e385410a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,6 @@ { "cmake.configureOnOpen": false, "cmake.configureOnEdit": false, - "cmake.buildDirectory": "${workspaceFolder}/build", "cmake.sourceDirectory": "${workspaceFolder}/cetlvast", "cmake.buildBeforeRun": true, "editor.wordWrapColumn": 120, diff --git a/cetlvast/CMakePresets.json b/cetlvast/CMakePresets.json index beb74694..1c119335 100644 --- a/cetlvast/CMakePresets.json +++ b/cetlvast/CMakePresets.json @@ -499,8 +499,21 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" + ] + }, + { + "name": "manual-Coverage-no-scan-gcc-native-cpp-14-offline", + "configurePreset": "configure-gcc-native-cpp-14-offline", + "configuration": "Coverage", + "targets": [ + "build", + "run_unittests", + "gcovr_html_report_for_unittest", + "gcovr_sonarqube_report_for_unittest", + "run_examples", + "gcovr_html_report_for_examples", + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1714,8 +1727,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1729,8 +1741,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1744,8 +1755,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1759,8 +1769,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1774,8 +1783,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1789,8 +1797,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1804,8 +1811,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1819,8 +1825,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1834,8 +1839,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1849,8 +1853,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1864,8 +1867,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1879,8 +1881,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1894,8 +1895,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1909,8 +1909,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1924,8 +1923,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1939,8 +1937,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1954,8 +1951,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1969,8 +1965,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1984,8 +1979,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -1999,8 +1993,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2014,8 +2007,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2029,8 +2021,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2044,8 +2035,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2059,8 +2049,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2074,8 +2063,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, { @@ -2089,8 +2077,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] } ], @@ -2140,6 +2127,21 @@ } ] }, + { + "name": "manual-coverage-gcc-native-cpp-14-offline", + "displayName": "gcc native cpp 14 offline (Coverage only).", + "description": "Hand-managed workflow for generating coverage data for sonarqube scans.", + "steps": [ + { + "type": "configure", + "name": "configure-gcc-native-cpp-14-offline" + }, + { + "type": "build", + "name": "manual-Coverage-no-scan-gcc-native-cpp-14-offline" + } + ] + }, { "name": "lint-workflow-clang-native-cpp-14-online", "displayName": "clang native cpp 14 online lint workflow.", @@ -3053,8 +3055,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, "preset-groups": { diff --git a/cetlvast/CMakePresetsVendorTemplate.json b/cetlvast/CMakePresetsVendorTemplate.json index 30699a33..8624d36a 100644 --- a/cetlvast/CMakePresetsVendorTemplate.json +++ b/cetlvast/CMakePresetsVendorTemplate.json @@ -39,8 +39,7 @@ "gcovr_sonarqube_report_for_unittest", "run_examples", "gcovr_html_report_for_examples", - "gcovr_sonarqube_report_for_examples", - "sonar-cloud-scan-OpenCyphal_CETL" + "gcovr_sonarqube_report_for_examples" ] }, "preset-groups": { diff --git a/cetlvast/cmake/bin/test_report_util.py b/cetlvast/cmake/bin/test_report_util.py index b0a1a8c3..cca98d91 100755 --- a/cetlvast/cmake/bin/test_report_util.py +++ b/cetlvast/cmake/bin/test_report_util.py @@ -15,6 +15,7 @@ import argparse import logging +import os import pathlib import sys import typing @@ -22,7 +23,7 @@ # +---------------------------------------------------------------------------+ -def _junit_to_sonarqube_generic_execution_format(junit_report: pathlib.Path, test_executions: ET.Element) -> None: +def _junit_to_sonarqube_generic_execution_format(junit_report: pathlib.Path, test_executions: ET.Element, base_dir: typing.Optional[pathlib.Path] = None) -> None: """Append junit testsuite data to sonarqube testExecutions data. Input Format: http://google.github.io/googletest/advanced.html#generating-an-xml-report @@ -67,7 +68,15 @@ def _junit_to_sonarqube_generic_execution_format(junit_report: pathlib.Path, tes try: sq_file = sq_files[testcase_file] except KeyError: - sq_file = ET.Element("file", attrib={"path": testcase_file}) + # Make path relative to base_dir if provided + file_path = testcase_file + if base_dir is not None: + try: + rel_path = os.path.relpath(testcase_file, base_dir) + file_path = rel_path + except ValueError: + file_path = testcase_file + sq_file = ET.Element("file", attrib={"path": file_path}) test_executions.append(sq_file) sq_files[testcase_file] = sq_file @@ -129,15 +138,19 @@ def _make_parser() -> argparse.ArgumentParser: "--input", action="append", help="Input files to convert.") + parser.add_argument("-b", + "--base-dir", + type=pathlib.Path, + help="Base directory to make file paths relative to.") return parser # +---------------------------------------------------------------------------+ -def append(test_report: pathlib.Path, sq_report: ET.Element) -> int: +def append(test_report: pathlib.Path, sq_report: ET.Element, base_dir: typing.Optional[pathlib.Path] = None) -> int: try: - _junit_to_sonarqube_generic_execution_format(test_report, sq_report) + _junit_to_sonarqube_generic_execution_format(test_report, sq_report, base_dir) return 0 except ET.ParseError as err: logging.warning("Failed to parse report {}: {}".format(test_report, err)) @@ -173,11 +186,11 @@ def main() -> int: for test_report in pathlib.Path.cwd().glob(args.pattern): if test_report.suffix == ".xml": logging.info("Found report {}. Trying to combine into sonarqube report.".format(test_report)) - if append(test_report, sq_report.getroot()) != 0 and args.stop_on_failure: + if append(test_report, sq_report.getroot(), args.base_dir) != 0 and args.stop_on_failure: return 1 for test_report in args.input: - if append(test_report, sq_report.getroot()) != 0 and args.stop_on_failure: + if append(test_report, sq_report.getroot(), args.base_dir) != 0 and args.stop_on_failure: return 1 if args.dry_run: diff --git a/cetlvast/cmake/modules/FindSonarScanner.cmake b/cetlvast/cmake/modules/FindSonarScanner.cmake index 72c6af80..5f50e449 100644 --- a/cetlvast/cmake/modules/FindSonarScanner.cmake +++ b/cetlvast/cmake/modules/FindSonarScanner.cmake @@ -97,6 +97,12 @@ function (define_sonar_cloud_scan_target_for_c_cpp) endif() endif() + if(NOT DEFINED ENV{SONAR_TOKEN}) + message(WARNING "SONAR_TOKEN environment variable is not set.") + else() + set(LOCAL_SONAR_TOKEN $ENV{SONAR_TOKEN}) + endif() + #+-[body]-----------------------------------------------------------------+ list(JOIN ARG_SOURCES "," LOCAL_SOURCES) @@ -107,7 +113,8 @@ function (define_sonar_cloud_scan_target_for_c_cpp) add_custom_target(sonar-cloud-scan-${ARG_PROJECT_KEY} DEPENDS ${ARG_DEPENDS} USES_TERMINAL - COMMAND ${SONAR_SCANNER} --debug + COMMAND ${SONAR_SCANNER} + --define sonar.verbose=true --define sonar.organization=${ARG_ORGANIZATION} --define sonar.projectKey=${ARG_PROJECT_KEY} --define sonar.projectName=${ARG_PROJECT_NAME} @@ -123,10 +130,10 @@ function (define_sonar_cloud_scan_target_for_c_cpp) --define sonar.cpd.exclusions=${ARG_EXCLUDE_CPD} --define sonar.cfamily.compile-commands=${ARG_COMPILE_COMMANDS} --define sonar.cfamily.reportingCppStandardOverride=c++${ARG_CPP_VERSION} - --define sonar.coverageReportPaths=${LOCAL_COVERAGE_REPORTS} + --define sonar.cfamily.cobertura.reportPaths=${LOCAL_COVERAGE_REPORTS} --define sonar.testExecutionReportPaths=${LOCAL_TEST_REPORTS} --define sonar.branch.name=${ARG_BRANCH_NAME} - --define sonar.token=$ENV{SONAR_TOKEN} + --define sonar.token=${LOCAL_SONAR_TOKEN} WORKING_DIRECTORY ${ARG_ROOT_DIRECTORY} VERBATIM COMMENT "Running sonar-scanner using sonarcloud for ${ARG_PROJECT_KEY}") diff --git a/cetlvast/cmake/modules/FindTestReport.cmake b/cetlvast/cmake/modules/FindTestReport.cmake index 03fc3c70..33b3aa78 100644 --- a/cetlvast/cmake/modules/FindTestReport.cmake +++ b/cetlvast/cmake/modules/FindTestReport.cmake @@ -37,19 +37,22 @@ find_package_handle_standard_args(TestReport function(define_junit_to_sonarqube_conversion_rule) #+-[input]----------------------------------------------------------------+ set(options "") - set(singleValueArgs OUTPUT) + set(singleValueArgs OUTPUT BASEDIR) set(multiValueArgs SOURCE_FILES) cmake_parse_arguments(PARSE_ARGV 0 ARG "${options}" "${singleValueArgs}" "${multiValueArgs}") #+-[body]-----------------------------------------------------------------+ - set(LOCAL_INPUT_FILE_LIST) + set(LOCAL_ARG_LIST) + if (ARG_BASEDIR) + list(APPEND LOCAL_ARG_LIST "--base-dir" ${ARG_BASEDIR}) + endif() foreach(LOCAL_INPUT_FILE ${ARG_SOURCE_FILES}) - list(APPEND LOCAL_INPUT_FILE_LIST "-i") - list(APPEND LOCAL_INPUT_FILE_LIST ${LOCAL_INPUT_FILE}) + list(APPEND LOCAL_ARG_LIST "-i") + list(APPEND LOCAL_ARG_LIST ${LOCAL_INPUT_FILE}) endforeach() add_custom_command(OUTPUT ${ARG_OUTPUT} COMMAND ${LOCAL_TEST_REPORT_UTILITY} - ${LOCAL_INPUT_FILE_LIST} + ${LOCAL_ARG_LIST} ${ARG_OUTPUT} DEPENDS ${ARG_SOURCE_FILES} VERBATIM diff --git a/cetlvast/cmake/modules/Findgcovr.cmake b/cetlvast/cmake/modules/Findgcovr.cmake index 8ce1861d..f4a49414 100644 --- a/cetlvast/cmake/modules/Findgcovr.cmake +++ b/cetlvast/cmake/modules/Findgcovr.cmake @@ -266,7 +266,7 @@ function (enable_coverage_report) list(APPEND LOCAL_FORMAT_ARGS "${LOCAL_REPORT_INDEX}") elseif (LOCAL_REPORT_FORMAT STREQUAL "sonarqube") set(LOCAL_REPORT_INDEX "coverage.xml") - list(APPEND LOCAL_FORMAT_ARGS "--sonarqube") + list(APPEND LOCAL_FORMAT_ARGS "--cobertura") list(APPEND LOCAL_FORMAT_ARGS "${LOCAL_REPORT_INDEX}") else() message(FATAL_ERROR "${LOCAL_REPORT_FORMAT} is not a supported coverage report format.") diff --git a/cetlvast/suites/unittest/CMakeLists.txt b/cetlvast/suites/unittest/CMakeLists.txt index df451135..f280c1d9 100644 --- a/cetlvast/suites/unittest/CMakeLists.txt +++ b/cetlvast/suites/unittest/CMakeLists.txt @@ -192,7 +192,7 @@ set_directory_properties(PROPERTIES enable_coverage_report(COVERAGE_REPORT_FORMATS html sonarqube ROOT_DIRECTORY ${CETL_ROOT} - OUT_REPORT_INDICES LOCAL_COVERAGE_REPORT_INDICIES + OUT_REPORT_INDICES LOCAL_COVERAGE_REPORT_INDICES ) @@ -224,31 +224,21 @@ if (${SonarScanner_FOUND}) message(STATUS "SonarScanner found. Adding a local Sonar Scanner target.") - if(NOT DEFINED ENV{SONAR_TOKEN}) - message(WARNING "SONAR_TOKEN token not found. Set this in the environment upload scan results to " - "${SONARSCANNER_SONARCLOUD_URL}. While the scan will still run, the scanner will return an " - "error which will fail the build.") - endif() - define_sonar_cloud_scan_target_for_c_cpp( ROOT_DIRECTORY ${CETL_ROOT} PROJECT_KEY OpenCyphal_CETL PROJECT_NAME CETLVaSt DEPENDS unittest-sonarqube.xml - ${LOCAL_COVERAGE_REPORT_INDICIES} + ${LOCAL_COVERAGE_REPORT_INDICES} cetlvast_sonar SOURCES - "include" + "${CETL_ROOT}/include" "${CMAKE_CURRENT_SOURCE_DIR}/sonar.cpp" TESTS "${CMAKE_CURRENT_SOURCE_DIR}" TEST_INCLUSIONS - "test_*.cpp" - EXCLUDE_COVERAGE - "${CMAKE_CURRENT_SOURCE_DIR}/**/*,**/sonar.cpp" - EXCLUDE_CPD - "${CMAKE_CURRENT_SOURCE_DIR}/**/*,**/sonar.cpp" + "**/test_*.cpp" CPP_VERSION ${CETLVAST_CPP_STANDARD} COMPILE_COMMANDS "${CMAKE_BINARY_DIR}/compile_commands.json" diff --git a/cetlvast/suites/unittest/sonar.cpp b/cetlvast/suites/unittest/sonar.cpp index 8378f06a..aa812227 100644 --- a/cetlvast/suites/unittest/sonar.cpp +++ b/cetlvast/suites/unittest/sonar.cpp @@ -8,6 +8,26 @@ /// #include "cetl/cetl.hpp" +#include "cetl/rtti.hpp" +#include "cetl/type_traits_ext.hpp" +#include "cetl/unbounded_variant.hpp" +#include "cetl/variable_length_array.hpp" +#include "cetl/visit_helpers.hpp" +#include "cetl/pmr/buffer_memory_resource_delegate.hpp" +#include "cetl/pmr/function.hpp" +#include "cetl/pmr/interface_ptr.hpp" +#include "cetl/pmr/memory.hpp" +#include "cetl/pf17/array_memory_resource.hpp" +#include "cetl/pf17/buffer_memory_resource.hpp" +#include "cetl/pf17/byte.hpp" +#include "cetl/pf17/memory_resource.hpp" +#include "cetl/pf17/optional.hpp" +#include "cetl/pf17/string_view.hpp" +#include "cetl/pf17/type_traits.hpp" +#include "cetl/pf17/utility.hpp" +#include "cetl/pf17/variant.hpp" +#include "cetl/pf17/sys/memory_resource.hpp" +#include "cetl/pf20/span.hpp" int main() { From 9962ac3e01c6c7244ec83076de69d4dea24bf58c Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 29 Aug 2025 09:35:09 -0700 Subject: [PATCH 2/2] Update .github/workflows/cetlvast.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/cetlvast.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cetlvast.yml b/.github/workflows/cetlvast.yml index c7fa97a5..a9e5ce71 100644 --- a/.github/workflows/cetlvast.yml +++ b/.github/workflows/cetlvast.yml @@ -197,7 +197,7 @@ jobs: -Dsonar.projectName=CETLVaSt -Dsonar.verbose=true -Dsonar.cfamily.compile-commands=cetlvast/build/compile_commands.json - -Dsonar.cfamily.cobertura.reportPath=cetlvast/build/suites/unittest/coverage.xml + -Dsonar.cfamily.cobertura.reportPaths=cetlvast/build/suites/unittest/coverage.xml -Dsonar.testExecutionReportPaths=cetlvast/build/suites/unittest/unittest-sonarqube.xml -Dsonar.sources="include,cetlvast/suites/unittest/sonar.cpp" -Dsonar.tests="cetlvast/suites/unittest"