当我在Zope Filesystem目录视图文件上运行pyflakes时(就像在plone中发现的那样),它总是返回很多警告,我的参数和特殊值(如'context')没有被定义,如果它是一个真正的python脚本,但对于Filesystem Directory View脚本,它们由顶部的魔术注释定义,例如:
## Python Script "Name"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=foo, bar, baz
##
from AccessControl import getSecurityManager
user = getSecurityManager().getUser()
from Products.PythonScripts.standard import html_quote
request = container.REQUEST
RESPONSE = request.RESPONSE
return foo + bar + baz
这种python是否在除了Zope之外的任何地方使用过?
它是,还是可以由pyflakes,pylint或类似的工具支持?
答案 0 :(得分:2)
我刚试过的一种可能的方法是预处理zope fspython脚本,使其成为vaild。我曾经使用过几次调用sed(下面):
#!/bin/bash
sed "s/\(^[^#]\)/ \1/" $1 | \
sed "s/^##bind [a-z]*=\([a-z][a-z]*\)$/import \1/" | \
sed "s/^##parameters=\(.*\)/def foo(\1):/" | pyflakes
最好用包裹pyflakes的python脚本替换它,并且不会改变普通的python脚本。
答案 1 :(得分:1)
不,除了Zope之外,任何地方都没有使用过这种python,事实上现在几乎只在Plone中使用。 Plone社区正在逐渐远离它,因为它有许多缺点,这就是其中之一。
Pyflakes不是很容易配置,至少没有文件化的方式。可以将Pylint配置为跳过一些错误消息,但是您需要跳过的消息将是最有用的消息,因此这可能也没有帮助。
所以简短的回答是:不,你不能语法检查它们。另一方面,您不需要重新启动服务器来运行它们,因此语法检查不会为您节省那么多时间,这将与Zope世界中的其他Python代码一起使用。