如何与没有主目录的用户一起运行声纳分析:无法创建用户/dev/null/.sonar/cache

gre*_*ign 5 sonar-runner sonarqube

我有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

kev*_*rpe 9

默认的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


gre*_*ign 1

发现的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-task 运行时,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"

在我的例子中,它不是用户具有读写访问权限的目录(/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 问题