Pychecker
Одним из наиболее интересных инструментов для анализа исходного кода Python программы является Pychecker. Как и lint для языка C, Pychecker позволяет выявлять слабости в исходном коде на языке Python. Можно рассмотреть следующий пример с использованием Pychecker:
import re, string import re a = "a b c"
def test(x, y): from string import split a = "x y z" print split(a) + x
test(['d'], 'e')
Pychecker выдаст следующие предупреждения:
badcode.py:1: Imported module (string) not used badcode.py:2: Imported module (re) not used badcode.py:2: Module (re) re-imported badcode.py:5: Parameter (y) not used badcode.py:6: Using import and from ... import for (string) badcode.py:7: Local variable (a) shadows global defined on line 3 badcode.py:8: Local variable (a) shadows global defined on line 3
В первой строке импортирован модуль, который далее не применяется, то же самое с модулем re. Кроме того, модуль re импортирован повторно. Другие проблемы с кодом: параметр y не использован; модуль string применен как в операторе import, так и во from-import; локальная переменная a затеняет глобальную, которая определена в третьей строке.
Можно переписать этот пример так, чтобы Pychecker выдавал меньше предупреждений:
import string a = "a b c"
def test(x, y): a1 = "x y z" print string.split(a1) + x
test(['d'], 'e')
Теперь имеется лишь одно предупреждение:
goodcode.py:4: Parameter (y) not used
Такое тоже бывает. Программист должен лишь убедиться, что он не сделал ошибки.