Я пытаюсь настроить SonarQube для проекта, размещенного на Github. Настройки, предлагаемые в пользовательском интерфейсе SonarQube, хороши, несмотря на то, что в проекте используется язык программирования Objective-C. Я использую действие Github:
jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
и это терпит неудачу с
ERROR: Error during SonarScanner execution
java.lang.UnsupportedOperationException:
The only way to get an accurate analysis of C/C++/Objective-C files is by using the
SonarSource build-wrapper and setting the property "sonar.cfamily.build-wrapper-output"
or by using Clang Compilation Database and setting the property
"sonar.cfamily.compile-commands". None of these two options were specified.
Есть ли какой-нибудь Github Action, который запустит сборочную оболочку SonarSource, или что будет лучшим следующим шагом?
Поэтому я расширил свой рабочий процесс следующим образом. Есть несколько предостережений:
есть хорошее действие Github «SonarSource/sonarcloud-github-c-cpp@v1». Достаточно ли этого для анализа проектов Objective-C?
Git checkout удалит ненужные каталоги. Следовательно, вы должны установить SonarQube ПОСЛЕ проверки исходного кода.
Оболочка сборки просто отслеживает фактическую сборку, поэтому вам все равно придется запускать сканер Sonar впоследствии.
Вот полученный код:
jobs:
SonarQube:
runs-on: ubuntu-latest
env:
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
submodules: recursive
- name: Install sonar-scanner and build-wrapper
uses: SonarSource/sonarcloud-github-c-cpp@v1
- name: Run build-wrapper
run: |
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make -f Makefile pkg-posix-nightly HOST_ARCH=$(uname -m)
- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} # Put the name of your token here
run: |
sonar-scanner --define sonar.cfamily.build-wrapper-output = "${{ env.BUILD_WRAPPER_OUT_DIR }}"
См. эти темы для примеров и соответствующих ресурсов: stackoverflow.com/questions/75531993/… и stackoverflow.com/questions/75192071/…