ABAP Code Inspector 的一些高级功能分享(二)

简介: ABAP Code Inspector 是每一位 ABAP 开发人员工具箱里必备的代码检测工具之一。使用 ABAP Code Inspector 自带的标准检查项,可以帮助开发人员快速检测 ABAP 代码中潜在的缺陷,提高代码质量,改善代码运行性能。

Programming Conventions - Naming conventions

在这个界面里为ABAP里不同类型的变量设置好您团队里达成一致的命名规范,然后Code Inspector就能把代码里所有违反了这些命名规范的地方扫描出来。

image.png

image.png

Metrics and Statistics

这个检查类别下面的设置都是一些很有意思的统计信息。

image.png

还是举例说明。下图红色区域的设置,意思是如果一个类的方法内的可执行语句行数超过150行,Code Inspector就报一条警告消息。这是为了避免大家写出一个过于冗长的方法。

而蓝色区域的设置是如果每100行可执行代码的对应注释量小于10行,就报一条警告消息。这些阀值可以根据实际情况自行修改或关闭。

image.png

FAN-OUT Structural Metrics - 统计一个方法的扇出值

方法的扇入值和扇出值在模块化编程的上下文会经常被提及,这对概念不是编程界首创的,而是源自半导体行业里的逻辑电路设计:

image.png

逻辑门的扇出系数定义了该门能够驱动的数字信号输入的最大量,而一个代码模块的扇出值则代表了其直属下层的模块个数。


这个选项能够统计您方法的扇出系数。扇出系数太小,意味着该方法基本没有调用其他下层的函数,这有两种可能:


(1) 该方法的逻辑本身非常简单,只有两三行代码,比如类的setter/getter方法;

(2) 这个方法的模块化没有做好,存在优化的空间,比如某些直接写在方法内的语句,可以提炼成下层函数并在方法内调用。

Comment Language Metrics

这个选项可以统计代码中出现的德文注释的函数。

image.png

OO Size Metrics

这个选项也是为了防止您不经意间就创造出怪兽级的类(monster class)而生的:一旦您关注的类的属性超过设置的阀值,比如类的成员,类的公/私有方法等关注点超过选项里设置的值时,Code Inspector就会报警。

image.png

Program Complexity Test – cyclomatic complexity - 代码环复杂度(圈复杂度)的测试利器

这又是一个能帮助您写出Clean ABAP code的强大工具。


什么是代码的环复杂度?


根据维基百科的定义,我们把一段代码的执行流画成一张有向无环图,然后环复杂度可以通过下面的公式计算出来:


https://en.wikipedia.org/wiki/Cyclomatic_complexity


环复杂度 = 图的边数 - 图的节点数 + 2


image.png

这其实就是我们研究生专业课《图论》里学的欧拉定理。

看下面这个例子:

image.png

上面这8行ABAP代码,环复杂度为3,怎么计算出来的?

先把其对应的有向无环图画出来:

image.png

这张图的边数为3,即图中黑色,红色和绿色三条粗线。


这张图的顶点数为2,如图中两个菱形的蓝色图例所示。


最后环复杂度为3 – 2 + 2 = 3.


统计表明,代码的高环复杂度和高故障率之间存在很强的正相关性,这不难理解,代码的环复杂度越高,意味着里面嵌套的IF-ELSE,SWITCH等逻辑越多,无论是代码原来的开发人员,还是后来接手的维护人员,读起来都会觉得头昏脑胀。


因此大家可以多用ABAP Code Inspector的这个扫描选项,随时监控您代码的环复杂度。

16.png

Search DB Operations

把您关注的在代码中出现的SQL操作关键字全部罗列出来。

image.png

Search ABAP Statement Patterns

这个选项也很有用,能根据您指定的正则表达式扫描ABAP代码。

image.png

例如,您希望找出代码里所有出现了READ TABLE XXX WITH KEY X = X的地方,只需要在上图的输入框里填入对应的正则表达式,即用*代表任意字符串:

READ TABLE * WITH KEY * = *

然后ABAP Code Inspector就会按照我们期望的行为去扫描代码:

image.png

ABAP报表RS_ABAP_SOURCE_SCAN也能实现完全一致的功能:

image.png

总结

ABAP Code Inspector 是每一位 ABAP 开发人员工具箱里必备的代码检测工具之一。使用 ABAP Code Inspector 自带的标准检查项,可以帮助开发人员快速检测 ABAP 代码中潜在的缺陷,提高代码质量,改善代码运行性能。


本文分享了笔者工作多年使用 ABAP Code Inspector 的一些高级功能,从而满足了笔者所在团队对交付的产品代码各个维度的质量检测,监控和报表输出的功能,希望能够对大家的 ABAP 项目开发有所帮助。


16.png

目录
相关文章
|
1月前
|
前端开发 开发工具 Android开发
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
|
1月前
|
数据库
如何通过增强(Enhancement)的方式,给 ABAP Function Module 增添新的功能试读版
如何通过增强(Enhancement)的方式,给 ABAP Function Module 增添新的功能试读版
|
8月前
|
BI 数据库
SAP ABAP 释放 TR 遇到错误消息 ended with return code 8 的含义和处理办法
SAP ABAP 释放 TR 遇到错误消息 ended with return code 8 的含义和处理办法
|
1月前
|
开发工具 Web App开发 IDE
如何对 SAPGUI 里的 ABAP 代码语法检查功能进行自定义增强配套代码
如何对 SAPGUI 里的 ABAP 代码语法检查功能进行自定义增强配套代码
如何对 SAPGUI 里的 ABAP 代码语法检查功能进行自定义增强配套代码
|
1月前
|
监控 安全 测试技术
SAP ABAP 系统 STRUST 事务码里 Distribute 功能介绍
SAP ABAP 系统 STRUST 事务码里 Distribute 功能介绍
|
8月前
|
IDE 开发工具
如何使用 Visual Studio Code 查看和浏览 ABAP 代码试读版
如何使用 Visual Studio Code 查看和浏览 ABAP 代码试读版
|
8月前
|
IDE 开发工具 C++
想在 Visual Studio Code 里进行 ABAP 开发,需要安装的扩展列表
想在 Visual Studio Code 里进行 ABAP 开发,需要安装的扩展列表
|
9月前
|
SQL 数据库
使用 SAP ABAP Memory Inspector 对应用程序消耗内存进行检测时常犯的错误试读版
使用 SAP ABAP Memory Inspector 对应用程序消耗内存进行检测时常犯的错误试读版
|
1月前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
|
1月前
|
开发者 供应链 BI
SAP ABAP CALL SUBSCREEN 代码解析
SAP ABAP CALL SUBSCREEN 代码解析