Sonarcloud не находит явных проблем с Си

Я сделал очень простой C-файл, чтобы проверить вывод sonarcloud при использовании C-кода. Весь мой код такой:

#include <stdio.h>
#include <stdlib.h>

int main() {

 int i;

 for(int j = 0; j < 100; j++) {
    void* unreleasedMemory = malloc(1024);
    printf("Address: %p\n", unreleasedMemory);
 }

 printf("Uninitialized i is: %d", i);
 return 0;

}

Когда я запускаю новый проект в sonarcloud и выполняю команды build-wrapper и sonar-scanner, например:

build-wrapper-macosx-x86 --out-dir bw-output cmake .

После этого:

sonar-scanner \
-Dsonar.projectKey=ctest \
-Dsonar.organization=<orgname> \
-Dsonar.sources=. \
-Dsonar.cfamily.build-wrapper-output=bw-output \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.login=<tokenvalue>

Вывод обоих параметров выглядит нормально. К сожалению, он не обнаруживает эти довольно очевидные ошибки:

Что я делаю не так, чтобы sonarcloud подобрал их?

1 ответ

Решение

Цитирование https://docs.sonarqube.org/display/PLUG/Building+on+Mac+OS+X:

Добавьте выполнение Build Wrapper в качестве префикса к обычной команде сборки, которую вы используете для сборки вашего проекта (в приведенном ниже примере используется xcodebuild, но можно использовать любой инструмент сборки, который выполняет полную сборку)

Другими словами: все файлы, которые должны быть проанализированы, должны быть скомпилированы во время выполненияbuild-wrapper, Это нужно, потому что build-wrapper отслеживает вызовы компилятора для сбора информации о том, какие файлы скомпилированы в вашем проекте и с какими параметрами, затем эта информация используется для анализа во время выполнения sonar-scanner,

Я серьезно сомневаюсь, что ваше исполнение cmake . выполняет компиляцию main.c - он просто генерирует make-файлы, и поэтому main.c на самом деле не анализируется должным образом.

Исполнение

cmake .
build-wrapper-macosx-x86 --out-dir bw-output make clean all

с последующим исполнением sonar-scanner с -Dsonar.cfamily.build-wrapper-output=bw-output дает желаемый результат:

пример

Другие вопросы по тегам