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

时间:2013-12-02 21:26:41

标签: sonarqube sonar-runner

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

未发现的错误...提交给用户组: 我相信在声纳 - 蚂蚁 - 任务 - 2.1-&gt;声纳 - 转轮2.4->声纳 - 转轮 - 冲击 - > 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”

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

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

我认为Jars35类需要能够设置userHome,否则此属性不会产生预期的影响。即使用户有一个有效的主目录,一些缓存的jar也会缓存到系统user.home中,其余的(在加载了bootstrap实现之后)将加载到相应的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问题进行更新

答案 2 :(得分:0)

我建议在SonarQube用户列表http://sonarqube.15.x6.nabble.com/SonarQube-Users-f3159782.html

上发布此内容