java - Clojure 代码的 Sonarqube 静态代码分析
问题描述
我正在使用 Sonarqube 版本7.5.0.20543,Sonar Scanner 版本sonar-scanner-4.2.0.1873和 Sonar-Clojure 插件(https://github.com/fsantiag/sonar-clojure)
我正在尝试使用 Sonarqube 分析 Clojure 代码。我已将上述 Clojure 插件添加到声纳服务器。我正在尝试从存储代码的本地路径运行声纳扫描仪。以下是我正在使用的命令:-
sonar-scanner.bat -D"sonar.projectKey=ProjectKey" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=xxxxxxx"
这是我运行命令时遇到的错误:–</p>
at org.sonar.api.utils.command.CommandExecutor.execute(CommandExecutor.java:102)
at org.sonar.plugins.clojure.sensors.CommandRunner.run(CommandRunner.java:36)
at org.sonar.plugins.clojure.sensors.CommandRunner.run(CommandRunner.java:50)
at org.sonar.plugins.clojure.sensors.eastwood.EastwoodSensor.execute(EastwoodSensor.java:47)
at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:45)
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:88)
at org.sonar.scanner.phases.SensorsExecutor.lambda$execute$1(SensorsExecutor.java:65)
at org.sonar.scanner.phases.SensorsExecutor.withGlobalStrategy(SensorsExecutor.java:80)
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:65)
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:74)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:164)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:319)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:314)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:288)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:82)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:131)
at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
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:112)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.io.IOException: Cannot run program “lein”: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessBuilder.start(Unknown Source)
at java.base/java.lang.ProcessBuilder.start(Unknown Source)
at org.sonar.api.utils.command.CommandExecutor.execute(CommandExecutor.java:74)
… 36 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessImpl.create(Native Method)
at java.base/java.lang.ProcessImpl.(Unknown Source)
at java.base/java.lang.ProcessImpl.start(Unknown Source)
… 39 more
还有其他我可以使用的插件吗?还是我做的不对?
附言。我对 Sonarqube 和 Clojure 都很陌生
解决方案
看起来你切断了异常堆栈跟踪的开头(它应该在开头说一些关于“异常”的内容)。
但是,底部有一个很大的线索:
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.io.IOException: Cannot run program “lein”: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessBuilder.start(Unknown Source)
at java.base/java.lang.ProcessBuilder.start(Unknown Source)
at org.sonar.api.utils.command.CommandExecutor.execute(CommandExecutor.java:74)
… 36 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessImpl.create(Native Method)
at java.base/java.lang.ProcessImpl.(Unknown Source)
您的 SonarSource 代码正在尝试查找名为lein
. 它显然不在系统 PATH 上。我猜您lein
在尝试调用 SonarQube 扫描仪时使用错误。
我发现了一些可以帮助您调试安装的信息:
- https://www.jishuwen.com/d/2MVR
- https://clojars.org/sonar-clojure-native-plugin
- https://www.reddit.com/r/Clojure/comments/azrpym/code_quality_inspection_for_clojure_using/
- https://docs.sonarqube.org/display/PLUG/Other+Plugins
- https://github.com/fsantiag/sonar-clojure
- https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
推荐阅读
- c# - Regex IsMatch 随机无法匹配模式
- javascript - 在没有按钮的页面加载时打开模式
- sql - 创建唯一的条码生成器 SQL 查询
- python - 如果 python 包已经下载了 Pip 和库,我该如何安装它?
- python - 尝试对字典键进行排序时出现 TypeError
- python - 如何更改 Databricks“运行”选项卡跟踪的实验?
- arrays - 如何将对象数组转换为 MongoDB 中父对象中的字段?
- google-docs - Google Docs:在查找和替换结果中插入换行符
- ios - 在 iOS 上的点击行为与 disableSynchroniztion 不一致
- bluetooth - 在哪里可以找到核心蓝牙规范?