如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity
代码的环复杂度(Cyclomatic complexity,有的地方又翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。
在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护。
计算公式
环复杂度 = E − N + 2
E = 程序控制流图中边的个数
N = 程序控制流图中点的个数
看个具体的例子。下面这段ABAP代码的环复杂度根据公式计算为3.
DATA: lv_value TYPE i VALUE 1.
IF lv_value = 1. WRITE: / 'always happend'.
ELSEIF lv_value = 2. WRITE: / 'not possible'.
ELSE. WRITE: / 'even not possible'.
ENDIF.
先把代码的程序流图画出来:
在ABAP里用Code inspector这个工具测量代码的环复杂度:
具体步骤参考我的ABAP博客:
A Small tip to get all transparent tables used in ABAP code
Useful tips regarding ABAP code inspector that you may not know
而Java可以用一个叫做SourceMonitor的工具测量环复杂度:
详细使用参考我的博客Use SourceMonitor to monitor your java code complexity
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙":
如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity相关推荐
- 使用工具Source Monitor测量您Java代码的环复杂度
代码的环复杂度(Cyclomatic complexity,有时也翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 来看看计算公式. 代码环 ...
- 使用Source Monitor检测Java代码的环复杂度
Today I found a useful free software called "SourceMonitor" which can help to calculate an ...
- java代码质量 圈复杂度,代码圈复杂度(Cyclomatic Complexity,CC)和Oclint工具 介绍...
什么是代码圈复杂度 圈复杂度是一种度量程序复杂度的方法,由 Thomas McCabe 于 1976年定义,用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径条数,即合理的预防错误所需测试的最少 ...
- 常用java代码质量检查工具.md
常用扫描工具 PMD-CPD :Copy/Paste Detector (CPD) 代码重复率检测 PMD:分析 Java 源代码,找出潜在的 bug Findbugs :Java bug检查 che ...
- java中的圈复杂度计算_[代码质量] 圈复杂度和代码质量优化(附带示例代码纠正代码质量)...
什么是圈复杂度? --------------------------------------- 圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施.它根据程序从 ...
- 质量管理之代码的圈复杂度
首先,我们要知道,圈复杂度是什么? 圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 在软件测试的概念 ...
- 前端代码质量-圈复杂度原理和实践
写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾向,并且知道你住在哪里的精神变态者. 1. 导读 你们是否也有过下面的想法? 重构一个项目还不如新开发一个项目... 这代码是谁写的,我 ...
- ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
ABAP 740的新语法: 上图的代码相当于: DATA: ls_data LIKE LINE OF it_data. READ TABLE it_data INTO ls_data WITH KEY ...
- 提高 Java 代码质量
高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...
最新文章
- STC用PCA测量脉宽_用于相干激光雷达的大能量长脉宽单频激光器 | COL
- HTML5 移动页面自适应手机屏幕四类方法
- WebP 大战 JPEG,谁才是真正的王者?
- UVA - 512 ​​​​​​​Spreadsheet Tracking
- SQL Server表竖列转横向显示
- 如何插入? | 非开车,纯技术交流
- python 监控linux硬盘,Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例...
- Derby安装使用说明
- 入门深度学习,理解神经网络、反向传播算法是第一关
- CCF NOI1034 钞票兑换
- 支持断点续传的大文件传输协议
- Syntax error on token?excepted agter this token
- 【3D动态脑图制作软件】万彩脑图大师教程 | 将思维导图输出到云服务
- 吞食天地2蜀汉英雄传1.5版图文攻略
- 央行降息后六大城市房价有望反弹(名单)
- 计算机学院 名言,计算机系网络毕业名言
- 技术工坊|腾讯华为入局的区块链BaaS平台解决了什么问题?(上海)
- css3常用语言-动画
- C/C++在线餐馆预订管理系统
- Java中常见的单词
热门文章
- 签名build apk: Could not resolve all files for configuration ':app:lintClassPath' 问题
- 最优化理论与方法(part8)--凸集的分离和支撑
- Django(part5)--url匹配优先级
- 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
- 统计学 计算机论文,统计学课程论文范文
- maple 假设_Maple常用计算命令..
- 如何在 SAP 电商云 Spartacus 代码里获取 Routes 路由信息
- SAP Spartacus 用户认证的实现
- SAP Spartacus B2B table的配置信息从哪里来?
- Angular refreshView的执行原理