kotlin插件_Kotlin的SonarQube插件-铺平道路

kotlin插件

自从开始Kotlin之旅以来,我想使用与Java中相同的库和工具。 对于库-Spring Boot,Mockito等,它很简单,因为Kotlin可与Java 100%互操作。 对于工具,这取决于。 例如,Jenkins可以完美工作,而SonarQube缺少专用的插件。 SonarSource团队的资源有限:尽管Kotlin呈上升趋势-但自Google I / O 17以来,情况就更是如此。 本系列文章是关于创建这样的插件的,而第一篇文章是关于解析Kotlin代码的。

ANTLR

在代码解析领域, ANTLR是JVM世界中的佼佼者。

ANTLR(另一种语言识别工具)是功能强大的解析器生成器,用于读取,处理,执行或翻译结构化文本或二进制文件。 它被广泛用于构建语言,工具和框架。 ANTLR通过语法生成可以构建和遍历语法树的语法分析器。

设计语法

借助专用的语法文件,ANTLR能够为任何语言生成解析代码。 但是,从头开始为常规语言创建这样的语法并非易事。 幸运的是,由于社区的力量, Github上已经存在Kotlin的语法。

使用此现有语法,ANTLR能够生成Java解析代码以供SonarQube插件使用。 步骤如下:

  • 克隆Github存储库
    git clone[email protected] :antlr/grammars-v4.git
  • 默认情况下,不鼓励在根包下生成类。 更改默认值:
    • 创建一个src/main/antlr4/<fully>/<qualified>/<package>文件夹,例如src/main/antlr4/ch/frankel/sonarqube/kotlin/api
    • 将g4文件移到那里
    • 在POM中,删除sourceDirectoryincludes antlr4-maven-plugin配置中的位以使用默认值
  • 在本地Maven存储库中构建并安装JAR
    cd  grammars-v4/kotlin
    mvn install

这将生成一个KotlinLexerKotlinParser类,以及target/classes几个相关target/classes 。 随着Maven的发展,它也将它们kotlin-1.0-SNAPSHOT.jartarget文件夹以及本地Maven存储库中的一个名为kotlin-1.0-SNAPSHOT.jar的JAR中。

测试解析代码

要测试解析代码,可以使用grun命令。 这是以下内容的别名

java-Xmx500M-cp"<path/to/antlr/complete/>.jar:$CLASSPATH" org.antlr.v4.Tool

手动创建别名或通过OSX上的Homebrew安装antlr软件包。

使用grun ,可以解析Kotlin代码,然后以文本和图形的不同方式显示它们。 以下要求在控制台中输入:

cd  target/classes
grun Kotlin kotlinFile -tree

键入有效的Kotlin代码后,它将以文本形式生成其解析树。 通过将-tree选项替换为-gui选项,它将以图形方式显示树。 例如,以下树来自此片段:

funmain(args:Array<String>){
    valfirstName:String="Adam"
    valname:String?=firstName
    print("$name")
}

AST检查器

为了稍后在SonarQube插件中使用JAR,已将其部署在Bintray上 。 在下一篇文章中,我们将进行适当的代码分析以检查违规情况。

翻译自: https://blog.frankel.ch/sonarqube-plugin-kotlin/1/

kotlin插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值