标签: pyflakes

PyLint,PyChecker还是PyFlakes?

我想获得一些关于这些工具的反馈:

  • 特征;
  • 适应性;
  • 易用性和学习曲线.

python pep8 pylint pychecker pyflakes

381
推荐指数
2
解决办法
12万
查看次数

我怎么让Pyflakes忽略一个陈述?

我们的许多模块都以:

try:
    import json
except ImportError:
    from django.utils import simplejson as json  # Python 2.4 fallback.
Run Code Online (Sandbox Code Playgroud)

......这是整个文件中唯一的Pyflakes警告:

foo/bar.py:14: redefinition of unused 'json' from line 12
Run Code Online (Sandbox Code Playgroud)

我怎么能让Pyflakes忽略这个?

(一般情况下我会去阅读的文档,但链接已断开.如果没有人有答案,我只是读取源.)

python pyflakes

132
推荐指数
6
解决办法
5万
查看次数

如何使用pyflakes和pylint检查代码使用Emacs Flymake模式进行python?

为了检查python模式中的代码,我使用flymake和pyflakes

另外我想用pylint检查代码样式(pep8)(与pyflakes在同一页面上的描述)

此解决方案有效.但我无法配置flymake与pyflakes和pylint一起工作.我该怎么做?

python emacs pep8 pylint pyflakes

22
推荐指数
2
解决办法
1万
查看次数

使用flymake和emacs中的tramp远程运行pyflakes?

我正在尝试使用flymake运行pyflakes,如此处所示

这适用于本地文件,并且几乎可以通过稍微调整来处理远程文件,但是我遇到了一个问题,即flymake/pyflakes'在运行时修改了缓冲区(尽管实际上似乎没有任何变化),这会呈现它在实践中有点无用(例如,保存文件运行flymake,它会立即再次修改缓冲区).

这就是我几乎让它工作的方法:

  1. 远程盒子上安装了pyflakes.
  2. 自定义我的tramp-remote-process-environment变量,以便可以在其PATH中找到pyflakes
  3. 使用了上面wiki链接中代码的变体.显然我排除了为远程缓冲区禁用它的检查.此外,该(when (load "flymake" t) ...)构造似乎没有像我预期的那样工作,但我并不太担心.
  4. 重新定义(出于测试目的 - 建议应该没有问题,如果这可以工作)flymake-start-syntax-check-process函数,以便它使用start-file-process(与tramp一起使用)而不是start-process(没有).

处理本地文件时#4中的更改似乎不会导致任何问题,但现在这使得flymake能够为远程文件运行远程pyflakes(错误会按预期突出显示),在这种情况下缓冲区被"修改"每当flymake运行时.

我猜测start-file-process,对于远程进程,会导致本地进程不会发生一些额外的返回值/数据.

有没有人有任何见解/建议?

  • 关于Ubuntu的Emacs 23.1和23.2
  • Python 2.4.6
  • Pyflakes 0.4.0(通过easy_install)

python emacs tramp flymake pyflakes

17
推荐指数
2
解决办法
1640
查看次数

vim-flake8不能正常工作

我像往常一样通过git克隆它在我的Pathogen bundle文件夹上安装了vim-flake8,但是当我尝试在一个Python文件中按下F7或使用插件时:call Flake8(),我收到以下消息:

处理函数Flake8时检测到错误:

第8行:

找不到文件flake8.请先安装它.

任何人都有一些关于发生了什么的线索?

python vim pyflakes flake8

15
推荐指数
2
解决办法
7917
查看次数

排除目录

我正在研究一个django项目,我正试图在其中的应用程序上运行pyflakes.我需要从pyflakes中排除"迁移"目录.

对于pep8我能做到

pep8 --exclude=migrations app_name
Run Code Online (Sandbox Code Playgroud)

pyflakes有类似的方法吗?

我找不到任何适合pyflakes的文档.

python django static-analysis pyflakes

14
推荐指数
2
解决办法
8319
查看次数

修复pyflakes处理@property setter装饰器

Pyflakes与以下代码的处理不太合理:

