2013-07-12 1 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

Рассматривали ли вы проверку своего кода с чем-то вроде pyflakes или pylint?

0

UPDATE

Я нашел фантастическое решение этой проблемы для тех, кто, случается emacs пользователей. Вы можете установить PyFlakes-Flymake. Это отличный инструмент! Он будет выполнять статический анализ вашего кода «на лету» и выделять области проблем красным цветом. Я предлагаю использовать PIP вместо предложенного easy_install. Помимо этого, довольно просто запустить его и запустить. И хорошо стоит усилий!