Как запустить статический анализ библиотеки, написанного на языке СИ, с компиляцией для SonarQube?

Имеется библиотека GSL (gnu scientific library) версии 2.7.1. которую я хочу проанализировать с помощью метода статического анализа. Для анализа использовать sonar-scanner и плагин sonar-cxx (для поддержки языков C/C++) для SonarQube Community. Я запускал анализ без сборки, но проблема в том, что при таком методе анализатор не понимал какие методы где находятся и в итоге 0 уязвимостей и ошибок (только дефекты кода).окно замечаний Для данного плагина (sonar-cxx) есть три способа запустить анализ вместе с сборкой: https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Compilers Я использовать JSON Compilation Database. JSON файл создавал с помощью утилиты bear. Использовал команды в корневом каталоге библиотеки GSL:

./configure --prefix=/home/gsl/gsl-install #обозначение место установки библиотеки и генерация Make файлов
bear --use-cc - make #получение JSON файла компиляции.

sonar-project.properties:

# must be unique in a given instance
sonar.projectKey=gsl-with-build
sonar.language = cxx
# Path is relative to the sonar-project.properties file. Defaults to .
sonar.sources=.
sonar.host.url=http://localhost:9000
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar.cxx.jsonCompilationDatabase=compile_commands.json
# mandatory: files to be handled by the _cxx plugin_
sonar.cxx.file.suffixes=.c,.h

Запустил анализ командой:

sonar-scanner \
  -Dsonar.projectKey=gsl-with-build \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.token=sqp_9f65d495c56f4f78a18eae24ba628a7f1e381c81

И получил ошибку:

ERROR: Error during SonarScanner execution
java.lang.IllegalArgumentException: expected one element but was: <gsl/gsl_statistics_float.h, statistics/gsl_statistics_float.h>
    at org.sonar.api.batch.fs.internal.DefaultFileSystem.inputFile(DefaultFileSystem.java:130)
    at org.sonar.scanner.scan.filesystem.MutableFileSystem.inputFile(MutableFileSystem.java:53)
    at org.sonar.plugins.cxx.CxxSquidSensor.save(CxxSquidSensor.java:423)
    at org.sonar.plugins.cxx.CxxSquidSensor.execute(CxxSquidSensor.java:335)
    at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
    at org.sonar.scanner.sensor.ProjectSensorsExecutor.execute(ProjectSensorsExecutor.java:52)
    at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:371)
    at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
    at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
    at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137)
    at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
    at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
    at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
    at com.sun.proxy.$Proxy0.execute(Unknown Source)
    at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
    at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
    at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
    at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
    at org.sonarsource.scanner.cli.Main.main(Main.java:62)
ERROR: 
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.

Из-за чего данная ошибка? Есть ли возможность запустить анализ с компиляцией для плагина sonar-cxx с помощью остальных способов для данной библиотеки? Можно ли использовать что то помимо sonar-scanner, который поддерживает SonarQube?


Ответы (0 шт):