По поводу кода замечаний много.
Вообще советую посмотреть на это:
http://www.python.org/dev/peps/pep-0008/ и стараться его придерживаться. Без фанатизма, но стараться. В этом вам поможет pylint, pychecker и прочие тулзы для проверки стиля кода. Настоятельно рекомендую попользоваться. Я лично пользуюсь pylint чаще, но это дело вкуса.
Общие замечания при беглом взгляде на код:
Helper:
- не советую делать logger глобальной переменной. Они вообще зло, а в данном конкретном случае еще и неоправданное. Передайте его в функцию как параметр - будет гораздо красивше.
- WARNING_PATTERN используется только в классе Helper, так и внесите его туда, зачем делать это глобальной переменной, сделайте переменной класса.И не нужно его компилировать каждый раз, когда зовете runCheckstyle, он от этого лучше не станет. Либо зовите findall просто, без компиляции, либо скомпилируйте где-нибудь отдельно и потом юзайте.
- Зачем в Helper свой логгер? Передайте тот, который у вас уже есть ему в __init__. Даже если ему нужен будет другой, то такое решение гораздо лучше, чем дублировать один и тот же код в 2х местах.
- Вместо cleanDir попользуйте shutils.rmtree
- Не вижу где у вас используется formatDirPath и мне оно не нравится. Посмотрите на os.path.normath, его можно использовать. Он не добавит, а уберет последний слэш, но вам же просто отнормализовать надо, без особой разницы как.
- Вы используете соединение по сети через localhost. По-моему можно обойтись file://, у вас же репозиторий локальный, скрипт же на сервере запускается.
main:
- то же, что и раньше: s = re.compile(CHECKSTYLE_PATTERN).search(logMsg) не нужно. Компиляция нужна для ускорения работы при многократном использовании, чтобы не компилить каждый раз. В данном случае s = re.search(CHECKSTYLE_PATTERN, logMsg) абсолютно равнозначно, но выглядит короче и понятнее.
- if s != None выглядит не pythonic. Лучше написать if not s
- sys.exit(0) внутри функции main юзать нехорошо. Верните 0, наверху и произойдет sys.exit с ним
- if not os.path.exists(CHECK_DIR):
os.makedirs(CHECK_DIR)
helper.cleanDir(CHECK_DIR)
Лучше записать так:
if not os.path.exists(CHECK_DIR):
os.makedirs(CHECK_DIR)
else:
helper.cleanDir(CHECK_DIR)
Нет лишнего вызова, да и понятнее.
- content = trans.cat(path) - переменная content используется один раз. Ну и напишите f.write(trans.cat(path)), зачем это лишнее присваивание?
- манипуляции со списками modifiled, added и all_changes я не осознал. added не используется нигде, кроме как в подсчете количества элементов в нем. Вместо списка вполне хватит переменной-счетчика. А вот с modified происходит вторая проверка, уже после проверки всех all_changes и это непонятно. Там бы не помешал объясняющий логику программы коментарий.
Ну, наверное хватит пока. Исправите - приходите еще :)
И напоследок. Это конечно дело вкуса, но такие длинные имена функций по-моему захламляют код. Лучше сделать короткое имя и написать толковый docstring..
-