Автоматизация разрешения зависимости для анализа кода
У меня простой 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 ответ
Ложка может использоваться в двух разных режимах:
- с полным путем
- в "режиме без классов"
В первом режиме вы должны предоставить Spoon весь путь к классам, необходимый для анализа проекта, например, при использовании аргументов. --source-classpath
в командной строке или с помощью launcher.getEnvironment().setSourceClasspath(String[])
, В этом режиме у вас будет максимум информации для анализа вашего кода.
Во втором режиме Spoon будет анализировать только данный исходный код, не используя информацию из библиотек. Вы не сможете получить всю информацию о классах из внешних библиотек или скомпилировать код, но все же сможете проанализировать исходный код проекта. Вы можете использовать этот режим, установив launcher.getEnvironement().setNoClasspath(true)
,
Обратите внимание, что на Spoon открыта проблема, позволяющая автоматически анализировать проект Maven с учетом всех зависимостей, указанных в файле pom.xml, см. https://github.com/INRIA/spoon/issues/1396.