Автоматизация разрешения зависимости для анализа кода

У меня простой 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 ответ

Ложка может использоваться в двух разных режимах:

  1. с полным путем
  2. в "режиме без классов"

В первом режиме вы должны предоставить Spoon весь путь к классам, необходимый для анализа проекта, например, при использовании аргументов. --source-classpath в командной строке или с помощью launcher.getEnvironment().setSourceClasspath(String[]), В этом режиме у вас будет максимум информации для анализа вашего кода.

Во втором режиме Spoon будет анализировать только данный исходный код, не используя информацию из библиотек. Вы не сможете получить всю информацию о классах из внешних библиотек или скомпилировать код, но все же сможете проанализировать исходный код проекта. Вы можете использовать этот режим, установив launcher.getEnvironement().setNoClasspath(true),

Обратите внимание, что на Spoon открыта проблема, позволяющая автоматически анализировать проект Maven с учетом всех зависимостей, указанных в файле pom.xml, см. https://github.com/INRIA/spoon/issues/1396.

Другие вопросы по тегам