7

我有 sonarqube 服务器 4.0 和 sonar-ant-task-2.1。我的声纳目标在我的本地 RHEL 5 机器上运行良好,但是一旦我将它提升到共享的 RHEL 5 环境,它将由主目录显然是“/dev/null”的用户运行。我无法改变这一点。

我收到以下错误:无法创建用户缓存/dev/null/.sonar/cache 原因:java.io.IOException:无法创建目录/dev/null/.sonar/cache

我设置了以下两个属性:

<property name="sonar.working.directory" value="dirWhereUserHasAccess"/> <property name="sonar.userHome" value="dirWhereUserHasAccess"/>

这些属性似乎在本地具有所需的影响,但是在共享环境中运行时,不使用 sonar.userHome。我犯了同样的错误。它正在尝试使用 /dev/null。

如何让声纳停止尝试访问此缓存的 /dev/null ?

错误描述如下。Jira 任务创建https://jira.codehaus.org/browse/SONARPLUGINS-3349

4

2 回答 2

12

默认的 Sonar 缓存目录路径是:System.getProperty("user.home") + File.separator + ".sonar"

SONAR_USER_HOME运行前设置环境变量mvn sonar:sonar

Bash 示例:SONAR_USER_HOME=/my/path/.sonar mvn sonar:sonar

不幸的是,这个名称SONAR_USER_HOME具有误导性——它不能替代user.home; 它是完整的缓存目录路径。要复制默认行为,在 Bash 中以下内容就足够了:SONAR_USER_HOME=$HOME/.sonar mvn sonar:sonar

参考:https ://github.com/SonarSource/sonarqube/blob/1f231f2cfcd47e66ca818cd1a8cbd93cc89af45d/sonar-home/src/main/java/org/sonar/home/cache/FileCacheBuilder.java

于 2015-02-28T12:27:39.577 回答
1

Uncovered bug... 提交给用户组:我相信sonar-ant-task-2.1->sonar-runner-2.4->sonar-runner-impl->Jars35有问题

https://github.com/SonarSource/sonar-runner/blob/master/sonar-runner-impl/src/main/java/org/sonar/runner/impl/Jars35.java#L40

此行不考虑 sonar.userHome 属性。当 ant 任务运行时,Jars35 调用 FileCacheBuilder.build() 而不设置 userHome。因此,建设者选择

https://github.com/SonarSource/sonar/blob/master/sonar-home/src/main/java/org/sonar/home/cache/FileCacheBuilder.java#L54

System.getProperty("user.home") + File.separator + ".sonar"

在我的情况下,它不是用户具有 r/w 访问权限 (/dev/null) 的目录。因此分析失败并出现以下错误:

...引起:java.io.IOException:无法在 org.sonar.home 的 org.apache.commons.io.FileUtils.forceMkdir(FileUtils.java:1748) 创建目录 /dev/null/.sonar/cache .cache.FileCache.createDir(FileCache.java:155) ... 30 更多

我认为 Jars35 类需要能够设置 userHome 否则此属性将不会产生预期的影响。即使用户有一个有效的主目录,一些缓存的 jar 也会缓存到系统 user.home 中,其余的(在使用引导实现加载之后)将被加载到适当的 sonar.userHome 位置。

FileCacheProvider 使用 sonar.userHome 设置通过 FileCacheBuilder 构建 FileCache。 https://github.com/SonarSource/sonar/blob/master/sonar-batch/src/main/java/org/sonar/batch/bootstrap/FileCacheProvider.java#L34

如果输入,我将更新 jira 问题

于 2013-12-05T17:38:20.100 回答