如何控制python / Django / Celery代码质量

时间:2013-04-29 05:54:38

标签: python pylint pychecker

我正在领导一个大型python项目,它使用Django(模型),芹菜,python。现在,我发现代码质量已经失控。 问题是:

  1. 提交给git的代码有一些基本的程序员错误(它必须由测试覆盖)
  2. Sever人员将代码提交给一个分支机构。 (我们使用git flow,它需要经常合并)
  3. 对于问题1,我在考虑使用Pylint,但我们的项目很大,并且有很多依赖(Django,Celery)。

    pylint可以很好地运作吗?我只是尝试了一个pylint,似乎它会报告一些误导性错误,例如django.objects不存在。那么,为项目进行质量控制的最佳做法是什么?

    对于问题2,我不知道如何改进它?

2 个答案:

答案 0 :(得分:0)

我不熟悉其他python代码检查器,但我可以告诉你我使用Pylint和一个小型Django项目的经验。

它会产生很多错误。似乎存在权衡过多的错误错误与可能缺少这些类别中的合法错误的权衡。我在经过测试的代码上使用它。运行,所以现在我已将其配置为忽略大多数类别。

这是我目前的.pylintrc设置

如果您想要检查导入是否有效

,请在路径中添加内容
[MASTER]

init-hook='import sys; sys.path.append("...your directories...")

我的自由主义者忽略了经常给出误报的错误信息。

[MESSAGES CONTROL]

# E1002: use of super on old style class
# E1101: __ has no __ member
# E1103: maybe no member
# F0401: couldn't import
# R0924: badly implemented container (false pos on forms.Form subclassers)
# W0232: class has no __init__ (when inheriting)
# W0613: unused-argument (functions that are supposed to always take request/obj)
disable=E1002,E1101,E1103,F0401,R0903,R0924,W0232,W0613

如果要启用该检查,请添加一些自动成员以避免使用某些常见的E1101

[TYPECHECK]

generated-members=REQUEST,acl_users,aq_parent,objects,_meta,id,pk

希望Django + Pylint有所帮助。

答案 1 :(得分:0)

如果您愿意使用SaaS解决方案,请随时查看QuantifiedCode(https://www.quantifiedcode.com)。

这是一个用于自动化,连续代码审查和智能的在线工具,对于开源项目完全免费。它具有Github集成,并提供大量可自定义的代码检查(例如针对Django的通用和库特定检查),以及项目的度量标准(披露:我是CTO)。

我们的代码检查器也是开源的,可以在Github上找到:

https://github.com/quantifiedcode/checkmate

您也应该查看类似的工具,例如: Landscape(www.landscape.io),CodeClimate(www.codeclimate.com),Codacy(www.codacy.com)或SonarSource(www.sonarsource.com - 自托管解决方案)。其中大多数也为开源项目提供免费套餐。