zoukankan      html  css  js  c++  java
  • 开源工具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支持多种代码编辑器和代码托管平台,列表如下,

    配置

    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的检查结果,每个方法都有完整的单元测试,那么人们对这个项目的信心将大大增加。信心的增加会促使人们将更多资源投入到开源项目中,从而促进社区的成长。

     
     
     
     
  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/hhelibeb/p/12166288.html
Copyright © 2011-2022 走看看