diff --git a/.github/workflows/sonar_cloud.yaml b/.github/workflows/sonar_cloud.yaml new file mode 100644 index 0000000000000..049bafde262d4 --- /dev/null +++ b/.github/workflows/sonar_cloud.yaml @@ -0,0 +1,70 @@ +name: SonarCloud +on: + push: + branches: + - master + pull_request: + types: [opened, synchronize, reopened] +jobs: + build: + name: Build and analyze + runs-on: ubuntu-22.04 + env: + BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed + steps: + - name: Free disk space by removing .NET, Android and Haskell + shell: bash + run: | + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc + + - name: Checkout sources + uses: actions/checkout@v3 + with: + fetch-depth: 100 # enough to get all commits for the current day + + - name: Parallel submodules checkout + shell: bash + run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) + + - name: Install sonar-scanner and build-wrapper + uses: SonarSource/sonarcloud-github-c-cpp@v2 + + - name: Install build tools and dependencies + shell: bash + run: | + sudo apt update -y + sudo apt install -y \ + ninja-build \ + libgl1-mesa-dev \ + libglvnd-dev \ + qt6-base-dev \ + libqt6svg6-dev + + - name: Configure + shell: bash + run: ./configure.sh + + - name: Configure ccache + uses: hendrikmuhs/ccache-action@v1.2 + + - name: CMake + shell: bash + env: + CC: clang-14 + CXX: clang++-14 + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + # -g1 should slightly reduce build time. + run: | + cmake . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-g1 -DCMAKE_CXX_FLAGS=-g1 + + - name: Run build-wrapper + run: | + build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} ninja -C build/ + + - name: Run sonar-scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000000000..cda8d33cc80f3 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,13 @@ +sonar.projectKey=AndrewShkrob_organicmaps +sonar.organization=andrei-shkrob + +# This is the name and version displayed in the SonarCloud UI. +#sonar.projectName=organicmaps +#sonar.projectVersion=1.0 + + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +#sonar.sources=. + +# Encoding of the source code. Default is default system encoding +#sonar.sourceEncoding=UTF-8 \ No newline at end of file