Есть ли какие-нибудь хорошие автоматизированные фреймворки для применения стандартов кодирования в Perl?

Мне известно, что Perl :: Critic.

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

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

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


person Jagmal    schedule 09.09.2008    source источник
comment
Что вы имеете в виду под словом «Работает»?   -  person svrist    schedule 09.09.2008
comment
Под Up and running я имею в виду настроить критика в соответствии с моими потребностями (я знаю, что есть Perl :: Critic :: Config, но, будучи кодером Perl, я пытаюсь быть очень ленивым :)) и запустить его на своей базе кода . Я обновлю вопрос.   -  person Jagmal    schedule 09.09.2008


Ответы (7)


Что касается настройки профиля, вы пробовали 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 :: Progressive завершится неудачно из-за уменьшения количества. На этом этапе проще всего просто удалить файл истории (расположение по умолчанию t / .perlcritic-history) и запустить снова. Он должен воспроизводить ваши старые счетчики, и вы можете написать новый материал, чтобы снова их снизить.

Perl :: Critic имеет множество политик, которые поставляются вместе с ним, но есть множество дополнительных распределений политик. Взгляните на Task :: Perl :: Critic и Task :: Perl :: Critic :: 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 critical»; Сейчас я насчитываю 143 человека.

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

person Elliot Shank    schedule 15.09.2008

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

person Leon Timmermans    schedule 09.09.2008

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

person talexb    schedule 10.09.2008

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

person jplindstrom    schedule 16.09.2008

Нравится:

Похоже, хороший инструмент!

person svrist    schedule 09.09.2008

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

person Alex Francis    schedule 15.09.2008

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

person jonfm    schedule 16.09.2008