当我在TextMate中的python文件上运行验证语法时,我试图让pylint提供html输出。我安装了pycheckmate,pylint,并在$HOME中创建了一个$HOME文件,该文件将输出格式设置为html。
在TextMate的高级控制面板中,在Shell变量选项卡中,我将TM_PYCHECKER设置为/usr/local/share/python/pylint。如果触发验证语法,它将使用所有默认选项运行pylint,并给出输出。如果我将TM_PYCHECKER更改为/usr/local/share/python/pylint --rcfile "$HOME/.pylintrc"并再次验证语法,我将得到:
请安装PyChecker、PyFlakes或Pylint以进行更广泛的代码检查。
如果我从命令行运行/usr/local/share/python/pylint,没有任何参数,输出就是html,因此我知道它正在读取rcfile。我遗漏了什么?
发布于 2012-05-31 23:34:42
好的,我想我发现了这个问题: pycheckmate将--output-format=parseable'设置为一个强制参数,以使pylint成为pylint。通过将/usr/local/share/python/pylint替换为输出其参数的包装脚本,我发现了这一点:
#!/usr/bin/env python
import sys
from pylint import lint
print sys.argv[1:]
lint.Run(sys.argv[1:])当我在TextMate上运行它时,我看到了这个:
['--output-format=parseable', '/Users/smithm5/test.py']
test.py:26 [C] Line too long (90/80)
…因此,我深入研究了/Applications/TextMate.app/Contents/SharedSupport/Bundles/Python.tmbundle/Support/bin/pycheckmate.py本身。当然,它添加了这个参数,以及大量硬编码的html。因此,为了解决这个问题,我删除了所有的escape()包装器,在第287行设置了opts = (),这样我就可以设置自己的darn选项,并将第332行更改为print line。
发布于 2012-05-31 17:25:10
一个有一定基础的猜测:尝试将$HOME替换为指向主目录的绝对路径。像$HOME这样的Shell变量可能无法在TextMate的控制面板中使用。
更新:查看我拥有的pycheckmate.py版本中包含的Python.tmbundle脚本,似乎不可能包含参数,比如--rcfile /path/to/rcfile。TM_PYCHECKER的值应该仅是不带参数的检查器二进制文件的路径。但是,如果您自己制作了Python.tmbundle的副本,那么您应该能够编辑pycheckmate.py来做您想做的事情。
https://stackoverflow.com/questions/10836517
复制相似问题