圈复杂度本质上就是——分支覆盖率达到100%需要的测试用例数
圈复杂度主要与分支语句(if、else、,switch 等)的个数成正相关。如下代码:
- public String case2(int index, String string) {
- String returnString = null;
- if (index < 0) {
- throw new IndexOutOfBoundsException("exception <0 ");
- }
- if (index == 1) {
- if (string.length() < 2) {
- return string;
- }
- returnString = "returnString1";
- } else if (index == 2) {
- if (string.length() < 5) {
- return string;
- }
- returnString = "returnString2";
- } else {
- throw new IndexOutOfBoundsException("exception >2 ");
- }
- return returnString;
- }
根据公式 V(G) = e – n + 2 = 12 – 8 + 2 = 6 。代码的圈复杂段为6。
只能记做一个在开发中常用的检测圈复杂度的工具,PMD,checkstyle ,sourcemonitor都可以检
测到高复杂度的代码块。在代码的开发中,配合各种圈复杂度的检测插件,将高复杂度的代码
进行适当的拆分、优化,可以大大提高代码整体的质量,减少潜在bug存在。
转载于:https://www.cnblogs.com/bonelee/p/11226816.html
圈复杂度本质上就是——分支覆盖率达到100%需要的测试用例数相关推荐
- 圈复杂度 (Cyclomatic Complexity)
概念 圈复杂度也称条件复杂度,是一种衡量代码复杂度的标准.它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可以理解为覆盖所有情况最少使用的测试用例数.圈复杂度大说明程序代码的 ...
- c语言圈复杂度switch,C语言switch/case圈复杂度优化重构
软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度 ...
- c语言圈复杂度switch,干货|C语言switch\/case圈复杂度优化重构
点击上方"中兴开发者社区",关注我们 每天读一篇一线开发者原创好文 ▍作者简介 作者陈彬是一名Linux驱动开发工程师,对Linux内核.软件设计和敏捷有较浓厚的兴趣和长期实践经验 ...
- 质量管理之代码的圈复杂度
首先,我们要知道,圈复杂度是什么? 圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 在软件测试的概念 ...
- php 函数圈复杂度,圈复杂度和McCabe
[书名]:软件架构--Python语言实现 [主题]:圈复杂度 [摘要]:圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施.它根据程序从开始到结束的线性独立路径 ...
- c语言枚举代替双switch,C语言 使用数组代替switch分支语句降低圈复杂度
#include typedef int(*CALCULATE_FUN)(int, int); //定义函数指针 typedef struct tagStruct { CALCULATE_FUN fu ...
- 程序复杂度之圈复杂度
圈复杂度(Cyclomatic complexity)也称为条件复杂度或循环复杂度,是一种软件度量,是由Thomas J. McCabe, Sr. 在 1976 年提出,用来表示程序的复杂度,其符号为 ...
- java 圈复杂度_详解圈复杂度
详解圈复杂度 圈复杂度概念 圈复杂度(Cyclomatic complexity,简写CC)也称为条件复杂度,是一种代码复杂度的衡量标准.由托马斯·J·麦凯布(Thomas J. McCabe, Sr ...
- 圈复杂度 Cyclomatic complexity 介绍
背景 代码的可测试性和可维护性是非常重要的,比如,下面的代码: 只是输出简单的"Hello, world", 大家都不会否认这个代码写得太复杂太难维护了.那么,有没有什么度量指标来 ...
最新文章
- 华为交换机端口组配置实例
- 重温.NET下Assembly的加载过程
- 入侵微博服务器刷流量,开发者获刑 5 年;马化腾重回中国首富;支持 M1 芯片,VS Code 1.54 发布 | 极客头条...
- 阿里、腾讯双双辟谣:云计算魅力彰显
- ZIP和RAR文件的不同
- 机器人主流编程语言盘点 及优缺点分析
- 计算机主机故障有哪些,电脑硬件常见故障有哪些
- 【C++】将小写阿拉伯数字转换为大写汉字数字(将数字用中文的方法读出来)
- 租用国内的云主机的话,选阿里云还是盛大云?
- Kinect的三维重建
- [附源码]Nodejs计算机毕业设计交通事故证据交易平台Express(程序+LW)
- Win10点击PowerShell显示找不到文件路径
- PostgreSQL隐藏列(兼容oracle)
- 分位数回归—R语言实现
- 一年级计算机课画画用什么,一年级学画画入门教程
- php手机网页在线录音ios,iOS 录音实现
- 黑苹果能安装mysql吗_黑苹果安装 篇一:小白的黑苹果之路:系统安装思路
- ChatGPT 革命性读书方法已被证明是一种非常有效和高效的学习和吸收新信息的方法
- Oracle安装后的初始化操作
- image居中、div嵌套div上下左右居中
热门文章
- python动态规划组合数最大_编写用动态规划法求组合数()的算法。
- Linux内核中的进程等待与其实现解析
- Selenium3自动化测试——13.下载文件功能
- 8g ubuntu 树莓派4b_树莓派4B(4G版本)安装Ubuntu 19.10
- github加速_使用Picgo+GitHub+ jsDelivr搭建CDN加速免费图床
- jdbc批量调用oracle存储过程,oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作...
- mysql命令行各个参数解释
- 字节跳动技术整理:mysql性能优化方案
- python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)
- 本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: