2017-07-08 2 views
0

J'ai code simple scala avec Spoon bibliothèque:automaticité résoudre la dépendance pour l'analyse de code

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) 
    } 

} 

j'avais cloné projet open source de GitHub, mais je ne peux pas le compiler.

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) 

Je ne trouve pas de solution pour la résolution de l'automaticité? Comment les fixer pour des projets généraux, pas seulement celui-ci?

Répondre

1

cuillère peut être utilisé dans deux modes différents:

  1. avec classpath plein
  2. en "non-classpath mode"

Avec le premier mode, vous devez fournir Spoon la Chemin de classe complet nécessaire pour analyser le projet, par exemple en utilisant les arguments --source-classpath en ligne de commande ou en utilisant launcher.getEnvironment().setSourceClasspath(String[]). Dans ce mode, vous aurez un maximum d'informations pour analyser votre code. Avec le deuxième mode, Spoon analysera seulement le code source donné sans exploiter les informations des bibliothèques. Vous ne serez pas en mesure d'obtenir toutes les informations de classes à partir de bibliothèques externes, ou de compiler le code, mais vous pouvez toujours analyser la source de code du projet. Vous pouvez utiliser ce mode en réglant launcher.getEnvironement().setNoClasspath(true).

Veuillez noter qu'un problème est ouvert sur Spoon pour pouvoir analyser automatiquement un projet Maven, en considérant toutes les dépendances données dans le fichier pom.xml, voir: https://github.com/INRIA/spoon/issues/1396.