2013-07-12 60 views
1

到目前为止Python编程中最令人沮丧的事情之一是缺乏某种“预分析”。例如,在Java中,在实际编译程序之前执行预分析,在该程序中检查诸如姓名使用之类的事情。换句话说,如果我在一个区域中调用变量list_one,并且说我在另一个区域将它拼错为list_on,Java会说“嘿,你不能这样做,我不知道list_on是什么。”有没有办法预先命名冲突的Python程序?

Python似乎没有这样做,这是非常令人沮丧的!我有一个程序,大约需要15分钟跑,而我是最后一件事14.5分钟,看进去是像

NameError: name 'list_on' is not defined

难道他们的任何可用的工具都可以在那里可以进行这种在解释器实际运行程序之前检查?如果没有,有什么办法解决这个问题?

+4

试过'pylint'? – geoffspear

+1

这不是一个“预分析”。这是*编译*! Java在编译时解析绑定,而python在运行时执行。在python中,你可以在运行时创建变量,因此它*不可* *可靠*在给定的程序中的特定时间点判断给定的变量是否存在。像'pylint'这样的工具可以在大多数情况下工作,但在更复杂的情况下可能会失败(尤其是在高度动态的代码中)。按照他们的方式:你应该进行单元测试,即测试代码的单个*部分*(这将在不到15分钟的时间内显示这个错误)。 – Bakuriu

+0

[有没有用于Python的静态分析工具?](http://stackoverflow.com/questions/35470/are-there-any-static-analysis-tools-for-python) – Bakuriu

回答

2

你有没有考虑用类似pyflakespylint的东西来检查你的代码?

0

UPDATE

我发现了一个奇妙的解决了这个问题对于那些碰巧是emacs用户。您可以安装PyFlakes-Flymake。这是一个伟大的工具!它将对您的代码进行静态分析,并以红色突出显示故障区域。我建议使用PIP而不是建议的easy_install。除此之外,启动并运行起来非常简单。非常值得努力!

相关问题