diff options
Diffstat (limited to 'scripts/run-sonar.sh')
-rwxr-xr-x | scripts/run-sonar.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/run-sonar.sh b/scripts/run-sonar.sh new file mode 100755 index 000000000..87a94b592 --- /dev/null +++ b/scripts/run-sonar.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -euxo pipefail + +# SONAR_HOST_URL=https://sonarcloud.io +# PROJECT_KEY=fdio-hicn +# PROJECT_ORGANIZATION=fdio + +SCRIPT_PATH=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P ) +source "${SCRIPT_PATH}/functions.sh" + +export SONAR_TOKEN=$API_TOKEN +export SONAR_SCANNER_VERSION=4.7.0.2747 +export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux +curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip +unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ +export PATH=$SONAR_SCANNER_HOME/bin:$PATH +export SONAR_SCANNER_OPTS="-server" +curl --create-dirs -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip +unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ +export PATH=$HOME/.sonar/build-wrapper-linux-x86:$PATH + +cd /workspace + +git config --global --add safe.directory /workspace +git config --global --add safe.directory /workspace/cmake + +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} + +# 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.cfamily.llvm-cov.reportPath=${BUILD_PATH}/coverage.txt |