我试图让SonarQube findbug工作,但是当我尝试运行它时,我得到错误:" Findbugs需要编译源代码。请在执行声纳之前构建项目并检查已编译类的位置。"
sonar.sources设置为包含所有src文件的文件夹,sonar.binaries设置为包含所有类和jar文件的文件夹。这个布局适用于我的一个项目的findbugs,但另一方面我得到了上述错误。
这是FindBugs无法运行时提供的调试错误:http://pastie.org/9483921
我该如何解决这个问题,并且是否有某个文件夹FindBugs需要使用类/ jar工作?
感谢。
答案 0 :(得分:8)
添加属性
sonar.binaries=${workspace}/proy/build/
对Sonar配置。如果要使用多个项目进行构建,请使用逗号分隔。
答案 1 :(得分:1)
SonarQube需要在分析源代码之前构建源代码。根据您的构建方式,这会有所不同,但check here and click on your building platform.
例如:如果您使用SonarQube分析带有Maven的项目,则必须按此顺序发出以下命令(假设您按照this maven configuration page中的步骤进行操作,该步骤在第一个中作为选项链接链路):
mvn clean install
mvn sonar:sonar
因此,您必须在进行任何声纳分析之前构建代码。另请注意,您必须单独发出这些命令,并且应该在运行声纳之前等待安装完全完成。
答案 2 :(得分:1)
我过去曾遇到过同样的问题。
检查您在src / main文件夹下的某个文件夹中是否包含仅包含pkg-info.java
文件的文件夹。这些文件是javadoc文件,因此不会编译。但是,该文件夹是在目标/类中创建的,findbugs会检测到它,但找不到.class
,这会导致“需要编译源代码”消息崩溃。
解决方案是删除包含pkg-info.java
文件的文件夹,或在其中添加真正的java源文件(将编译并使findubgs满意。)
答案 3 :(得分:1)
如果您不想像以前一样编译和使用sonar-runner,您可以创建一个文件夹并在其中放置一个有效的java类并执行如下:
NSString *folderPath=[[PDKeychainBindings sharedKeychainBindings] objectForKey:@"key_name"];
答案 4 :(得分:0)
声纳属性名称已更改,请参阅http://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode
e.g。 sonar.java.binaries替换了sonar.binaries以获取插件版本> 2.5
这解决了我的findbugs问题。