我有一个相对较大的Python项目,我们没有任何圈复杂度工具作为自动化测试和部署过程的一部分。
圈复杂度工具在 Python 中有多重要?您或您的项目是否使用它们并发现它们有效?如果有人有一个很好的前后故事,我想要一个不错的前后故事,这样我们就可以从答案中去除一些主观性(即在我们也没有 cyclo-comp 工具之前,在我们引入它之后,好事 A 发生了,坏事 B 发生了,等等)。这类问题还有很多其他的一般答案,但我没有找到一个特别针对 Python 项目的答案。
我最终试图决定是否值得我将其添加到我们的流程中,以及哪种特定指标和工具/库最适合大型 Python 项目。我们的主要目标之一是长期维护。
我们在与测试自动化相关的一个项目中使用了 RADON 工具。
氡
根据新功能和要求,我们需要在该项目中添加/修改/更新/删除代码。此外,几乎有 4-5 人正在为此工作。因此,作为审查过程的一部分,我们确定并使用了RADON工具,因为我们希望我们的代码可维护和可读。
依靠 RADON 工具输出,我们多次重构代码,添加更多方法并修改循环。
如果这对您有用,请告诉我。
圈复杂度方面并不特别。 CC 测量代码块中有多少分支逻辑。
经验表明,当分支"高"时,该代码比分支较低的代码更难理解和可靠地更改。
对于指标,通常重要的不是绝对值;而是组织所经历的相对值。 你应该做的是测量各种指标(CC是其中之一),并在曲线中寻找一个膝盖,将该指标与代码中的错误联系起来。 一旦你知道膝盖在哪里,请编码人员编写复杂度低于膝盖的模块。 这是与长期维护的联系。
你无法衡量的,你无法控制。
wemake-python-styleguide
支持圈复杂性的radon
和mccabe
实现。
不同的复杂度指标不仅在圈复杂度中涵盖,包括:
- 功能装饰器数量;越低越好
- 参数数量;越低越好
- 批注数量;越高越好
- 局部变量数;越低越好
- 回报数、收益率等待;越低越好
- 语句和表达式的数量;越低越好
阅读更多关于为什么服从它们很重要的信息:https://sobolevn.me/2019/10/complexity-waterfall
他们都被wemake-python-styleguide
覆盖。回购:https://github.com/wemake-services/wemake-python-styleguide文档:https://wemake-python-stylegui.de
您也可以使用McCabe图书馆。它只计算McCabe的复杂性,并且可以集成到您的薄片8短绒中。