101

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

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

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

4

8 回答 8

36

对于测量圈复杂度, traceback.org上有一个不错的工具。该页面还很好地概述了如何解释结果。

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

于 2008-09-19T20:44:22.040 回答
29

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

pip用来安装它pip install radon:)

此外,它还具有以下功能:

  • 原始指标(包括 SLOC、注释行、空白行等)
  • Halstead 指标(全部)
  • 可维护性指数(Visual Studio 中使用的指数)
于 2013-02-10T01:47:31.273 回答
18

对于静态分析,有pylintpychecker。我个人使用 pylint,因为它似乎比 pychecker 更全面。

对于圈复杂度,你可以试试这个 perl 程序,或者这篇介绍了一个 python 程序的文章来做同样的事情。

于 2008-09-19T08:05:48.283 回答
11

当您需要了解一个新项目时,Pycana 就像魅力一样!

PyCANa(Python 代码分析器)是一个用于 python 的简单代码分析器的花哨名称,它在执行代码后创建一个类图。

看看它是如何工作的:http: //pycana.sourceforge.net/

输出:

替代文字

于 2010-05-09T20:50:34.383 回答
6

感谢Pydev,您可以非常轻松地将 pylint 集成Eclipse IDE中,并在每次保存修改后的文件时获取代码报告。

于 2008-09-19T09:19:57.637 回答
6

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

于 2014-03-26T01:08:02.707 回答
4

有一个名为 CloneDigger的工具可以帮助您找到类似的代码片段。

于 2009-02-22T09:57:22.757 回答
3

为了检查圈复杂度,当然有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

它也可以通过pylint-mccabepytest-mccabe等选择使用。

于 2016-10-08T22:11:25.287 回答