使用代码度量提高代码质量
如果无法正常显示,请先停止浏览器的去广告插件。
1. 使用代码度量提高代码质量
邱化峰
饿了么
测试开发专家
2.
3.
4. 一 、度量指标-复杂度
圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe,
Sr. 提出。
在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性
无关的路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可
能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系
其他度量方法包括:所用的数据量、控制结构中的嵌套层数、代码行数、对同一变量的先后
引用之间的代码行数(跨度)、变量生存的代码行数(生存期),以及输入和输出的量
0-5: 子程序可能还不错
6-20: 得想办法简化子程序了
10+ 把子程序的某一部分拆分成另一个子程序并调用它。
5. 一 、度量指标-UML OO 内聚 和 耦合
1. 类内聚缺乏度
2. 耦合类数量
3. 直接子类数量
4. 类继承深度
5. 类封装度
6. 类扇出耦合度
6. 一 、度量指标-UML OO 内聚 和 耦合
1. C&K面向对象度量集,以支持向量机分析方法为数学工具,建立一种基于面向对象软件易
发性故障预测模型
2. W. Li and S. Henry Object-oriented metrics that predict maintainability
3. 布兰德 定义的高层次的面相对象的度量指标
4. 费尔南德斯定义的类内聚的指标SCOM
5. 达拉勒定义的路径连接的内聚指标PCCC
7. 一 、度量指标- COMPONENT
PSU-provided service component
RSU-required service component
IDC-interaction density of component
IIDC- incoming interaction density of component
OIDC- outgoing interaction density of component
PCUM- provided component utilization metrics
RCUM- required component utilization metrics
ICCM- interaction complexity of a component metrics
SICCM- sharing interaction complexity of component metrics
AICSCM- average interaction complexity of software component metrics
8. 一 、度量指标- COMPONENT
Munson & Khoshgoftaar extracted four factors: volume, control difficulty, modularity, and action
three metrics: control, system and volume
define the size of a code artifact: its number of lines (LOC), number of tokens (NOT), number of
statements (NOS), etc
the component of size might be described as: 0.4 · LOC + 0.7 · NOT + 0.6 · GZIP0.5 · NOS + 0.1 · MCC.
9. 二 、细化指标-思考
1) 控制流程对代码复杂度的影响 ,if 和for 是否拥有相同的复杂度
2) 条件表达式对代码复杂度的影响
• A)逻辑表达式个数对于复杂度的影响
• B)使用多个相互关联的表达式和使用单个组合的逻辑之间的复杂度的变化
• C) 单个表达式和嵌套表达式的相关复杂度
• D)否定表达式
3)编程风格对代码复杂的影响
10. 二 、细化指标-思考
个数越多越容易出错
组合的条件表达式可以转化为 嵌套的表达式,但嵌套的表达式会增加行数的计算
11. 三 、结论-复杂度
12. 三 、结论-复杂度
13. 三 、结论-链路的复杂度
14. 三 、结论-链路的复杂度
15. 三 、结论-链路的复杂度-缺陷预防
16. 三 、结论-基于Metric的统计结果
Metric 统计
1.Kendall rank correlation coefficient( 皮尔森 )
2.Correlation between the metrics
3.线性分布
4. 优先级
17. 三 、结论-基于Metric的统计结果
Metric 统计
1.Kendall rank correlation coefficient( 皮尔森 )
2.Correlation between the metrics
3.线性分布
4. 优先级
18. 欢迎关注msup微信公众账号
关注大会微信公共账号,及时了解大会动态、
日程及每日更新的案例!
关注公众号获得
更多案例实践