gpt4 book ai didi

java - 如何使用 Java 运行 SpotBugs 进行静态代码分析?

转载 作者:行者123 更新时间:2023-11-30 06:15:04 27 4
gpt4 key购买 nike

我正在研究在 Java 中动态注入(inject) groovy 脚本。因此,在执行这些脚本之前,我想使用 SpotBugs 确保它们没有潜在的错误。 (静态代码分析器)。这是伪代码:

Here it should return the infinite loop bug.

String script = "class Hello { static void main(String []args) { def i = 0; while ( i <= 0) { i = i - 1; } } } ";
List<Bugs> bugs = SpotBugs.getBugs(script);
if (bugs == null) {
execute(script);
}

那么如何使用java执行SpotBugs.getBugs(script),输入脚本不会像上面的示例那样被硬编码,而是会动态获取。

最佳答案

最简单的 API

最简单的方法是将编译后的代码写入类文件(如果需要,可以在临时目录中)。通过将类编译为文件,您将能够使用 FindBugs类,它提供 API 来配置范围和规则,而无需使用可能会发生更改的内部类。

Groovy 动态(默认)与静态编译

但是,您将面临的主要障碍是 Groovy 字节码 对于 SpotBugs 来说太模糊了。对于对函数 abc() 的调用,您不会在字节码中看到对方法 abc 的调用。它将是对运行时创建的全局函数映射的引用。 Groovy 有一种编译为动态程度较低的格式的模式。此模式不允许在运行时创建函数。您可以在此测试存储库中检查配置以指示编译器使用静态模式:https://github.com/find-sec-bugs/find-sec-bugs-demos/tree/master/groovy-simple 。然而,这是 Gradle 编译,而不是接收字符串作为代码的编程 API。

关于java - 如何使用 Java 运行 SpotBugs 进行静态代码分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com