как не забыть удалить отладочные строки в коде - PullRequest
6 голосов
/ 11 января 2012

Мне кажется, что это новая идея (поскольку я не нашел ни одного решения или кто-либо, кто его реализовал) ...

Сценарий оболочки, который автоматически запускается всякий раз, когда вы выполняете git commit иличто бы это ни было, вы узнаете, если вы забыли удалить какие-либо строки кода для отладки или разработки в вашем проекте.

Например:

Часто (в моих проектах Ruby)Я оставлю строки кода для вывода переменных типа

puts params.inspect 

или

raise params.inspect

Кроме того, иногда я буду использовать различные методы, чтобы я мог легко увидеть эффекты, такие как в случаяхкак использование delayed_job, где я предпочел бы вызвать метод без задержки во время разработки.

Проблема в том, что иногда я забываю изменить эти методы обратно или забываю удалить вызов, чтобы вызвать params.inspect, и я случайнонажмите этот код.

Так что я подумал, что, возможно, самым простым решением было бы добавить комментарий к любой такой строке отладки, такой как

raise params.inspect #debug

По сути, пометка thна линии как только разработка / отладочная линия.Затем в сценарии оболочки, который выполняется перед какой-либо другой командой, такой как git commit, он может использовать awk или grep для поиска во всех последних измененных файлах этого комментария #debug, а также для остановки выполнения и предупреждения.Однако я не очень разбираюсь в сценариях оболочки, поэтому подумал, что буду просить о помощи:)

Ответы [ 4 ]

7 голосов
/ 12 января 2012

Хотя я искренне рекомендую следовать советам cdeszaq'a и не рекомендую делать подобные вещи, довольно легко написать git hook, который не позволит вам фиксировать любые строки с определенной строкой. Для простоты я не показываю git rev-parse --verify HEAD, который вы должны использовать, чтобы этот хук работал на начальном коммите, но если вы просто поместите следующее в .git / hooks / pre-commit (и сделаете это исполняемый), вы не сможете зафиксировать какие-либо строки кода, содержащие строку «#debug»:

#!/bin/sh

if git diff-index -p -M --cached HEAD | grep '#debug' > /dev/null; then
  echo 'debug lines found in commit.  Aborting' >&2
  exit 1
fi
3 голосов
/ 12 января 2012

Вместо того, чтобы помнить о необходимости выполнять дополнительную работу (удаление строк кода), а только о том, чтобы больше работать позже, когда все снова сломается (повторное добавление этого кода), почему бы не включить разумную отладку? заявления с начала ?

Большинство языков имеют довольно выразительные и часто дешевые библиотеки журналов, которые позволят вам записывать различные уровни информации (ошибки, информация, отладка, трассировка) в различные места (файл, база данных). Многие из этих библиотек даже позволят вам настроить уровень ведения журнала для определенного фрагмента кода во время выполнения или даже во время работы программы .

Итак, вместо того, чтобы пытаться перебить грубую отладку, написав сценарий проблемы, почему бы не сделать это самостоятельно, и остальному миру, который должен использовать то, что вы производите, одолжение и использовать реальную структуру ведения журнала для ведения журнала

2 голосов
/ 12 января 2012

Как я уже сказал в своем комментарии, вы можете использовать любой язык программирования, который вам удобнее.

В любом случае, в поисках других хуков коммитов, я думаю этот может быть хорошим для начала. Он в основном ищет некоторые слова в ваших файлах и может быть настроен путем изменения массива checks в верхней части файла.

0 голосов
/ 22 сентября 2017

@ cdeszaq правильно относится к части регистрации.

Для поведения , которое различается в зависимости от среды, общий способ достижения этого - сделать поведение настраиваемым.delayed_job следует прочитать значение из файла конфигурации, чтобы решить, как долго задерживать.Для производственных сред конфигурация будет иметь одно значение, а для сред разработки - другое.

...