有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SonarQube Findbugs“需要编译源代码”

我试图让SonarQube findbugs工作,但当我尝试运行它时,我得到了一个错误:“findbugs需要编译源代码。请在执行sonar之前构建项目,并检查编译类的位置。”

声纳。sources被设置为一个包含我的所有src文件和sonar的文件夹。二进制文件被设置到一个包含我的所有类和jar文件的文件夹中。对于我的一个项目,这个布局可以与findbugs一起使用,但在另一个项目上,我得到了上面的错误

这是FindBugs将不运行时提供的调试错误:http://pastie.org/9483921

我该如何解决这个问题,FindBugs是否需要类/jar进入某个文件夹才能工作

谢谢


共 (5) 个答案

  1. # 1 楼答案

    我过去也遇到过同样的问题

    检查src/main文件夹下是否没有只包含pkg-info.java文件的文件夹。这些文件是javadoc文件,因此不会被编译。但是,该文件夹是在target/classes中创建的,findbugs检测到它,但没有发现.class,这会导致“需要编译源”消息崩溃

    解决方案是删除带有pkg-info.java文件的文件夹,或者在其中添加真正的java源文件(这将被编译并使findubgs感到高兴)

  2. # 2 楼答案

    SonarQube要求在分析源代码之前先构建源代码。这将根据您构建它的方式而有所不同,但是check here and click on your building platform.

    例如:如果您使用SonarQube使用Maven分析一个项目,则必须按此顺序发出以下命令(假设您按照this maven configuration page中的步骤进行操作,该命令作为第一个链接中的选项链接):

    mvn clean install
    mvn sonar:sonar
    

    因此,您必须在进行任何声纳分析之前构建代码。另外请注意,您必须单独发出这些命令,并应等待安装完成后再运行sonar

  3. # 3 楼答案

    添加属性

    sonar.binaries=${workspace}/proy/build/
    

    声纳配置。如果你正在使用多个项目进行构建,请使用coma Separad

  4. # 5 楼答案

    如果您不想像以前那样编译和使用sonar runner,您可以创建一个文件夹,并在其中放置一个有效的java类,然后按如下方式执行:

    sonar-runner -Dsonar.java.binaries=folder path