diff --git a/.github/workflows/sonar_cloud.yaml b/.github/workflows/sonar_cloud.yaml index db569a89f4..21b3bca11e 100644 --- a/.github/workflows/sonar_cloud.yaml +++ b/.github/workflows/sonar_cloud.yaml @@ -1,59 +1,56 @@ name: Sonar Cloud Analysis on: + # Trigger analysis when pushing in master or pull requests, and when creating + # a pull request. push: + branches: + - master pull_request: - types: [opened, synchronize, reopened] + types: [opened, synchronize, reopened] jobs: - build: - name: Analyse with Sonar Cloud + sonarcloud: + name: Prepare and run Sonar Scan runs-on: ubuntu-latest container: sogno/dpsim:dev env: - SONAR_SCANNER_VERSION: 5.0.1.3006 - SONAR_SERVER_URL: "https://sonarcloud.io" BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Setup node 20 - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Download and set up sonar-scanner - env: - SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip - run: | - mkdir -p $HOME/.sonar - curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH - - name: Download and set up build-wrapper - env: - BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip - run: | - curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} - unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ - echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH - - name: Setup sonar cache - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/sonar-cache - key: sonar-cache-${{ github.ref }} - - name: Create Build Folder - run: mkdir build - - name: Configure CMake - shell: bash - working-directory: ${{ github.workspace }}/build - run: | - cmake -DCIM_VERSION=CGMES_2.4.15_16FEB2016 $GITHUB_WORKSPACE - - name: Run build-wrapper - run: | - build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/ - - name: Run sonar-scanner - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: | - sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" \ No newline at end of file + - name: Fetch repository + uses: actions/checkout@v4 + with: + # Disabling shallow clone is recommended for improving relevancy of reporting + fetch-depth: 0 + - name: Setup Node 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Install sonar-scanner and build-wrapper + uses: sonarsource/sonarcloud-github-c-cpp@v2 + - name: Create Build Folder + run: mkdir build + - name: Setup build directory cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/build + key: wrapper-dir-cache-${{ github.ref }} + - name: Setup sonar cache + uses: actions/cache@v4 + with: + path: | + .scannerwork + sonar-cache + key: sonar-cache-${{ github.ref }} + - name: Configure CMake + shell: bash + working-directory: ${{ github.workspace }}/build + run: | + cmake -DCIM_VERSION=CGMES_2.4.15_16FEB2016 $GITHUB_WORKSPACE + - name: Run build-wrapper + run: | + build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/ -j $(nproc) + - name: Run sonar-scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + sonar-scanner --define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index 6f230597a0..3a918355ea 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,9 +2,9 @@ sonar.projectKey=sogno-platform_dpsim sonar.organization=sogno-platform # Cpp analysis settings -sonar.cfamily.threads=2 -sonar.cfamily.cache.enabled=true -sonar.cfamily.cache.path=sonar-cache +sonar.host.url=https://sonarcloud.io +sonar.cfamily.analysisCache.path=sonar-cache +sonar.cfamily.analysisCache.mode=fs # Sonar Python Version sonar.python.version=3.8, 3.9, 3.10