@property
def nodes(self):
    return self._nodes

@nodes.setter
def nodes(self, nodes):
    """
    set the nodes on this object.
    """
    assert nodes != []  # without nodes no route..

    self.node_names = [node.name for node in nodes]
    self._nodes = nodes
Run Code Online (Sandbox Code Playgroud)

使用使用pyflakes的vim和syntastic我得到以下错误:

    W806 redefinition of function 'nodes' from line 5
Run Code Online (Sandbox Code Playgroud)

所以我收到警告,@nodes.setter因为我重新定义了nodes.

如何禁用此无用警告,因为此代码是正确的?或者哪个python检查器正确处理此代码?

更新

我在重构代码时遇到了一些问题,因为属性和函数具有不同的继承行为.访问基类的属性是不同的.看到:

所以我现在倾向于避免使用这种语法并使用适当的函数.

python properties decorator pyflakes python-decorators

11
推荐指数
2
解决办法
955
查看次数

我将如何开始与Hudson集成pyflakes

我们使用Hudson与Violations插件持续集成,后者从pylint解析我们的输出.但是,pylint有点过于严格,而且很难配置.我们宁愿使用的是pyflakes,它会给我们正确的"你做错了".

python continuous-integration hudson pylint pyflakes

8
推荐指数
1
解决办法
1761
查看次数

当gettext安装_时,如何避免flake8的"F821未定义名称'_'"?

问题概述:

在我的项目的主脚本中,gettext安装_()在其他模块中用于翻译的函数(如in print(_('Something to translate'))).

正如文件所述:

_()函数[是]安装在Python的内置命名空间中,因此可以在应用程序的所有模块中轻松访问它.

所以,一切都运行良好.

唯一的问题:flake8显示错误(实际上由PyFlakes返回):

$ flake8 *.py
lib.py:2:12: F821 undefined name '_'
main_script.py:8:7: F821 undefined name '_'
Run Code Online (Sandbox Code Playgroud)

这是正常的,因为_在main_script.py和lib.py中确实没有定义.

简单的结构,重现问题:

.
??? lib.py
??? locale
?   ??? de
?       ??? LC_MESSAGES
?           ??? myapp.mo
?           ??? myapp.po
??? main_script.py
Run Code Online (Sandbox Code Playgroud)

lib.py包含这个:

def fct(sentence):
    return _(sentence)
Run Code Online (Sandbox Code Playgroud)

和main_script.py这个:

#!/usr/bin/env python3

import gettext

import lib

gettext.translation('myapp', 'locale', ['de']).install()
print(_('A sentence'))
print(lib.fct('A sentence'))
Run Code Online (Sandbox Code Playgroud)

和myapp.po包含:

msgid ""
msgstr ""
"Project-Id-Version: …
Run Code Online (Sandbox Code Playgroud)

python gettext python-3.x pyflakes flake8

8
推荐指数
1
解决办法
6202
查看次数

Python flake8 py 错误地报告 W391(文件末尾没有换行符)

W391 规定文件末尾应该有一个(且只有一个)空行。然而,当文件末尾至少有一个换行符时,flake8 会报告错误:

$ cat /tmp/test.py
def hello():
    print('hello')


hello()


Run Code Online (Sandbox Code Playgroud)
$ hexdump -C /tmp/test.py
00000000  64 65 66 20 68 65 6c 6c  6f 28 29 3a 0a 20 20 20  |def hello():.   |
00000010  20 70 72 69 6e 74 28 27  68 65 6c 6c 6f 27 29 0a  | print('hello').|
00000020  0a 0a 68 65 6c 6c 6f 28  29 0a 0a                 |..hello()..|
0000002b
Run Code Online (Sandbox Code Playgroud)

您可以在上面看到,文件末尾实际上只有一个空行(0a is \n)。但是,当我运行 flake8 时,出现 W391 错误:

$ flake8 /tmp/test.py
/tmp/test.py:6:1: …
Run Code Online (Sandbox Code Playgroud)

python lint pep8 pyflakes flake8

8
推荐指数
1
解决办法
8636
查看次数