diff options
m--------- | cmake | 0 | ||||
-rwxr-xr-x | scripts/run-sonar.sh | 47 |
2 files changed, 44 insertions, 3 deletions
diff --git a/cmake b/cmake -Subproject 859b487ef401b723aeea2800079bc8df14ad715 +Subproject 602f927bc111effa6651dda260cf308ba9345ab diff --git a/scripts/run-sonar.sh b/scripts/run-sonar.sh index 38547bbcf..3d386bbfc 100755 --- a/scripts/run-sonar.sh +++ b/scripts/run-sonar.sh @@ -22,12 +22,53 @@ cd /workspace git config --global --add safe.directory /workspace git config --global --add safe.directory /workspace/cmake -export SONAR_BUILD_WRAPPER=$HOME/.sonar/build-wrapper-linux-x86/build-wrapper-linux-x86-64 -make SONAR_OUT_DIR=bw-output build-coverage +BUILD_PATH=${PWD}/build-debug +TEST_PATH="${BUILD_PATH}/build-root/bin" + +make SONAR_BUILD_WRAPPER=${HOME}/.sonar/build-wrapper-linux-x86/build-wrapper-linux-x86-64 SONAR_OUT_DIR=bw-output BUILD_PATH=${BUILD_PATH} wipe build-coverage + +# Run tests to compute test coverage +pushd ${BUILD_PATH} + +declare -a TEST_COMPONENTS=( + "libtransport" + "lib" + "hicn_light" + "hicnplugin" + "libhicnctrl" +) + +# Save first test executable +FIRST_COMPONENT="${TEST_COMPONENTS[0]}" +FIRST_TEST="${TEST_PATH}/${FIRST_COMPONENT}_tests" + +# Iterate over all tests: build parameters for next tests and get .profraw data +extension=".profraw" +PROFRAW_FILES="" +REMAINING_TESTS="" +for component in "${TEST_COMPONENTS[@]}"; do + # Build PROFRAW parameters for next command + PROFRAW_FILES="${PROFRAW_FILES}${component}${extension} " + + # Save if not first binary + [[ "${component}" != "${FIRST_COMPONENT}" ]] && REMAINING_TESTS="${REMAINING_TESTS} -object ${TEST_PATH}/${component}_tests" + + # Generate profraw data + LLVM_PROFILE_FILE="${BUILD_PATH}/${component}${extension}" ${TEST_PATH}/${component}_tests +done + +# Merge profraw files +llvm-profdata-11 merge -sparse ${PROFRAW_FILES} -o hicn.profdata + +# Generate coverage report +llvm-cov-11 show ${FIRST_TEST} ${REMAINING_TESTS} -instr-profile=hicn.profdata --format=text > ${BUILD_PATH}/coverage.txt + +popd $SONAR_SCANNER_HOME/bin/sonar-scanner \ -Dsonar.organization=$PROJECT_ORGANIZATION \ -Dsonar.projectKey=$PROJECT_KEY \ -Dsonar.sources=/workspace \ -Dsonar.cfamily.build-wrapper-output=bw-output \ - -Dsonar.host.url=$SONAR_HOST_URL + -Dsonar.host.url=$SONAR_HOST_URL \ + -Dsonar.cfamily.llvm-cov.reportPath=${BUILD_PATH}/coverage.txt |