Существуют ли хорошие автоматизированные среды для применения стандартов кодирования в Perl? - PullRequest
9 голосов
/ 09 сентября 2008

Я знаю о Perl :: Критик

И мой поиск в Google пока не дал результатов по нескольким попыткам. : - (

У кого-нибудь есть какие-нибудь рекомендации здесь?

Будем благодарны за любые ресурсы для настройки Perl :: Critic в соответствии с нашими стандартами кодирования и запуска его на основе кода.

Ответы [ 7 ]

12 голосов
/ 15 сентября 2008

Что касается настройки профиля, пробовали ли вы perlcritic --profile-proto? Это приведет к выводу всех установленных политик со всеми их параметрами с описанием обоих, включая значения по умолчанию, в формате perlcriticrc. Сохраните и отредактируйте, чтобы соответствовать тому, что вы хотите. Всякий раз, когда вы обновляете Perl :: Critic, вы можете захотеть снова запустить эту команду и выполнить сравнение с вашим текущим perlcriticrc, чтобы вы могли увидеть любые изменения в существующих политиках и выбрать новые.

С точки зрения регулярного запуска perlcritic, установите тест Test :: Perl :: Critic вместе с остальными вашими тестами. Это хорошо для нового кода.

Для существующего кода используйте Test :: Perl :: Critic :: Progressive . T :: P :: C :: Progressive будет успешным при первом запуске, но сохранит подсчет количества нарушений; после этого T :: P :: C :: Progressive будет жаловаться, если какой-либо из показателей возрастет. Одна вещь, на которую стоит обратить внимание, это когда вы отменяете изменения в вашей системе контроля версий. (Вы используете один, не так ли?) Скажем, я проверяю изменения и запускаю тесты, и мои изменения уменьшают количество нарушений P :: C. Позже выясняется, что мои изменения были плохими, поэтому я возвращаюсь к старому коду. Прогрессивный тест T :: P :: C :: не пройден из-за уменьшенного количества отсчетов. На данный момент проще всего удалить файл истории (расположение по умолчанию t / .perlcritic-history) и запустить снова. Он должен воспроизводить ваши старые счета, и вы можете написать новый материал, чтобы снова их убрать.

Perl :: Critic имеет много политик, которые поставляются вместе с ним, но есть несколько дополнительных распространений политик. Взгляните на Task :: Perl :: Critic и Task :: Perl :: Критик :: IncludingOptionalDependencies .

Вам не нужно, чтобы один код perlcriticrc обрабатывал весь ваш код. Создайте отдельные файлы perlcriticrc для каждого набора файлов, которые вы хотите проверить, а затем отдельный тест, который указывает на каждый из них. Например, посмотрите на авторские тесты для самого P: C по адресу http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/. Когда авторские тесты выполняются, есть тест, который выполняется по всему коду P :: C, второй тест, который применяется дополнительные правила только для политик, и третий, который критикует тесты P :: C.

Лично я считаю, что все должны работать на «жестоком» уровне серьезности, но выбивать политику, с которой они не согласны. Perl :: Critic не является полностью самодостаточным; даже разработчики P :: C не согласны со всем, что говорит Конвей. Посмотрите на файлы perlcriticrc, используемые в самом Perl :: Critic, и найдите в коде Perl :: Critic случаи "## no crit"; Я считаю 143 в настоящее время.

(Да, я один из разработчиков Perl :: Critic.)

5 голосов
/ 09 сентября 2008

Для большинства стилевых стандартов существует perltidy . perlcritic может быть легко настроен с помощью файла .perlcritic . Я лично использую его на первом уровне, но я отключил несколько политик.

4 голосов
/ 11 сентября 2008

В дополнение к «автоматизированным фреймворкам» я настоятельно рекомендую Perl Best Practices Дамиана Конвея. Я не согласен со 100% того, что он предлагает, но большую часть времени он ударяет.

2 голосов
/ 17 сентября 2008

Пост выше с упоминанием Devel :: Prof , вероятно, действительно означает Devel :: Cover (чтобы получить покрытие кода набора тестов).

2 голосов
/ 09 сентября 2008
1 голос
/ 15 сентября 2008

Хорошая комбинация перкритична с EPIC для Eclipse - нажмите CTRL-SHIFT-C (или предпочитаемый вами настроенный ярлык), и ваш код помечен предупреждающими индикаторами, когда perlcritic обнаружит, на что жаловаться. Гораздо приятнее, чем не забывать запускать его перед регистрацией. И как обычно с perlcritic, он подберет ваш .perlcriticrc, чтобы вы могли настроить правила. Мы держим наш .perlcriticrc в контроле версий, чтобы все получали одинаковые стандарты.

0 голосов
/ 16 сентября 2008

В дополнение к косметическим рекомендациям, мне всегда полезно запускать Devel :: Prof в моем наборе модульных тестов для проверки покрытия тестов.

...