如何分析Python代码以确定问题区域?

如何分析Python代码以确定问题区域?,python,static-analysis,cyclomatic-complexity,Python,Static Analysis,Cyclomatic Complexity,我有一个跨多个项目的大型源存储库。我想制作一份关于源代码健康状况的报告,确定需要解决的问题领域 具体地说,我想调用具有高度圈复杂度的例程,识别重复,并可能运行一些类似lint的静态分析来发现可疑(因此可能是错误的)构造 我该如何构建这样一个报告呢?对于静态分析,有和。就我个人而言,我使用pylint,因为它似乎比pychecker更全面 对于圈复杂度,您可以尝试,或者这引入了一个python程序来做同样的事情,因为,您可以非常轻松地在保存修改后的文件时获得代码报告。对于度量圈复杂度,有一个很好的

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

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


我该如何构建这样一个报告呢?

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


对于圈复杂度,您可以尝试,或者这引入了一个python程序来做同样的事情,因为,您可以非常轻松地在保存修改后的文件时获得代码报告。

对于度量圈复杂度,有一个很好的工具可供使用。该页面还提供了如何解释结果的良好概述

+1美元。它在验证是否遵守编码标准(无论是它还是您自己的组织的变体)方面非常有用,这最终有助于降低圈复杂度。

有一种工具称为
这有助于您找到类似的代码片段。

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

(Python代码分析器)是 简单代码的别致名称 用于创建 在执行 代码

看看它是如何工作的:

输出:


对于圈复杂度,可以使用
radon

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

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

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

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

用于检查圈复杂度,当然还有包

安装:

$ pip install --upgrade mccabe
用法:

$ python -m mccabe --min=6 path/to/myfile.py
注意上面的阈值6。Per,分数>5可能应该简化

带有
--min=3的样本输出:

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

也可以通过或等方式使用它。

获取Halstead metrics的开关是什么?@qarma如果我理解文档,我认为您不能使用命令行。您必须使用pythonapi.traceback.org,因为linkPylint很好,但速度很慢。我们使用预推钩子,但使用flake8和一堆插件进行定期检查和预提交钩子。实际上,我推荐
https://flakehell.readthedocs.io/config.html
但现在,由于它的执行模型更加健壮和可配置,它不能与Python 3一起工作,也从未得到很好的维护。