java - FindBugs 命令行 : how to specify the project to be analyzed?

标签 java findbugs

我尝试运行 FindBugs在命令行中,在指定要分析的项目时遇到了麻烦。我知道 FindBugs 在字节码(.jar、.class)上工作,所以我写了一个 HelloWorld 程序并确保它有一些困惑的代码可以被 FindBugs 检测到。

然后我尝试了:

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld/bin

抛出异常:

java.lang.IllegalArgumentException: Can't read project from HelloWorld/bin
              at edu.umd.cs.findbugs.Project.readProject(Project.java:774)

我还尝试了 .class 和 .jar 文件,但没有显示任何内容:

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld/bin/Main.class
java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.jar

我查看了 FindBugs 手册中有关命令行选项“-project”的内容,它说

The project file you specify should be one that was created using the GUI interface. It will typically end in the extension .fb or .fbp

我不明白这个。这是否意味着需要进行一些预处理并且 FindBugs 无法直接检查任意 .jar 或 .class 或项目?我如何获得此 .fb 或 .fbp 扩展名?

谢谢。

最佳答案

过程描述on the FindBugs website :

  • 确保你 download包含 GUI(称为 Swing 界面)的 FindBugs 发行版。
  • 解压缩您下载的 ZIP 并将其 bin 文件夹添加到您的 PATH。
  • 键入 findbugs 以打开 GUI,然后单击New Project
  • 在对话框中:
    • 输入项目名称,例如 HelloWorld
    • 在它说用于分析的类路径 的地方,为它提供包含您的 .class 文件的 Jar 或 .class 文件所在的目录(例如 build/classes/main或其他;包结构必须在此目录中开始)。
    • 在显示辅助类路径的地方,列出加载类所需的所有库。
    • 源目录 的工作方式与用于分析的类路径 类似,但用于 .java 文件。 FindBugs 使用它来向您展示您的问题在代码中的什么位置。
    • 您可以选择 (cloud disabled) 作为 bug store。
  • 点击分析
  • 现在您可以将项目配置保存为 .fbp 项目文件。

下次,您可以通过运行开始分析

java -jar D:/findbugs-2.0.3/lib/findbugs.jar -project HelloWorld.fbp

如果您不想或不能使用 GUI,您可以通过在 findbugs.jar 之后添加 -textui 选项作为第一个选项来获得纯文本版本。输出格式和行为通过 additional command line options 配置.

但是,大多数人将 FindBugs 与他们的 IDE 集成使用,或者将其作为构建过程的一部分。这两个用例都不需要 GUI 或命令行版本。查看适用于您的 IDE 的插件,它可能会为您节省很多时间,而且它们真的很容易使用。

关于java - FindBugs 命令行 : how to specify the project to be analyzed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157777/

相关文章:

JSplitPane 中的 Java JScrollPane 不起作用

java - 从 solrj 迁移到 spring-data-solr

java - EI_EXPOSE_REP2 设置方法

java - 如果使用 @Nonnull 注释,则不会出现针对 null 返回值的 FindBugs 警告

java - neo4j 中的出租车共享调度

java - 在 SpringMVC 中启用日志记录,而不是使用 Spring-boot

java - 无法找到对此进行冗余空检查的原因,该检查已知为非空

java - 应该是一个静态内部类,在 Lombok @Data 内部类上找到 bug 错误

java - 使用 Java 将内部类设为静态有什么好处?

java - 无法使用 jax-ws 通过 MTOM 从 SOAP 获取 PDF