Sonarcloud не находит явных проблем с Си - PullRequest
0 голосов
/ 29 мая 2018

Я сделал очень простой 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>

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

enter image description here

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

1 Ответ

0 голосов
/ 04 июня 2018

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

Добавьте выполнение Build Wrapper в качестве префикса к обычной команде build, которую вы используете для сборки проекта (пример ниже)использует 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 дает желаемый результат:

example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...