长期以来,SAP提供的标准ABAP开发工具是我们对代码进行检查的唯一方式。这意味着我们只能对ABAP服务器上的ABAP代码做出分析,而离线代码则成为了纯粹的文本,开发者无法对其进行检查。abaplint的出现改变了这一点,它可以在一定程度上“理解”代码,帮助我们解决一些问题,和SAP的标准工具形成有效的互补。本文会介绍ABAP开发相关的工具abaplint以及它在开发过程中的应用。
本文链接:https://www.cnblogs.com/hhelibeb/p/12166288.html
原创内容,转载请注明
基本介绍lint或linter是一种静态分析工具,可以分析并标记代码中的错误、bug、可疑结构。 abaplint是ABAP语言的linter,它基于typescript,可以在多种平台工作,作者是Lars Hvam(同时也是abapGit的作者)。
项目地址:https://github.com/abaplint/abaplint
和Code Inspector等其它静态分析工具类似,abaplint可以做到帮助我们找到有问题的代码、确保统一的代码风格等事情。
应用 在编辑器中的应用以Visual Studio Code中的abaplint插件为例,它可以分析出代码中的错误,如下图,abaplint找出了短短一段代码中的10个问题。
鼠标划过报错内容时,编辑器也会给出具体提示,如下图,(上面的黑色主题的提示框边界不是很明显,为了让读者看清楚提示框,这里主题颜色使用了Solarized Light)
在持续集成(CI)中的应用在编辑器中使用abaplint对代码进行实时检查是一种典型的应用方式,还有一种应用方式是通过abaplint对代码进行自动检查,它可以是持续集成中的一个场景。
比如,如果以Github作为代码托管平台,可以安装Github的abaplint应用(https://github.com/apps/abaplint),配置需要检查的repo后,每当对相应的repo发起pr或push,都会有自动的代码检查,Github也会显示检查结果。(类似SAP系统中的传输前检查CTS_REQUEST_CHECK)
下图是我的配置,
进行一次commit之后,可以看到abaplint给出了26处问题和问题所在的代码位置。
此外,也可以使用Travis CI或Gitlab的CI来执行abaplint的自动检查。具体可以参考该文:《Automatic checking of your ABAP code in Github/Gitlab with CI and abaplint》
应用范围abaplint支持多种代码编辑器和代码托管平台,列表如下,
VS Code (source)
GitHub App
GitHub Actions
GitLab Pipelines
Bitbucket Pipelines
Azure Pipelines
Travis CI
Atom (待实现, source)
Code Climate Engine, 待实现
ABAP in Eclipse, (待实现, source)
配置abaplint支持很多检查规则(并且在持续地更新中),可以通过abaplint.json文件来控制各个检查规则的启用与关闭、设置某些具体的检查参数。
abaplint-clean-code项目中包含了这些规则的介绍,和配置文件示例。第一次使用abaplint的用户可以以该项目中的配置文件示例作为模板,按照自己的需要,结合规则介绍进行修改。
关于规则介绍部分,它不仅给出了规则的效果,也参考sap的style guides给出了规则存在的具体原因。
以其中一个设置为例,
"method_length": { "statements": 25, "ignoreTestClasses": false, "errorWhenEmpty": true, "reason": "https://github.com/SAP/styleguides/blob/master/clean-abap/CleanABAP.md#keep-methods-small" },