我正在尝试访问sbt中的编译任务的信息。具体来说,我的目标是获得所有具有@native
注释的类中的所有方法的列表。
要开始使用,我研究了Analysis
API:
//print some info about the build structure
def printDefinition(definition: xsbti.api.Definition): Unit = definition match {
case classDef: xsbti.api.ClassLike =>
println("class " + classDef.name())
classDef.structure.declared.foreach{ d =>
printDefinition(d)
}
case otherDef: xsbti.api.Definition =>
println("other: " + otherDef.name())
}
//list all declarations
compile := {
val analysis = (compile in Compile).value
analysis.apis.internal.foreach{ case (file, source) =>
source.api().definitions() foreach printDefinition
}
analysis
}
但遗憾的是,未列出任何@native
方法。编译器不会为本机方法生成代码,我猜他们因此在sbt的报告中省略了它们。但是,由于classDef.structure
有一个declared
字段(而不是defined
或implemented
),我想知道这是否是错误和/或是否有其他方式列出带有所述注释的所有方法?