我有一个跨多个项目的大型源存储库。我想编写一份关于源代码健康状况的报告,找出需要解决的问题领域。
具体来说,我想调用具有高圈复杂度的例程,识别重复,并且可能运行一些类似lint的静态分析来发现可疑的(因而可能是错误的)构造。
我如何构建这样的报告?
答案 0 :(得分:36)
为了测量圈复杂度,traceback.org提供了一个很好的工具。该页面还概述了如何解释结果。
答案 1 :(得分:28)
对于圈复杂度,您可以使用radon
:https://github.com/rubik/radon
(使用pip
进行安装:pip install radon
)
此外,它还具有以下功能:
答案 2 :(得分:18)
对于静态分析,有pylint和pychecker。我个人使用pylint,因为它似乎比pychecker更全面。
对于圈复杂度,你可以尝试this perl program,或者这个article引入一个python程序来做同样的事情
答案 3 :(得分:11)
当您需要了解新项目时,Pycana就像魅力一样!
PyCAna(Python代码分析器)是 一个简单代码的奇特名称 python的分析器创建一个 执行你的后的类图 代码。
了解它的工作原理: http://pycana.sourceforge.net/
输出:
答案 4 :(得分:6)
感谢Pydev,您可以非常轻松地integrate pylint Eclipse IDE,并在每次保存修改后的文件时获取代码报告。
答案 5 :(得分:5)
使用flake8,在一个工具中提供pep8,pyflakes和圈复杂度分析
答案 6 :(得分:4)
有一个名为的工具 CloneDigger可帮助您找到类似的代码段。
答案 7 :(得分:3)
为了检查圈复杂度,当然有mccabe
包。
安装:
$ pip install --upgrade mccabe
用法:
$ python -m mccabe --min=6 path/to/myfile.py
注意上面的阈值为6。根据{{3}},分数> 5可能应该简化。
--min=3
的示例输出:
68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3
也可以选择通过this answer或pylint-mccabe等方式使用