规则' OCLint:ivar外部访问者或init'不存在

时间:2014-08-13 06:00:20

标签: ios xcode5 sonarqube oclint

我正在尝试整合SonarQube以生成关于iOS project

的报告

我正在使用Objective-C Sonar plugin

当我运行./run-sonar.sh

OCLint在我的根目录中生成compile_commands.json文件。

之后得到以下错误

11:24:39.782 INFO  - Processing OCLint report /Users/.......app/./sonar-reports/oclint.xml
11:24:39.899 ERROR - Reporting 1073 violations.
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 16.240s
Final Memory: 6M/86M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:100)
    at org.sonar.runner.Main.executeTask(Main.java:70)
    at org.sonar.runner.Main.execute(Main.java:59)
    at org.sonar.runner.Main.main(Main.java:53)
Caused by: The rule 'OCLint:ivar assignment outside accessors or init' does not exist.

任何人都可以帮我解决这个问题吗? 谢谢 AMR

Thnaks

3 个答案:

答案 0 :(得分:0)

我有类似的错误。我的声纳服务器有两个Objective-c代码分析器插件。 Sonar Plugin for Objective C (free)SonarSource Objective-C plugin (commercial)

。{{3}}和{{3}}

当我从声纳服务器中删除(卸载)其中一个插件时,错误停止发生

答案 1 :(得分:0)

我对此plugin的最后一个版本也有类似的错误,它是您使用的版本的分支。 我将我的OCLint版本从0.11降级到0.10.1,一切都运行良好。 似乎插件中定义的OCLint规则与我服务器上安装的OCLint版本不同。

答案 2 :(得分:-1)

我不确定你使用的是什么版本的objective-c-sonar插件。 我之前解决了类似的问题。

转到${SONAR_INSTALLATION_FOLDER}/extensions/plugins/,将sonar-objective-c-plugin-${version}.jar复制到其他地方。

解压缩jar文件,然后编辑下面的文件     org/sonar/plugins/objectivec/profile-oclint.xml
在xml文件的布局之后添加您缺少的规则,
可能看起来类似于

    <rule> 
        <repositoryKey>OCLint</repositoryKey>
        <key>ivar assignment outside accessors or init</key>
    </rule> 

并修改另一个文件org/sonar/plugins/objectivec/rules-oclint.xml

<rule> 
    <key>ivar assignment outside accessors or init</key>
    <name>ivar assignment outside accessors or init</name>
    <priority>MAJOR</priority>
    <description>ivar assignment outside accessors or init</description>
</rule>

然后使用zip将解压缩的文件打包为新的jar文件。 覆盖${SONAR_INSTALLATION_FOLDER}/extensions/plugins/中的原始插件jar文件,重新启动声纳,问题可能已经消失。

对遇到的所有类似问题重复此步骤。