diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 666ffba..fd6d82d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,11 +10,10 @@ jobs: image: ubuntu:jammy-20230126 env: working-directory: /asn1_codec - BUILD_WRAPPER_OUT_DIR: "$GITHUB_WORKSPACE/bw-output" options: "--user root" steps: - name: checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Checkout the code from the repository - name: Install necessary dependencies @@ -76,70 +75,34 @@ jobs: echo "export CC=gcc" >> ~/.bashrc working-directory: ${{ env.working-directory }} - - name: Install sonar-scanner and build-wrapper - uses: SonarSource/sonarcloud-github-c-cpp@v3 - # Install SonarScanner and build-wrapper for code analysis - - name: Build and Generate test coverage run: | - sudo su - root - sudo chmod o+w /root - sudo chmod 755 -R /__w/asn1_codec/asn1_codec/ - export BUILD_WRAPPER_OUT_DIR=$GITHUB_WORKSPACE/bw-output - build-wrapper-linux-x86-64 --out-dir $GITHUB_WORKSPACE/bw-output ./build.sh - mkdir coverage - cd coverage - gcov $GITHUB_WORKSPACE/kafka-test/src/*.cpp --object-directory /__w/asn1-codec/asn1-codec/build/kafka-test/CMakeFiles/Kafka-TestLib.dir/src/ - gcov $GITHUB_WORKSPACE/src/*.cpp --object-directory /__w/asn1-codec/asn1-codec/build/CMakeFiles/ppm_tests.dir/src/ + chmod +x build.sh + ./build.sh + mkdir -p coverage + gcovr \ + --root $GITHUB_WORKSPACE \ + --object-directory $GITHUB_WORKSPACE/build \ + --sonarqube coverage/coverage.xml \ + --exclude '.*pugixml.*' \ + --exclude '.*librdkafka.*' working-directory: ${{ env.working-directory }} - name: Archive code coverage results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: asn1-codec path: /__w/asn1-codec/asn1-codec/coverage/ # Archive code coverage results for later reference - - name: Archive buildwrapper output - uses: actions/upload-artifact@v4 - with: - name: asn1-codec - path: /home/runner/work/asn1-codec/asn1-codec/bw-output - # Archive build-wrapper output - - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '17' - - name: Setup SonarScanner - uses: warchant/setup-sonar-scanner@v7 - - - name: Generate sonar properties file - run: | - # Generate SonarScanner properties file - cat < /tmp/sonar-scanner.properties - sonar.host.url=https://sonarcloud.io - sonar.projectName=asn1-codec - sonar.projectVersion=1.0 - sonar.projectKey=usdot-jpo-ode_asn1-codec - sonar.organization=usdot-jpo-ode - sonar.sources=src,kafka-test/src,include - sonar.cfamily.build-wrapper-output=bw-output - sonar.cfamily.gcov.reportsPath=/__w/asn1-codec/asn1-codec/coverage/ - sonar.sonar.projectBaseDir=/home/runner/work/asn1-codec/asn1-codec/ - sonar.exclusions=**/*.java - sonar.coverage.exclusions=**/*.java - sonar.exclusions=pugixml/tests/data/** - # Set Git as SCM sensor - sonar.scm.disabled=true - sonar.scm.provider=git - sonar.sourceEncoding=UTF-8 - EOF - - name: SonarScanner - if: github.event.pull_request.base.repo.owner.login == 'usdot-jpo-ode' + - name: SonarScanner + if: github.event_name != 'pull_request' || github.event.pull_request.base.repo.owner.login == 'usdot-jpo-ode' uses: usdot-fhwa-stol/actions/sonar-scanner@main with: - sonar-properties-path: /tmp/sonar-scanner.properties sonar-token: ${{ secrets.SONAR_TOKEN }} - working-dir: $GITHUB_WORKSPACE + working-dir: ${{ github.workspace }} \ No newline at end of file diff --git a/build.sh b/build.sh index ef46842..2c7bbde 100644 --- a/build.sh +++ b/build.sh @@ -22,7 +22,7 @@ ls -la && pwd # build asn1_codec mkdir build cd build -cmake .. +cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. cmake --build . make ctest --output-on-failure \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index b5cfe93..20631c9 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,9 +1,14 @@ -sonar.projectKey=jpo-cvdp-key -sonar.projectName=jpo-cvdp +sonar.organization=usdot-jpo-ode +sonar.projectKey=usdot-jpo-ode_asn1-codec +sonar.projectName=asn1-codec sonar.projectVersion=1.0 -sonar.sources=src,cv-lib/src -sonar.cfamily.build-wrapper-output=bw-output -sonar.host.url=https://sonarqube.com -sonar.organization=aferber-github -sonar.login=feb286a32ec2f510525f9e3e44da3f81b4de57c0 -sonar.cfamily.gcov.reportsPath=./coverage + +sonar.sources=src,kafka-test/src,include +sonar.cfamily.compile-commands=build/compile_commands.json +sonar.coverageReportPaths=coverage/coverage.xml + +sonar.exclusions=**/*.java,pugixml/tests/data/** +sonar.coverage.exclusions=**/*.java +sonar.scm.disabled=true +sonar.scm.provider=git +sonar.sourceEncoding=UTF-8 \ No newline at end of file