go圈复杂度工具gocyclo

问题提出:

1、概念:什么是圈复杂度,有什么影响;
2、工具:需要有工具定期扫描,谁负责管理;
3、标准:统一代码标准;
4、整改:如何整改,可落地执行的方案;
5、培训:需要对开发团队全员培训,工具可能后面要交由运维进行管理维护,

需要对运维人员进行工具使用的培训。

名词解释

圈复杂度简介

圈复杂度(Cyclomatic complexity)是一种衡量代码复杂度的标准,由托马斯·J·麦凯布(Thomas J. McCabe, Sr.)于1976年提出,用来表示程序的复杂度,符号为v(G)。它用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径条数,也可表示为覆盖软件所有的可能情况最少使用的测试用例数。圈复杂度越高说明程序的判断逻辑越复杂,可能致使程序质量低且难于测试和维护。程序的缺陷和高圈复杂度有着很大关系,圈复杂度最高的模块,其缺陷个数也可能最多。McCabe将圈复杂度限制为10。圈复杂度可应用在程序的子程序、模块、方法或类中。

 圈复杂度标准

对复杂度基本可以分为以下几个级别:

  • 1 - 10 程序简单,风险小
  • 11 - 20 更复杂,中等风险
  • 21 - 50 复杂、高风险
  • 50 不可测试的代码,非常高的风险

安装开源工具

go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
rem gocyclo -top 5 .\core

开源集成工具:

gomini: gominigomini

安装goinstall.bat

af8dda27900d408aaafaa62733f642e6.png

执行检查

gomini cc默认项目根目录再分子目录

gomini ccfile指定文件

gomini ccall默认根目录或指定

gocyclo -top 10 D:\go-ichub\go\gomini/cmd > D:\go-ichub\go\gomini/data/cc/cmd-cc-report.txt
gocyclo -top 10 D:\go-ichub\go\gomini/mini > D:\go-ichub\go\gomini/data/cc/mini-cc-report.txt
gocyclo -top 10 D:\go-ichub\go\gomini/test > D:\go-ichub\go\gomini/data/cc/test-cc-report.txt
gocyclo -top 10 D:\go-ichub\go\gomini/websample > D:\go-ichub\go\gomini/data/cc/websample-cc-report.txt

检查结果

1f4251466a114f9092f8068a5619b693.png

55 metadb (*MetadataRecords).PtrField2Value D:\go-ichub\go\gomini\mini\meta\db\metadb\metadata_records.go:152:1
31 metadb (*MetadataRecords).CheckType D:\go-ichub\go\gomini\mini\meta\db\metadb\metadata_records.go:81:1
16 metadb MakeIchubField D:\go-ichub\go\gomini\mini\meta\db\metadb\metadata_field.go:37:1
15 page (*PageRequest).BuildWhere D:\go-ichub\go\gomini\mini\general\query\page\page_request.go:246:1
14 metafactroy (*FactroyPostgres).FindColumns D:\go-ichub\go\gomini\mini\meta\db\metafactroy\factroy_postgres.go:530:1
12 goast (*DimetaFactroy).Parse D:\go-ichub\go\gomini\mini\meta\goast\dimeta_factroy.go:404:1
12 metadb (*MetadataColumn).ReturnValue D:\go-ichub\go\gomini\mini\meta\db\metadb\metadata_column.go:54:1
10 metafactroy (*FactroyPostgres).makeModelParamsGo D:\go-ichub\go\gomini\mini\meta\db\metafactroy\factroy_postgres.go:298:1
10 metafactroy (*FactroyPostgres).makeModelDtoGo D:\go-ichub\go\gomini\mini\meta\db\metafactroy\factroy_postgres.go:255:1
10 metafactroy (*FactroyPostgres).makeModelBodyGo D:\go-ichub\go\gomini\mini\meta\db\metafactroy\factroy_postgres.go:214:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值