мы используем pep8
цели в Makefile нашего Repo, чтобы проверить PEP8 соответствие на всех файлах питон:Makefile проверяет pep8 только мерзавец дифференциалы
## Check all python files for compatibility with PEP8
PEP8FLAGS := --ignore=E201,E202,E241,E265,E501,E711,E712,E713,E714,E721,W391,W291,W293,W601,W603
pep8:
pep8 $(PEP8FLAGS) .
Я хотел бы иметь такую же pep8-changes
цели, которая проверяет только против файлы Python изменились выдвижными запросов:
DIFF_FILES := (git diff --name-only --diff-filter=ACMR ; \ # ACMR: added/copied/modified/renamed
git diff --staged --name-only --diff-filter=ACMR ; \
git diff --name-only --diff-filter=ACMR upstream/master...) \
| sort | uniq | grep -e "\.py$$" | grep -v '__init__.py'
## Check all diff python files for compatibility with PEP8
pep8-changes:
pep8 $(PEP8FLAGS) --filename $(DIFF_FILES)
Но я получаю следующее сообщение об ошибке:
pep8 --exclude=sandbox,thirdparty --ignore=E201,E202,E241,E265,E501,E711,E712,E713,E714,E721,W391,W291,W293,W601,W603 --filename (git diff --name-only --diff-filter=ACMR ; \
/bin/sh: -c: line 0: syntax error near unexpected token `('
Я не нахожу много помощи в pep8 docs; Я не думаю, что флаг --diff
- это то, что я ищу здесь. Любая помощь приветствуется!
Вы не упомянули, какой конкретный вариант «make» вы используете, но если он является GNU make или совместимым, вы либо хотите «var! = Command», либо «var: = $ (команда оболочки). В вашей настройке также есть несколько других потенциальных проблем, в зависимости от того, что вы пытаетесь выполнить здесь. В частности, если вы хотите сделать это, прежде чем совершать фиксацию, остерегайтесь различий между тем, что находится в * index * и том, что находится в * дереве работы *. – torek
@torek это будет GNU make. И, более конкретно, 'make pep8-changes' - это команда, выполняемая Jenkins при каждом нажатии, поэтому разница между нажатой ветвью и восходящим/ведущим. – BoltzmannBrain
ОК - в этом случае нет смысла ни в git diff (index vs work-tree), ни в 'git diff --staged' (' HEAD' vs index). Отбрасывая эти два средства, нет необходимости в 'uniq', что упрощает все. Вероятно, разумно избегать состояний файла 'C' и' R' (которые генерируют два имени файла, а не только один), используя 'git diff-tree -r', хотя это исключает удобный трехточечный синтаксис' ... ' для поиска баз слияния, но также маловероятно, что вы * хотите * найти базу слияния здесь. – torek