ABAP复杂性分析
的复杂度值对象的ABAP代码返回的来源分析ABAP质量行动基于的概念圈复杂度由托马斯·麦凯布开发,老在一个有向图表示程序的控制流,计算程序的圈复杂度(M)为:
M = E - N + P
- E是图中边的数量。在这个定义中,图的入口和出口点是假定为连接。
- N是图中节点的数目。
- P是连接组件的数量。对于面向对象的程序,每个类的方法被认为是一个单独的连接组件。
ABAP代码:
- 是否算作决策点和ELSEIF语句。然而,任何,或或其他逻辑操作数不计算在这些语句。
- 在一个CASE语句,语句时都算作决策点。
- 循环,做,并检查语句算作决策点。
- 形式、方法和功能语句算作圈复杂度的公式连接组件。这些是单独的部分代码与不同的入口点和出口点。
- 在SQL语句中,WHERE子句数的决策点选择、修改、更新和删除语句。然而,这些语句并不算如果他们没有一个WHERE子句。
- 关键条款读语句算作决策点。但是不算读语句如果他们没有一个关键条款。
关键字和计数的话
如果选择了复杂性的类别,分析ABAP质量行动使用一组关键字和计数的话来确定每个对象的ABAP代码的复杂性。关键字定义的类型声明,将被认为是在确定的源代码的复杂度值。以下关键词中指定默认质量分析所使用的规则文件ABAP行动:
抓 删除 做 ELSEIF 形式 函数 如果 包括 |
循环 方法 修改 读 选择 更新 当 而 |
计算单词定义的令牌将用于确定每个对象的ABAP代码的复杂性。以下计算单词中指定默认质量分析所使用的规则文件ABAP行动:
抓 检查 做 ELSEIF 形式 函数 如果 |
关键 循环 方法 当 在哪里 而 |
复杂性排名
如果类别选择的复杂性,分析ABAP质量行动分配一个排名,每个对象根据其复杂性值。以下排名中指定默认质量分析所使用的规则文件ABAP行动。这些值可能覆盖使用ABAP质量行动分析的复杂性等级覆盖属性。
复杂性值 | 排名 |
---|---|
0到10 | 好 |
11到15 | 坏 |
16岁或以上 | 丑陋的 |