在IDE中调用Joern Scala API的基本方法

这篇博客接之前的总结。看到Joern目前的官网里介绍:https://joern.io/docs/javalib/,是可以调用其Scala API的,虽然官网给了很多例子,但是基本没说怎么配置基本的环境,如果是没有用过Scala的人(例如我),看到这些基本上是抓瞎啊。

在组里童鞋的帮助下,终于搞清楚基本流程了:

这里我们以Windows系统为例,首先应该搭建Scala的环境,具体可以参考这篇博客:https://blog.csdn.net/Appleyk/article/details/82180599。

配置好之后,其实要做的事情就很简单了:在GitHub上Clone Joern的文件夹:https://github.com/ShiftLeftSecurity/joern。在IntelliJ的主界面中选择“Open or Import”——定位到Joern的根目录下——选择ok——经过一段时间等待,就可以将这个项目导入IntelliJ中了。

然后在项目目录结构下,选择Joern-cli——src——main——scala——在这个文件夹上点右键——然后就可以新建Scala Object (class和object的区别,网上有很多讨论,例如https://www.cnblogs.com/linxizhifeng/p/9064704.html)了。

然后我们可以创建一个最简单的调用Joern API的例子:

import io.shiftleft.joern.console.Joern
import io.shiftleft.semanticcpg.language._

object Test {
  def main(args: Array[String]): Unit={
    val c=Joern.loadCpg(inputPath = "D:\\Joern-Source-Try\\joern-master\\cpg.bin")
    print(c.get.method.l.size)
  }
}

具体的路径大家可以自己调整。

另外再吐槽一下Joern的官网的文档,基本上就是乱七八糟、毫无逻辑。

例如这里:https://joern.io/docs/querying/structure/,不会告诉你上面import的是在哪个包中,怎么能运行这些示例代码,而https://joern.io/docs/api/ 这个页面竟然是空的,真的是太让人无语了,这样让别人怎么用你的工具?

你可能感兴趣的:(在IDE中调用Joern Scala API的基本方法)