我有一个跨多个项目的大型源存储库。我想制作一份有关源代码健康状况的报告,确定需要解决的问题领域。

具体来说,我想调用具有高圈复杂度的例程,识别重复,并且可能运行一些类似 lint 的静态分析来发现可疑(因此可能是错误的)构造。

我该如何着手构建这样的报告?

有帮助吗?

解决方案

为了测量圈复杂度,有一个很好的工具可以使用 追踪网站. 。该页面还很好地概述了如何解释结果。

+1 为 皮林特. 。它非常适合验证对编码标准的遵守情况(无论是 PEP8 或您自己组织的变体),这最终有助于降低圈复杂度。

其他提示

对于圈复杂度,您可以使用 radon: https://github.com/rubik/radon

(使用 pip 安装它: pip install radon)

此外它还具有以下特点:

  • 原始指标(包括 SLOC、注释行、空白行等)
  • 霍尔斯特德指标(全部)
  • 可维护性指数(Visual Studio 中使用的)

对于静态分析有 皮林特py检查器. 。我个人使用 pylint,因为它似乎比 pychecker 更全面。

对于圈复杂度你可以尝试 这个 Perl 程序, , 或这个 文章 其中引入了一个 python 程序来执行相同的操作

当您需要了解一个新项目时,Pycana 非常有用!

皮卡纳 (Python Code Analyzer)是Python简单代码分析仪的奇特名称,该名称在执行代码后创建类图。

看看它怎么运作:http://pycana.sourceforge.net/

输出:

替代文本 http://pycana.sourceforge.net/relations.png

谢谢 派德夫, , 你可以 集成木柱 在里面 Eclipse集成开发环境 真的很容易,每次保存修改的文件时都会获得一份代码报告。

使用 薄片8, ,它在一个工具中提供了 pep8、pyflakes 和圈复杂度分析

有一个工具叫克隆挖掘者 这可以帮助您找到类似的代码片段。

为了检查圈复杂度,当然有 mccabe 包裹。

安装:

$ pip install --upgrade mccabe

用法:

$ python -m mccabe --min=6 path/to/myfile.py

请注意上面的阈值 6。每 这个答案, ,分数 >5 可能应该简化。

输出示例 --min=3:

68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3

它也可以选择通过以下方式使用 皮林特·麦卡布 或者 pytest-mccabe, , ETC。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top