开源工具abaplint的介绍
长期以来,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"
},
method_length是方法长度的配置项;statements的数量决定了方法的最大行数;ignoreTestClasses,忽略测试类,
errorWhenEmpty,对不含代码的空方法报错;reason,该设置的原因。
(个人认为25有点小,有时候容易导致浅模块)
相关网站
abaplint项目下还有一些实用网站,这里介绍几个我了解的。
playground.abaplint.org
一个在线编辑器,包含一个可编辑的report程序和一个可编辑的配置文件abaplint.json,可以通过它试验abaplint的效果。
syntax.abaplint.org
一个ABAP的语法图网站,如下,

如果你不了解语法图,可以看这篇文章,或查找其它资料。
stats.abaplint.org
对一些开源项目的统计,包含项目的对象数量、文件数量、语句数量、方法长度、语句兼容性、对象类型、行数趋势等信息的统计。可以帮助开源开发者分析自己的项目。效果如下图:

abaplint的意义
abaplint目前的流行度似乎还不是很高(当前有62 star, 24 fork, 在abap标签下分别排名第8和第10)。但我相信它是一个很有意义ABAP开源项目,未来可能会对ABAP的生态产生深远影响。
ABAP开发者一直以来都在SAP ABAP服务器上进行开发工作,代码的分析、测试完全在ABAP服务器上进行。复杂而笨重的SAP系统不是到处都有的,而且这些系统大多是孤立的。这意味着,开发内容的分享十分不方便。虽然理论上可以通过SAP系统工具对开发对象进行导入导出、代码分析等工作,但在本质上,它们通常是为了一个组织内部的分享而存在的。当一个素不相识的人在github发布了一个新的开源项目时,其它人无法得知这个项目曾经在ABAP服务器上进行过怎样的检查,这会影响信任的构建。abaplint独立实现了原本只能在ABAP服务器上进行的检查,如果一个项目的每次commit包含abaplint的检查结果,每个方法都有完整的单元测试,那么人们对这个项目的信心将大大增加。信心的增加会促使人们将更多资源投入到开源项目中,从而促进社区的成长。
开源工具abaplint的介绍的更多相关文章
- Guava 开源工具的简单介绍
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...
- DBUtils-对JDBC简单封装的开源工具类库
DBUtils 是对JDBC简单封装的开源工具类 详细介绍地址: https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin 在使用DBUtil ...
- 【转帖】四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho
四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho 1 BI系统的简述 从技术角度来说 BI 包含了 ETL.DW.OLAP.DM等多环节.简单的说就是把交易系统 ...
- 【转】开源性能测试工具 - Apache ab 介绍
版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途.本人保留对本文的一切权利.如需转载,请在转载是保留此版权声明,并保证本文的完整性.也请转贴者理解创作的辛劳 ...
- Xamarin Anroid开发教程之Anroid开发工具及应用介绍
Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...
- [Hadoop 周边] Hadoop和大数据:60款顶级大数据开源工具(2015-10-27)【转】
说到处理大数据的工具,普通的开源解决方案(尤其是Apache Hadoop)堪称中流砥柱.弗雷斯特调研公司的分析师Mike Gualtieri最近预测,在接下来几年,“100%的大公司”会采用Hado ...
- Hadoop和大数据:60款顶级大数据开源工具
一.Hadoop相关工具 1. Hadoop Apache的Hadoop项目已几乎与大数据划上了等号.它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算. 支持的操作系统: ...
- GitHub 开源工具整理
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...
- JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...
随机推荐
- 前端知识体系(二)http请求
https://blog.csdn.net/Lammonpeter/article/details/81358387 一.DNS解析 首先DNS域名系统的作用是将输入的url域名解析成ip地址以方便对 ...
- CODE FESTIVAL 2017 qual B D 101 to 010(dp)
除非人品好,能碰巧想到思路,否则基本是做不出来dp的,除了那几个经典的dp模型.. 看了几个前几名的代码,还是t神的代码比较清晰.膜tourist 代码的思路和题解思路基本一致..... #inclu ...
- HDU-6668-Game 百度之星第一场B
在多个连续的区间段中,选出连续重复度最高的区间,这样连续选出多个重复度最高的不相交区间,然后从第一个区间的左边已经右边开始,连续贪心即可,答案取最小值 #include<iostream> ...
- 2013-2-1 pdf中无法用金山词霸取词问题
打开pdf的编辑——〉首选项——〉一般——〉选项——〉开始——〉只有经过认证的插件,把‘checkbox’里的勾去掉,重启. ★在acrobat reader启动画面里如果没有加载xdict32(工具 ...
- 2018-8-10-git-使用-VisualStudio-比较分支更改
title author date CreateTime categories git 使用 VisualStudio 比较分支更改 lindexi 2018-08-10 19:16:52 +0800 ...
- jq杂项方法/工具方法----trim() html() val() text() attr()
https://www.cnblogs.com/sandraryan/ $.trim() 函数用于去除字符串两端的空白字符.在中间的时候不会去掉. var str = ' 去除字符串左右两端的空格,换 ...
- java Jre和Jdk的区别?
JRE:(Java Runtime Environment),java运行环境.包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开 ...
- jQuery 选择器 bug
$(function(){ $(".menu li").hide(); //目标对象(一定要用class或id选择器)绑定函数 $(".menu").click ...
- P1043 查找小于x的最大元素
题目描述 现在告诉你一个长度为 \(n\) 的有序数组 \(a_1, a_2, ..., a_n\) ,以及 \(q\) 次询问,每次询问会给你一个数 \(x\) ,对于每次询问,你需要输出数组 \( ...
- 2018-2-13-win10-UWP-Markdown-含源代码
title author date CreateTime categories win10 UWP Markdown 含源代码 lindexi 2018-2-13 17:23:3 +0800 2018 ...