代码的环复杂度(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相关推荐

  1. 使用工具Source Monitor测量您Java代码的环复杂度

    代码的环复杂度(Cyclomatic complexity,有时也翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 来看看计算公式. 代码环 ...

  2. 使用Source Monitor检测Java代码的环复杂度

    Today I found a useful free software called "SourceMonitor" which can help to calculate an ...

  3. java代码质量 圈复杂度,代码圈复杂度(Cyclomatic Complexity,CC)和Oclint工具 介绍...

    什么是代码圈复杂度 圈复杂度是一种度量程序复杂度的方法,由 Thomas McCabe 于 1976年定义,用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径条数,即合理的预防错误所需测试的最少 ...

  4. 常用java代码质量检查工具.md

    常用扫描工具 PMD-CPD :Copy/Paste Detector (CPD) 代码重复率检测 PMD:分析 Java 源代码,找出潜在的 bug Findbugs :Java bug检查 che ...

  5. java中的圈复杂度计算_[代码质量] 圈复杂度和代码质量优化(附带示例代码纠正代码质量)...

    什么是圈复杂度? --------------------------------------- 圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施.它根据程序从 ...

  6. 质量管理之代码的圈复杂度

    首先,我们要知道,圈复杂度是什么? 圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 在软件测试的概念 ...

  7. 前端代码质量-圈复杂度原理和实践

    写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾向,并且知道你住在哪里的精神变态者. 1. 导读 你们是否也有过下面的想法? 重构一个项目还不如新开发一个项目... 这代码是谁写的,我 ...

  8. ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

    ABAP 740的新语法: 上图的代码相当于: DATA: ls_data LIKE LINE OF it_data. READ TABLE it_data INTO ls_data WITH KEY ...

  9. 提高 Java 代码质量

    高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...

最新文章

  1. STC用PCA测量脉宽_用于相干激光雷达的大能量长脉宽单频激光器 | COL
  2. HTML5 移动页面自适应手机屏幕四类方法
  3. WebP 大战 JPEG,谁才是真正的王者?
  4. UVA - 512 ​​​​​​​Spreadsheet Tracking
  5. SQL Server表竖列转横向显示
  6. 如何插入? | 非开车,纯技术交流
  7. python 监控linux硬盘,Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例...
  8. Derby安装使用说明
  9. 入门深度学习,理解神经网络、反向传播算法是第一关
  10. CCF NOI1034 钞票兑换
  11. 支持断点续传的大文件传输协议
  12. Syntax error on token?excepted agter this token
  13. 【3D动态脑图制作软件】万彩脑图大师教程 | 将思维导图输出到云服务
  14. 吞食天地2蜀汉英雄传1.5版图文攻略
  15. 央行降息后六大城市房价有望反弹(名单)
  16. 计算机学院 名言,计算机系网络毕业名言
  17. 技术工坊|腾讯华为入局的区块链BaaS平台解决了什么问题?(上海)
  18. css3常用语言-动画
  19. C/C++在线餐馆预订管理系统
  20. Java中常见的单词

热门文章

  1. 签名build apk: Could not resolve all files for configuration ':app:lintClassPath' 问题
  2. 最优化理论与方法(part8)--凸集的分离和支撑
  3. Django(part5)--url匹配优先级
  4. 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
  5. 统计学 计算机论文,统计学课程论文范文
  6. maple 假设_Maple常用计算命令..
  7. 如何在 SAP 电商云 Spartacus 代码里获取 Routes 路由信息
  8. SAP Spartacus 用户认证的实现
  9. SAP Spartacus B2B table的配置信息从哪里来?
  10. Angular refreshView的执行原理