自动解析代码分析的依赖关系



我有简单的scala代码Spoon库:

class ExtractCodeDataTest extends FlatSpec {

it should "Run and not be empty" in{
val l = new Launcher()
l.addInputResource("./testData/owasp-security-logging")
l.buildModel()
val factory = l.getFactory
val allClass = factory.Class().getAll(true)
println(allClass)
}
}

我已经从github克隆了开源项目,但我无法编译它。

The import org.junit cannot be resolved at /home/user/IdeaProjects/testSearch/testData/owasp-security-logging/owasp-security-logging-logback/src/test/java/org/owasp/security/logging/filter/SecurityMarkerFilterTest.java:3
spoon.compiler.ModelBuildingException: The import org.junit cannot be resolved at /home/user/IdeaProjects/testSearch/testData/owasp-security-logging/owasp-security-logging-logback/src/test/java/org/owasp/security/logging/filter/SecurityMarkerFilterTest.java:3
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.report(JDTBasedSpoonCompiler.java:583)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.reportProblems(JDTBasedSpoonCompiler.java:564)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:120)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:101)

我找不到任何自动解决依赖关系的方法?如何为一般项目修复它们 - 不仅是这个特定的项目?

勺子可以在两种不同的模式下使用:

  1. 具有完整的类路径
  2. 在"无类路径模式"下

使用第一种模式,您必须向 Spoon 提供分析项目所需的整个类路径,例如在命令行中使用--source-classpath参数或使用launcher.getEnvironment().setSourceClasspath(String[]).在此模式下,你将拥有最多的信息来分析代码。

在第二种模式下,Spoon 将只分析给定的源代码,而不利用库中的信息。您将无法从外部库中获取类的所有信息,也无法编译代码,但仍然可以分析项目的代码源代码。您可以通过设置launcher.getEnvironement().setNoClasspath(true)来使用此模式。

请注意,在考虑pom.xml中给出的整个依赖项时,Spoon上打开了一个问题,以便能够自动分析Maven项目,请参阅:https://github.com/INRIA/spoon/issues/1396。

相关内容

  • 没有找到相关文章

最新更新