
Perl :: Critic - Critical Perl Source Code для лучших практик.
use Perl::Critic;
my $file = shift;
my $critic = Perl::Critic->new();
my @violations = $critic->critique($file);
print @violations;
Perl :: Critic - это расширяемая основа для создания и применения стандартов кодирования для исходного кода Perl. По сути, это статический механизм анализа исходного кода. Perl :: Critic распространяется с рядом модулей Perl :: Critic :: Policy, которые пытаются обеспечить различные руководящие принципы кодирования. Большинство политических модулей основаны на лучших практиках Damian Conway Perl . Тем не менее, Perl :: Critic не ограничивается PBP и даже будет поддерживать политики, которая противоречит Конвей. Вы можете включить, отключить и настроить эти политики через интерфейс Perl :: Critic. Вы также можете создать новые модули политики, которые соответствуют вашим вкусам.
Для интерфейса командной строки с Perl :: Critic см. Документацию для перлкрита. Если вы хотите интегрировать Perl :: Critic с процессом сборки, Test :: Perl :: Critic предоставляет интерфейс, который подходит для тестовых программ. Кроме того, Test :: Perl :: Critic :: Прогрессивный полезен для постепенного применения стандартов кодирования к устаревшему коде. Для окончательного удобства (за счет некоторой гибкости) см. Критику прагма.
Если вы хотите попробовать Perl :: Critic, не установив что-либо, есть веб-сервис, доступный на http://perlcritic.com. Веб-сервис еще не поддерживает все функции конфигурации, которые доступны в нативном API Perl :: Critic, но это должно дать вам хорошее представление о том, что он делает.
Кроме того, ActivePerl включает в себя очень гладкий графический интерфейс к Perl-критику, называемую perlcritic-gui . Вы можете получить бесплатное сообщество ActivePerl от http://www.activestate.com.
Perl :: Critic работает на Perl обратно в Perl 5.10.1. Он полагается на модуль PPI, чтобы выполнить тяжелую работу по анализу Perl.
Модуль Perl::Critic считается публичным классом. Любые изменения в его интерфейсе пройдут через цикл установления.
new( [ -profile => $FILE, -severity => $N, -theme => $string, -include => @PATTERNS, -exclude => @PATTERNS, -top => $N, -only => $B, -profile-strictness => $PROFILE_STRICTNESS_{WARN|FATAL|QUIET}, -force => $B, -verbose => $N ], -color => $B, -pager => $string, -allow-unsafe => $B, -criticism-fatal => $B)
new()
Возвращает ссылку на новый объект Perl :: Critic. Большинство аргументов только что передаются непосредственно в Perl :: Critic :: Config, но я также описал их здесь. Значение по умолчанию для всех аргументов может быть определена в вашем файле .perlcriticrc . См. Раздел «Конфигурация» для получения дополнительной информации об этом. Все аргументы являются необязательными парами клавишных значений следующим образом:
-Профиль -это путь к файлу конфигурации. Если $FILE не определен, Perl :: Critic :: Config пытается найти файл конфигурации .perlcriticrc в текущем каталоге, а затем в вашем домашнем каталоге. В качестве альтернативы, вы можете установить переменную для PERLCRITIC среды, чтобы указать на файл в другом месте. Если файл конфигурации не может быть найден, или если $FILE является пустой строкой, то все политики будут загружены с их конфигурацией по умолчанию. См. «Конфигурация» для получения дополнительной информации.
-Вотежность -это минимальный уровень тяжести. Будут применяться только модули политики, которые имеют серьезность, превышающую $N Значения тяжести - это целые числа от 1 (наименьшие серьезные нарушения) до 5 (наиболее серьезные нарушения). По умолчанию 5. Для данного -profile , уменьшение -severity обычно выявляет больше нарушений политики. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc . Пользователи могут переопределить уровень серьезности для любой политики в своем файле .perlcriticrc . См. «Конфигурация» для получения дополнительной информации.
Если вам трудно вспомнить, является ли серьезность «5» наиболее или наименьшим ограничительным уровнем, то вы можете использовать одно из этих названных значений:
SEVERITY NAME ...is equivalent to... SEVERITY NUMBER
--------------------------------------------------------
-severity => 'gentle' -severity => 5
-severity => 'stern' -severity => 4
-severity => 'harsh' -severity => 3
-severity => 'cruel' -severity => 2
-severity => 'brutal' -severity => 1
Имена отражают, насколько сильно код подвергается критике: gentle критика сообщает только о самых серьезных нарушениях, и так далее до brutal критики, которая сообщает даже о самых незначительных нарушениях.
-teme -это особое выражение, которое определяет, какие политики применять на основе их соответствующих тем. Например, следующее будет загружать только политики, которые имеют тему «ошибки» и «PBP»:
my $critic = Perl::Critic->new( -theme => 'bugs && pbp' );
Если опция -severity не указана явно, настройка -theme молча приводит к установке -severity в 1. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc . См. Раздел «Темы политики» для получения дополнительной информации о темах.
-Нулдеру -это ссылка на список строки @PATTERNS . Модули политики, которые соответствуют по крайней мере одной m/$PATTERN/ixms всегда будут загружены, независимо от всех других настроек. Например:
my $critic = Perl::Critic->new(-include => ['layout'], -severity => 4);
Это заставит Perl :: Critic применить все модули CodeLayout::* , даже если у них есть уровень серьезности, который меньше 4. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc . Вы также можете использовать -include в сочетании с опцией -exclude . Обратите внимание, что -exclude имеет приоритет над -include , когда политика соответствует оба шаблона.
-Поллекция -это ссылка на список строки @PATTERNS . Модули политики, которые соответствуют по крайней мере одной m/$PATTERN/ixms не будут загружены, независимо от всех других настроек. Например:
my $critic = Perl::Critic->new(-exclude => ['strict'], -severity => 1);
Это заставит Perl :: Critic не применять модули политики RequireUseStrict и ProhibitNoStrict , даже если у них есть уровень серьезности, который превышает 1. Вы можете установить значение по умолчанию для этого параметра в вашем файле .perlcriticrc . Вы также можете использовать -exclude в сочетании с опцией -include . Обратите внимание, что -exclude имеет приоритет над -include , когда политика соответствует оба шаблона.
-single-policy -это струнный PATTERN . Будет использоваться только одна политика, которая соответствует m/$PATTERN/ixms . Политики, которые не совпадают, будут исключены. Этот вариант имеет приоритет над опциями -severity , -theme , -include , -exclude -only . Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc .
-Топ -это максимальное количество нарушений, которые можно вернуть, когда они оцениваются по уровням тяжести. Это должно быть положительное целое число. Нарушения все еще возвращаются в том порядке, в котором они происходят в файле. Если опция -severity не указана явно, настройка -top молча приводит к установке -severity в 1. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc .
-Только это логическое значение. Если установить истинное значение, Perl :: Critic выберет только из политик, которые упоминаются в профиле пользователя. Если установить ложное значение (которое является дефолтом), то Perl :: Critic выбирает из всех политик, которые он находит на вашем сайте. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc .
-Профиль-стр . Если установить на «$ profile_strictness_fatal» в Perl :: Critic :: utils :: constants, Perl :: Critic сделает определенные предупреждения о проблемах , найденных в .perlcriticrc Например, Perl :: Critic обычно warn только профили, относящиеся к несуществующей политике, но это значение делает эту ситуацию смертельной. Соответственно, "$ profile_strictness_quiet" в Perl :: Critic :: utils :: Constants делает Perl :: Critic заткнись об этих вещах.
-force -это логическое значение, которое контролирует, наблюдает ли Perl :: Critic Magical "## no critic" в вашем коде. Если установлено на истинное значение, Perl :: Critic проанализирует весь код. Если установлено значение false value (которое является дефолтом) Perl :: Critic будет игнорировать код, который помечен этими аннотациями. См. «Изгиб правила» для получения дополнительной информации. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc .
-Вербоза может быть положительным целым числом (от 1 до 11) или спецификацией буквального формата. См. Perl :: Critic :: Нарушение для объяснения спецификаций формата. Вы можете установить значение по умолчанию для этой опции в вашем файле .perlcriticrc .
-unsafe направляет Perl :: Critic, чтобы разрешить использование политик, которые помечены как «небезопасные» автором. Такие политики могут составлять ненадежный код или делать другие гнусные вещи.
-color и -pager не используются Perl :: Critic, но предоставляются в интересах Perlcritic.
-Критицизм-фатал не используется Perl :: Critic, но предоставляется на благо критики.
-Колор-Серьезность-высокая , -Колор-и-эверность-высокая , -колор-и-велера, средняя ,-торальная-страна , и -колор-иверность, не используются Perl :: Critic, но предоставляются для пользы Perlcritic. Каждый из них устанавливается на термин :: Ansicolor Color Speciation, которая будет использоваться для отображения нарушений соответствующей тяжести.
-files-with-violations и -files-without-violations не используются Perl :: Critic, а предоставляются в пользу перлокового, чтобы вызвать только соответствующие имена файлов.
critique( $source_code )
Запускает $source_code через двигатель Perl :: Critic, используя все политики, которые были загружены в этот двигатель. Если $source_code является скалярным эталом, то он рассматривается как строка фактического кода Perl. Если $source_code является ссылкой на экземпляр документа PPI ::, то этот экземпляр используется напрямую. В противном случае он рассматривается как путь к локальному файлу, содержащему код PERL. Этот метод возвращает список объектов Perl :: Critic :: нарушение для каждого нарушения загруженных политик. Список сортируется в том порядке, в котором нарушения появляются в коде. Если нет нарушений, этот метод возвращает пустой список.
add_policy( -policy => $policy_name, -params => %param_hash )
Создает объект политики и загружает его в этого критика. Если объект не может быть создан, он вызовет фатальное исключение. В противном случае он возвращает ссылку на этого критика.
-Политика -это название модуля подкласса Perl :: Critic :: Policy. Часть 'Perl::Critic::Policy' может быть опущена для краткости. Этот аргумент требуется.
-Парамс является необязательной ссылкой на хеш параметров политики. Содержание этой хеш -ссылки будет передано в конструктор модуля политики. См. Документацию в соответствующем модуле политики для описания аргументов, которые он поддерживает.
policies()
Возвращает список, содержащий ссылки на все объекты политики, которые были загружены в этот двигатель. Объекты будут в том порядке, в котором они были загружены.
config()
Возвращает объект Perl :: Critic :: Config, который был создан для этого критика или дана.
statistics()
Возвращает объект Perl :: Critic :: Статистика, созданный для этого критика. Объект статистики накапливает данные для всех файлов, которые анализируются этим критиком.
Для тех людей, которые предпочитают иметь функциональный интерфейс, метод critique может быть экспортирован по запросу и вызван в качестве статической функции. Если первый аргумент - это хэшреф, его содержимое используется для создания нового объекта Perl :: Critic. Ключи этого хэша должны быть такими же, как и те, которые поддерживаются методом Perl::Critic::new() . Вот несколько примеров:
use Perl::Critic qw(critique);
# Use default parameters...
@violations = critique( $some_file );
# Use custom parameters...
@violations = critique( {-severity => 2}, $some_file );
# As a one-liner
%> perl -MPerl::Critic=critique -e 'print critique(shift)' some_file.pm
Ни один из других методов объекта в настоящее время не поддерживается в качестве статических функций. Извини.
Большинство настроек для Perl :: Critic и каждого из модулей политики можно контролировать с помощью файла конфигурации. Файл конфигурации по умолчанию называется .perlcriticrc . Perl :: Critic сначала будет искать этот файл в текущем каталоге, а затем в вашем домашнем каталоге. В качестве альтернативы, вы можете установить переменную PERLCRITIC среды, чтобы явно указать на другой файл в другом месте. Если ни один из этих файлов не существует, и опция -profile не предоставляется конструктору, то все модули, которые находятся в пространстве Perl :: Critic :: имена политики, будут загружены с их конфигурацией по умолчанию.
Формат файла конфигурации представляет собой серию блоков в стиле INI, которые содержат пары клавиш значения, разделенные '='. Комментарии должны начинаться с «#» и могут быть размещены на отдельной строке или после пары именного значения, если хотите.
Настройки по умолчанию для самого критика Perl :: можно установить перед первым названным блоком. Например, размещение любого или всех из них в верхней части вашего файла конфигурации установит значение по умолчанию для соответствующего аргумента конструктора.
severity = 3 #Integer or named level
only = 1 #Zero or One
force = 0 #Zero or One
verbose = 4 #Integer or format spec
top = 50 #A positive integer
theme = (pbp || security) && bugs #A theme expression
include = NamingConventions ClassHierarchies #Space-delimited list
exclude = Variables Modules::RequirePackage #Space-delimited list
criticism-fatal = 1 #Zero or One
color = 1 #Zero or One
allow-unsafe = 1 #Zero or One
pager = less #pager to pipe output to
Остальная часть файла конфигурации представляет собой серию блоков, подобных этим:
[Perl::Critic::Policy::Category::PolicyName]
severity = 1
set_themes = foo bar
add_themes = baz
maximum_violations_per_document = 57
arg1 = value1
arg2 = value2
Perl::Critic::Policy::Category::PolicyName - это полное имя модуля, который реализует политику. Политические модули, распространяемые с Perl :: Critic, были сгруппированы по категориям в соответствии с содержанием в книге Дамиана Конвея перед лучшими практиками Perl . Для краткости вы можете опустить 'Perl::Critic::Policy' часть имени модуля.
severity - это уровень важности, который вы хотите присвоить политике. Все модули политики определены с значением тяжести по умолчанию в диапазоне от 1 (наименьшее тяжелое) до 5 (наиболее тяжелое). Тем не менее, вы можете не согласиться с тяжестью по умолчанию и выбрать, чтобы дать ему более высокую или более низкую тяжесть, основываясь на вашей собственной философии кодирования. Вы можете установить severity на целое число от 1 до 5 или использовать одно из эквивалентных имен:
SEVERITY NAME ...is equivalent to... SEVERITY NUMBER
----------------------------------------------------
gentle 5
stern 4
harsh 3
cruel 2
brutal 1
Имена отражают, насколько сильно код подвергается критике: gentle критика сообщает только о самых серьезных нарушениях, и так далее до brutal критики, которая сообщает даже о самых незначительных нарушениях.
set_themes устанавливает тему для политики и переопределяет его тему по умолчанию. Аргумент представляет собой цепочку одного или нескольких отмены буквенно-лимированных слов. Темы нечувствительны к случаям. См. «Темы политики» для получения дополнительной информации.
add_themes добавляет к темам по умолчанию для этой политики. Аргумент представляет собой строку одного или нескольких слов, обоснованных. Темы нечувствительны. См. «Темы политики» для получения дополнительной информации.
maximum_violations_per_document ограничивает количество нарушений, которые политика вернется для данного документа. Некоторые политики имеют предел по умолчанию; Смотрите документацию для отдельных политик, чтобы увидеть, есть ли такая. Чтобы заставить полис не иметь предела, укажите «no_limit» или пустую строку для значения этого параметра.
Оставшиеся пары ключей-это параметры конфигурации, которые будут переданы в конструктор для этой политики. Конструкторы для большинства объектов политики не поддерживают аргументы, и те, которые делают, должны иметь разумные знания по умолчанию. См. Документацию по соответствующему модулю политики для получения более подробной информации.
Вместо переопределения серьезности для данной политики вы можете полностью отключить политику, приготовя «-» к имени модуля в вашем файле конфигурации. Таким образом, политика никогда не будет загружена, независимо от того -severity данная конструктору Perl :: Critic.
Простая конфигурация может выглядеть так:
#--------------------------------------------------------------
# I think these are really important, so always load them
[TestingAndDebugging::RequireUseStrict]
severity = 5
[TestingAndDebugging::RequireUseWarnings]
severity = 5
#--------------------------------------------------------------
# I think these are less important, so only load when asked
[Variables::ProhibitPackageVars]
severity = 2
[ControlStructures::ProhibitPostfixControls]
allow = if unless # My custom configuration
severity = cruel # Same as "severity = 2"
#--------------------------------------------------------------
# Give these policies a custom theme. I can activate just
# these policies by saying `perlcritic -theme larry`
[Modules::RequireFilenameMatchesPackage]
add_themes = larry
[TestingAndDebugging::RequireTestLabels]
add_themes = larry curly moe
#--------------------------------------------------------------
# I do not agree with these at all, so never load them
[-NamingConventions::Capitalization]
[-ValuesAndExpressions::ProhibitMagicNumbers]
#--------------------------------------------------------------
# For all other Policies, I accept the default severity,
# so no additional configuration is required for them.
Для получения дополнительных примеров конфигурации см. Файл perlcriticrc , который включен в этот каталог examples этого распределения.
Собственная конфигурация Damian Conway Perl :: Critic также включена в это распределение в качестве examples/perlcriticrc-conway .
Большое количество модулей политики распределяется с Perl :: Critic. Они кратко описаны в сопутствующем документе Perl :: Critic :: PolicySummary и более подробно в самих отдельных модулях. Скажите "perlcritic -doc PATTERN" чтобы увидеть Perldoc для всех модулей политики, которые соответствуют режиме m/PATTERN/ixms
Существует ряд распределений дополнительных политик на CPAN. Если Perl :: Critic не содержит нужную политику, которую вы хотите, кто -то, возможно, уже написал ее. См. Раздел «См. Также» ниже для списка некоторых из этих распределений.
Каждая политика определяется с одной или несколькими «темами». Темы могут быть использованы для создания произвольных групп политик. Они предназначены для обеспечения альтернативного механизма для выбора предпочтительного набора политик. Например, вы можете отключить определенную подмножество политик при анализе тестовых программ. И наоборот, вы можете включить только определенное подмножество политик при анализе модулей.
Политики, которые поставляются с Perl :: Critic, были разбиты на следующие темы. Это только наша попытка предоставить некоторые основные логические группировки. Вы можете изобретать новые темы, которые соответствуют вашим потребностям.
THEME DESCRIPTION
--------------------------------------------------------------------------
core All policies that ship with Perl::Critic
pbp Policies that come directly from "Perl Best Practices"
bugs Policies that that prevent or reveal bugs
certrec Policies that CERT recommends
certrule Policies that CERT considers rules
maintenance Policies that affect the long-term health of the code
cosmetic Policies that only have a superficial effect
complexity Policies that specifically relate to code complexity
security Policies that relate to security issues
tests Policies that are specific to test programs
Любая политика может соответствовать нескольким темам. Скажите "perlcritic -list" чтобы получить список всех доступных политик и тем, которые связаны с каждым. Вы также можете изменить тему для любой политики в вашем файле .perlcriticrc . См. Раздел «Конфигурация» для получения дополнительной информации об этом.
Используя опцию -theme , вы можете создать произвольно сложное правило, которое определяет, какие политики будут загружены. Приоритет такой же, как и обычный код PERL, и вы также можете использовать скобки для обеспечения приоритета. Поддерживаемые операторы:
Operator Alternative Example
-----------------------------------------------------------------
&& and 'pbp && core'
|| or 'pbp || (bugs && security)'
! not 'pbp && ! (portability || complexity)'
Названия тем нечувствительны. Если -theme установлена на пустую строку, то она оценивает как истинные все политики.
Perl :: Critic использует жесткий подход к вашему коду: либо вы подчиняетесь, либо нет. В реальном мире не всегда практично (и даже возможно) полностью соответствовать стандартам кодирования. В таких случаях целесообразно показать, что вы сознательно нарушаете стандарты и что у вас есть чертовски веская причина (DGR) для этого.
Чтобы помочь с этими ситуациями, вы можете направить Perl :: Critic игнорировать определенные строки или блоки кода с помощью аннотаций:
require 'LegacyLibaray1.pl'; ## no critic
require 'LegacyLibrary2.pl'; ## no critic
for my $element (@list) {
## no critic
$foo = ""; #Violates 'ProhibitEmptyQuotes'
$barf = bar() if $foo; #Violates 'ProhibitPostfixControls'
#Some more evil code...
## use critic
#Some good code...
do_something($_);
}
Аннотации "## no critic" направляют Perl :: Critic, чтобы игнорировать оставшиеся строки кода, пока не найдено аннотация "## use critic" . Если аннотация "## no critic" находится на той же строке, что и оператор кода, то упускается только эта строка кода. Чтобы направить перлосы, чтобы игнорировать аннотации "## no critic" , используйте вариант --force .
Аннотация "## no critic" отключает все активные политики. Если вы хотите отключить только конкретную политику, добавьте список имен политики в качестве аргументов, как и для прагм "no strict" или "no warnings" . Например, это отключило бы политики ProhibitEmptyQuotes и ProhibitPostfixControls до конца блока или до следующей аннотации "## use critic" (в зависимости от того, что наступит в первый раз):
## no critic (EmptyQuotes, PostfixControls)
# Now exempt from ValuesAndExpressions::ProhibitEmptyQuotes
$foo = "";
# Now exempt ControlStructures::ProhibitPostfixControls
$barf = bar() if $foo;
# Still subjected to ValuesAndExpression::RequireNumberSeparators
$long_int = 10000000000;
Поскольку имена политики согласуются с аргументами "## no critic" как регулярные выражения, вы можете сократить имена политики или отключить целую семью политик в одном выстреле, как это:
## no critic (NamingConventions)
# Now exempt from NamingConventions::Capitalization
my $camelHumpVar = 'foo';
# Now exempt from NamingConventions::Capitalization
sub camelHumpSub {}
Список аргументов должен быть заключен в скобки или скобки и должен содержать одно или несколько разделившихся запятых голых слов (например, не используйте цитаты). Аннотации "## no critic" могут быть вложены, а политика, названная внутренней аннотацией
Некоторые политики, такие как Subroutines::ProhibitExcessComplexity применяются ко всему блоку кода. В этих случаях аннотация "## no critic" должна появляться на линии, где сообщается о нарушении. Например:
sub complicated_function { ## no critic (ProhibitExcessComplexity)
# Your code here...
}
Политики, такие как Documentation::RequirePodSections применяются ко всему документу, и в этом случае нарушения представлены в строке 1.
Используйте эту функцию с умом. "## no critic" следует использовать аннотации в наименьшей возможной области или только в отдельных строках кода. И вы всегда должны быть как можно более конкретными в отношении того, какие политики вы хотите отключить (то есть никогда не используйте голый "## no critic" ). Если Perl :: Critic жалуется на ваш код, попробуйте найти соответствующее решение, прежде чем прибегать к этой функции.
Стандарты кодирования глубоко личные и очень субъективны. Цель Perl :: Critic - помочь вам написать код, который соответствует набору лучших практик. Наша основная цель - не диктовать, какова эти практики, а в реализации практики, обнаруженной другими. В конечном счете, вы составляете правила - Perl :: Critic - это просто инструмент для поощрения согласованности. Если есть политика, которая, по вашему мнению, важна или что мы упустили из виду, мы были бы очень благодарны за взносы, или вы можете просто загрузить свой собственный набор политик в Perl :: Critic.
Модульная конструкция Perl :: Critic предназначена для облегчения добавления новых политик. Вам нужно иметь некоторое понимание PPI, но большинство модулей политики довольно просты и требуют всего около 20 строк кода. Пожалуйста, смотрите файл Perl :: Critic :: Developer, включенный в это распределение для пошаговой демонстрации того, как создать новые модули политики.
Если вы разрабатываете какие -либо новые политические модули, не стесняйтесь отправлять их по адресу <[email protected]> и я буду рад подумать о том, чтобы поместить их в распределение Perl :: Critic. Или, если вы хотите напрямую поработать над проектом Perl :: Critic, вы можете расколоть наш репозиторий по адресу https://github.com/perl-critic/perl-critic.git.
Команда Perl :: Critic также доступна для найма. Если в вашей организации есть свои собственные стандарты кодирования, мы можем создать пользовательские политики для обеспечения соблюдения ваших местных руководящих принципов. Или, если ваша кодовая база подвержена определенной схеме дефекта, мы можем разработать политики, которые помогут вам поймать эти дорогостоящие дефекты, прежде чем они перейдут в производство. Чтобы обсудить ваши потребности с командой Perl :: Critic, просто свяжитесь с <[email protected]> .
Perl :: Critic требует следующих модулей:
B :: Ключевые слова
Config :: tiny
Exception :: Class
File :: spec
File :: spec :: unix
Файл :: Что
Список :: Некоторые UTILS
Список :: util
Модуль :: подключаемый
Perl :: riady
Pod :: Заклинание
PPI
Pod :: Plaintext
Pod :: select
POD :: Использование
Ридонли
Скаляр :: util
String :: format
Термин :: ansicolor
Текст :: parsewords
версия
Вам рекомендуется подписаться на общедоступный список рассылки по адресу https://groups.google.com/d/forum/perl-critic. По крайней мере, один член команды разработчиков обычно видит в IRC: //irc.perl.org/#perlcritic, и вы можете следить за Perl :: Critic в Twitter, по адресу https://twitter.com/perlcritic.
Существует ряд распределения дополнительных политик. Несколько перечислены здесь:
Perl :: Critic :: More
Perl :: Critic :: Bangs
Perl :: Critic :: LAX
Perl :: Critic :: StrictersUbs
Perl :: Critic :: Swift
Perl :: Critic :: Тики
Эти распределения позволяют вам использовать Perl :: Critic в ваших модульных тестах:
Тест :: perl :: Critic
Тест :: perl :: Critic :: Progressive
Существует также распределение, которое установит все модули, связанные с критиками, известные для команды разработчиков:
Задача :: perl :: Critic
Изучение кода Perl является трудным для людей, не говоря уже о машинах. Если вы найдете какие-либо ошибки, в частности, ложные позиции или ложные отчеты от Perl :: Critic ::, пожалуйста, отправьте их по адресу https://github.com/perl-critic/perl-critic/issues. Спасибо.
Адам Кеннеди - Для создания PPI, «Сердце и души Perl :: Critic».
Damian Conway - Для написания лучших практик Perl , наконец -то :)
Крис Долан - за то, чтобы внести лучшие функции и модули политики.
Энди Лестер-Мудрый мудрец и мастер тестирования всех частей.
Эллиот Шанк - самопровозглашенный урод качества.
Джузеппе МакСия - для всех великих идей и позитивной поддержки.
И Шарон, моя жена - за то, чтобы смириться с моими ночными сессиями кода.
Спасибо также Фонду Perl за предоставление гранта на поддержку проекта Криса Долана для реализации двадцати политик PBP. http://www.perlfoundation.org/april_1_2007_new_grant_wards
Также благодаря этому неполному списку прачечной, которые в некотором роде внесли свой вклад в Perl :: Critic: Грегори Ошвальд, Майк О'Ререган, Том Хукинс, Омер Газит, Эван Закс, Пол Ховарт, Сойер X, Кристиан Валд, Дейв Ролски, Джакуб Уилк, Рой Иви Ийи, Оливер Трозиен, Гленн Фаулер, Гленн Фаулер, Матт, Алекс, Алекс, Алекс, Алекс, Алекс, Алекс, Гленн Фаулер, Матт, Алекс, Алекс, Алекс, Алекс, Гленн Фаулер, Матт, Алекс, Алекс, Алекс, Гленн Фаулер, Мат. Sebastian Paaske Tørholm, Stuart A Johnston, Dan Book, Steven Humphrey, James Raspass, Ник Тонкин, Харрисон Кац, Дуглас Симс, Марк Фаулер, Алан Берндт, Нил Бауэрс, Сергей Романов, Габр Сабо, Грэм -Кноп, Гайк Элдридж, Дэвид Штайннер, Кайл -Каймл. Дейв Кросс, Анирван Чаттерджи, Тодд Ринальдо, Грэм Оллис, Карен Этеридж, Джонас Брёмс, Олаф Олдерс, Джим Кинэн, Славен Резич, Шимон Низнаньский.
Джеффри Райан Талхаммер [email protected]
Copyright (C) 2005-2018 обращающие программные системы. Все права защищены.
Эта программа является бесплатным программным обеспечением; Вы можете перераспределить его и/или изменить его в соответствии с теми же условиями, что и сам Perl. Полный текст этой лицензии можно найти в файле лицензии, включенного в этот модуль.