
Perl :: Critic - Critique Perl Code source des meilleures pratiques.
use Perl::Critic;
my $file = shift;
my $critic = Perl::Critic->new();
my @violations = $critic->critique($file);
print @violations;
Perl :: Critic est un cadre extensible pour créer et appliquer des normes de codage au code source Perl. Essentiellement, il s'agit d'un moteur d'analyse de code source statique. Perl :: Critic est distribué avec un certain nombre de modules de politique Perl :: Critic :: qui tentent d'appliquer diverses directives de codage. La plupart des modules politiques sont basés sur les meilleures pratiques de Damian Conway Perl . Cependant, Perl :: Critic ne se limite pas au PBP et soutiendra même des politiques qui contredisent Conway. Vous pouvez activer, désactiver et personnaliser ces politiques via l'interface Perl :: Critic. Vous pouvez également créer de nouveaux modules de stratégie qui conviennent à vos propres goûts.
Pour une interface de ligne de commande à Perl :: Critic, consultez la documentation de PerlCritic. Si vous souhaitez intégrer Perl :: Critic à votre processus de construction, Test :: Perl :: Critic fournit une interface adaptée aux programmes de test. Aussi, test :: perl :: critique :: Progressive est utile pour appliquer progressivement les normes de codage au code hérité. Pour la commodité ultime (au détriment d'une certaine flexibilité), voir la critique pragma.
Si vous souhaitez essayer Perl :: Critic sans rien installer, il y a un service Web disponible sur http://perlcritic.com. Le service Web ne prend pas encore en charge toutes les fonctionnalités de configuration disponibles dans l'API Native Perl :: Critic, mais il devrait vous donner une bonne idée de ce qu'il fait.
En outre, ActivePerl comprend une interface graphique très lisse de Perl-Critic appelé perlcritic-gui . Vous pouvez obtenir une édition communautaire gratuite d'ActiveperL à partir de http://www.activestate.com.
Perl :: Critic remonte à Perl à Perl 5.10.1. Il s'appuie sur le module PPI pour faire le travail lourd de l'analyse de Perl.
Le module Perl::Critic est considéré comme une classe publique. Toute modification de son interface passera par un cycle de dépréciation.
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()
Renvoie une référence à un nouvel objet critique perl ::. La plupart des arguments sont simplement transmis directement dans Perl :: Critic :: Config, mais je les ai également décrits ici. La valeur par défaut pour tous les arguments peut être définie dans votre fichier .perlcriticrc . Voir la section "Configuration" pour plus d'informations à ce sujet. Tous les arguments sont des paires de valeurs clés facultatives comme suit:
-Profile est un chemin d'accès à un fichier de configuration. Si $FILE n'est pas défini, Perl :: Critic :: Config tente de trouver un fichier de configuration .perlcriticrc dans le répertoire actuel, puis dans votre répertoire domestique. Alternativement, vous pouvez définir la variable d'environnement PERLCRITIC pour pointer un fichier dans un autre emplacement. Si un fichier de configuration ne peut pas être trouvé, ou si $FILE est une chaîne vide, toutes les stratégies seront chargées de leur configuration par défaut. Voir "Configuration" pour plus d'informations.
-Les occupation sont le niveau de gravité minimum. Seuls les modules de politique qui ont une gravité supérieure à $N seront appliqués. Les valeurs de gravité sont des entiers allant de 1 (violations les moins graves) à 5 (violations les plus graves). La valeur par défaut est 5. Pour un -profile donné, la diminution de la -severity révèle généralement plus de violations politiques. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc . Les utilisateurs peuvent redéfinir le niveau de gravité de toute politique dans leur fichier .perlcriticrc . Voir "Configuration" pour plus d'informations.
S'il vous est difficile de vous rappeler si la gravité "5" est le niveau le plus ou le moins restrictif, vous pouvez utiliser l'une de ces valeurs nommées:
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
Les noms reflètent à quel point le code est gravement critiqué: une gentle critique ne rapporte que les violations les plus graves, et ainsi de suite à une critique brutal qui rapporte même les violations les plus mineures.
-Les thèmes sont une expression spéciale qui détermine les politiques à appliquer en fonction de leurs thèmes respectifs. Par exemple, ce qui suit ne chargerait que des politiques qui ont un thème «bogues» et «PBP»:
my $critic = Perl::Critic->new( -theme => 'bugs && pbp' );
À moins que l'option -severity ne soit explicitement donnée, le réglage -theme fait régler silencieusement la- -severity sur 1. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc . Voir la section "Thèmes politiques" pour plus d'informations sur les thèmes.
-include est une référence à une liste de string @PATTERNS . Les modules de stratégie qui correspondent au moins un m/$PATTERN/ixms seront toujours chargés, quels que soient tous les autres paramètres. Par exemple:
my $critic = Perl::Critic->new(-include => ['layout'], -severity => 4);
Cela ferait que Perl :: Critic applique tous les modules de stratégie CodeLayout::* même s'ils ont un niveau de gravité inférieur à 4. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc . Vous pouvez également utiliser -include en conjonction avec l'option -exclude . Notez que -exclude prévoit la priorité sur -include lorsqu'une politique correspond aux deux modèles.
-Exclure est une référence à une liste de string @PATTERNS . Les modules de stratégie qui correspondent au moins un m/$PATTERN/ixms ne seront pas chargés, quels que soient tous les autres paramètres. Par exemple:
my $critic = Perl::Critic->new(-exclude => ['strict'], -severity => 1);
Cela entraînerait Perl :: Critic à ne pas appliquer les modules de politique RequireUseStrict et ProhibitNoStrict , même s'ils ont un niveau de gravité supérieur à 1. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc . Vous pouvez également utiliser -exclude en conjonction avec l'option -include . Notez que -exclude prévoit la priorité sur -include lorsqu'une politique correspond aux deux modèles.
-Single-Policy est un PATTERN de chaîne. Une seule stratégie qui correspond à m/$PATTERN/ixms sera utilisée. Les politiques qui ne correspondent pas seront exclues. Cette option a la priorité sur les options -severity , -theme , -include , -exclude et-et -only . Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc .
-Top est le nombre maximal de violations à retourner lorsqu'ils sont classés par leur niveau de gravité. Cela doit être un entier positif. Les violations sont toujours renvoyées dans l'ordonnance qu'ils se produisent dans le dossier. À moins que l'option -severity ne soit explicitement donnée, le réglage -top fait régler silencieusement la -severity sur 1. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc .
-nement est une valeur booléenne. S'il est défini sur une vraie valeur, Perl :: Critic ne choisira que parmi les politiques mentionnées dans le profil de l'utilisateur. S'il est défini sur une fausse valeur (qui est la valeur par défaut), alors Perl :: Critic choisit dans toutes les politiques qu'il trouve sur votre site. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc .
-profile-strict est une valeur énumérée, l'une de "$ profil_strictness_warn" dans perl :: critique :: utils :: constantes (la valeur par défaut), "$ profil_strictness_fatal" dans perl :: critique :: utils :: Constants, et "$ profil_strictness_quiet" in perl :: critic :: utils ::: consotes. Si défini sur "$ profil_strictness_fatal" dans perl :: critique :: utils :: Constantes, Perl :: Critic fera certains avertissements sur les problèmes trouvés dans un .perlcriticrc ou un fichier spécifié via l'option -profile fatale. Par exemple, Perl :: Critic ne warn normalement que les profils se référant à des politiques inexistantes, mais cette valeur rend cette situation fatale. En conséquence, "$ Profil_strictness_Quiet" dans Perl :: Critic :: utils :: Constantes fait Perl :: Critic fermer ces choses.
-Force est une valeur booléenne qui contrôle si Perl :: Critic observe les annotations magiques "## no critic" dans votre code. S'il est défini sur une vraie valeur, Perl :: Critic analysera tout le code. Si défini sur une fausse valeur (qui est la valeur par défaut) Perl :: Critic ignorera le code qui est marqué avec ces annotations. Voir «Priser les règles» pour plus d'informations. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc .
-Verbose peut être un entier positif (de 1 à 11), ou une spécification de format littéral. Voir Perl :: Critic :: Violation pour une explication des spécifications du format. Vous pouvez définir la valeur par défaut de cette option dans votre fichier .perlcriticrc .
-Unsafe dirige Perl :: Critic pour permettre l'utilisation de politiques qui sont marquées comme "dangereuses" par l'auteur. Ces politiques peuvent compiler du code non fiable ou faire d'autres choses néfastes.
-Color et -Pager ne sont pas utilisés par Perl :: Critic mais sont fournis au profit de Perlcritic.
-Criticisme mortel n'est pas utilisé par Perl :: critique mais est fourni au profit de la critique.
-Color-Severity-High , -Color-Severity-High , -Color-Severity- Medium , -Color-Severity-Low et -Color-Severity-Low lest ne sont pas utilisés par Perl :: Critic, mais sont fournis au profit du perlcritique. Chacun est défini sur le terme :: Spécification de couleur ANSICOLOR à utiliser pour afficher des violations de la gravité correspondante.
-Les fichiers avec violations et -files sans violations ne sont pas utilisés par Perl :: critique, mais sont fournis au profit de Perlcritic, pour provoquer que seuls les noms de fichiers pertinents sont affichés.
critique( $source_code )
Exécute le $source_code via le moteur Perl :: Critic en utilisant toutes les politiques qui ont été chargées dans ce moteur. Si $source_code est une référence scalaire, il est traité comme une chaîne de code perl réel. Si $source_code est une référence à une instance du document PPI ::, alors cette instance est utilisée directement. Sinon, il est traité comme un chemin vers un fichier local contenant du code Perl. Cette méthode renvoie une liste de perl :: Critic :: violation des objets pour chaque violation des politiques chargées. La liste est triée dans l'ordre que les violations apparaissent dans le code. S'il n'y a pas de violations, cette méthode renvoie une liste vide.
add_policy( -policy => $policy_name, -params => %param_hash )
Crée un objet politique et le charge dans ce critique. Si l'objet ne peut pas être instancié, il lèvera une exception fatale. Sinon, il renvoie une référence à ce critique.
-Policy est le nom d'un module de sous-classe Perl :: Critic :: Policy. La partie 'Perl::Critic::Policy' du nom peut être omise par la brièveté. Cet argument est requis.
-Params est une référence facultative à un hachage de paramètres de politique. Le contenu de cette référence de hachage sera transmis au constructeur du module de politique. Voir la documentation du module de politique pertinent pour une description des arguments qu'il prend en charge.
policies()
Renvoie une liste contenant des références à tous les objets de politique qui ont été chargés dans ce moteur. Les objets seront dans l'ordre où ils ont été chargés.
config()
Renvoie l'objet Perl :: Critic :: Config qui a été créé pour ou donné à ce critique.
statistics()
Renvoie le Perl :: Critic :: Statistics Object qui a été créé pour ce critique. L'objet statistique accumule des données pour tous les fichiers analysés par ce critique.
Pour les gens qui préfèrent avoir une interface fonctionnelle, la méthode critique peut être exportée sur demande et appelée fonction statique. Si le premier argument est un hashref, son contenu est utilisé pour construire un nouvel objet Critic Perl :: en interne. Les clés de ce hachage doivent être les mêmes que celles soutenues par la méthode Perl::Critic::new() . Voici quelques exemples:
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
Aucune des autres méthodes d'objet n'est actuellement prise en compte comme fonctions statiques. Désolé.
La plupart des paramètres de Perl :: critique et de chacun des modules de stratégie peuvent être contrôlés par un fichier de configuration. Le fichier de configuration par défaut est appelé .perlcriticrc . Perl :: Critic recherchera d'abord ce fichier dans le répertoire actuel, puis dans votre répertoire domestique. Alternativement, vous pouvez définir la variable d'environnement PERLCRITIC pour pointer explicitement un autre fichier dans un autre emplacement. Si aucun de ces fichiers n'existe et que l'option -profile n'est pas donnée au constructeur, tous les modules trouvés dans l'espace de noms Perl :: Critic :: Policy seront chargés de leur configuration par défaut.
Le format du fichier de configuration est une série de blocs de style INI qui contiennent des paires de valeurs de clé séparées par '='. Les commentaires doivent commencer par «#» et peuvent être placés sur une ligne séparée ou après les paires de valeurs de nom si vous le souhaitez.
Les paramètres par défaut pour Perl :: Critic lui-même peuvent être définis avant le premier bloc nommé. Par exemple, la mise en place ou la totalité de ces éléments en haut de votre fichier de configuration définira la valeur par défaut de l'argument du constructeur correspondant.
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
Le reste du fichier de configuration est une série de blocs comme celui-ci:
[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 est le nom complet d'un module qui implémente la politique. Les modules politiques distribués avec Perl :: critique ont été regroupés en catégories en fonction de la table des matières dans le livre de Damian Conway , les meilleures pratiques . Pour Brevity, vous pouvez omettre la partie 'Perl::Critic::Policy' du nom du module.
severity est le niveau d'importance que vous souhaitez attribuer à la politique. Tous les modules de politique sont définis avec une valeur de gravité par défaut allant de 1 (moins grave) à 5 (les plus graves). Cependant, vous pouvez être en désaccord avec la gravité par défaut et choisir de lui donner une gravité plus élevée ou inférieure, en fonction de votre propre philosophie de codage. Vous pouvez définir la severity sur un entier de 1 à 5, ou utiliser l'un des noms équivalents:
SEVERITY NAME ...is equivalent to... SEVERITY NUMBER
----------------------------------------------------
gentle 5
stern 4
harsh 3
cruel 2
brutal 1
Les noms reflètent à quel point le code est gravement critiqué: une gentle critique ne rapporte que les violations les plus graves, et ainsi de suite à une critique brutal qui rapporte même les violations les plus mineures.
set_themes définit le thème de la stratégie et remplace son thème par défaut. L'argument est une chaîne d'un ou plusieurs mots alphanumériques délimités dans l'espace. Les thèmes sont insensibles aux cas. Voir les «thèmes politiques» pour plus d'informations.
add_themes ajoute aux thèmes par défaut de cette politique. L'argument est une chaîne d'un ou plusieurs mots délimités dans l'espace. Les thèmes sont insensibles aux cas. Voir les «thèmes politiques» pour plus d'informations.
maximum_violations_per_document limite le nombre de violations que la politique reviendra pour un document donné. Certaines politiques ont une limite par défaut; Voir la documentation des politiques individuelles pour voir s'il y en a un. Pour forcer une politique à ne pas avoir de limite, spécifiez "no_limit" ou la chaîne vide pour la valeur de ce paramètre.
Les paires de valeurs clés restantes sont des paramètres de configuration qui seront transmis dans le constructeur pour cette politique. Les constructeurs de la plupart des objets politiques ne prennent pas en charge les arguments, et ceux qui le font devraient avoir des défauts raisonnables. Voir la documentation sur le module de politique approprié pour plus de détails.
Au lieu de redéfinir la gravité d'une politique donnée, vous pouvez désactiver complètement une politique en ajoutant un «-» au nom du module dans votre fichier de configuration. De cette manière, la politique ne sera jamais chargée, quelle que soit la -severity donnée au constructeur de Perl :: critique.
Une configuration simple peut ressembler à ceci:
#--------------------------------------------------------------
# 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.
Pour des exemples de configuration supplémentaires, consultez le fichier perlcriticrc qui est inclus dans ce répertoire examples de cette distribution.
La configuration de Damian Conway Perl :: Critic est également incluse dans cette distribution comme examples/perlcriticrc-conway .
Un grand nombre de modules politiques sont distribués avec Perl :: Critic. Ils sont décrits brièvement dans le document compagnon Perl :: Critic :: PolicySummary et plus en détail dans les modules individuels eux-mêmes. Dites "perlcritic -doc PATTERN" pour voir le perldoc pour tous les modules de stratégie qui correspondent au regex m/PATTERN/ixms
Il existe un certain nombre de distributions de politiques supplémentaires sur CPAN. Si Perl :: Critic ne contient pas de politique que vous souhaitez, quelqu'un l'a peut-être déjà écrit. Voir la section "Voir aussi" ci-dessous pour une liste de certaines de ces distributions.
Chaque politique est définie avec un ou plusieurs "thèmes". Les thèmes peuvent être utilisés pour créer des groupes arbitraires de politiques. Ils sont destinés à fournir un autre mécanisme pour sélectionner votre ensemble de politiques préféré. Par exemple, vous souhaiterez peut-être désactiver un certain sous-ensemble de politiques lors de l'analyse des programmes de test. À l'inverse, vous souhaiterez peut-être activer uniquement un sous-ensemble spécifique de politiques lors de l'analyse des modules.
Les politiques qui expédient avec Perl :: Critic ont été pénétrées dans les thèmes suivants. Ceci est juste notre tentative de fournir des groupes logiques de base. Vous êtes libre d'inventer de nouveaux thèmes qui répondent à vos besoins.
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
Toute politique peut s'intégrer dans plusieurs thèmes. Dites "perlcritic -list" pour obtenir une liste de toutes les politiques disponibles et des thèmes associés à chacun. Vous pouvez également modifier le thème de toute politique de votre fichier .perlcriticrc . Voir la section "Configuration" pour plus d'informations à ce sujet.
En utilisant l'option -theme , vous pouvez créer une règle arbitrairement complexe qui détermine quelles politiques seront chargées. La priorité est la même que le code Perl ordinaire, et vous pouvez également utiliser des parenthèses pour appliquer la priorité. Les opérateurs pris en charge sont:
Operator Alternative Example
-----------------------------------------------------------------
&& and 'pbp && core'
|| or 'pbp || (bugs && security)'
! not 'pbp && ! (portability || complexity)'
Les noms de thème sont insensibles à la casse. Si le -theme est défini sur une chaîne vide, il évalue comme vrai toutes les politiques.
Perl :: Critic adopte une approche en ligne dure à votre code: soit vous vous conformez, soit vous ne le faites pas. Dans le monde réel, il n'est pas toujours pratique (ni même possible) de se conformer pleinement aux normes de codage. Dans de tels cas, il est sage de montrer que vous violez sciemment les normes et que vous avez une putain de bonne raison (DGR) pour le faire.
Pour aider à ces situations, vous pouvez diriger Perl :: Critic pour ignorer certaines lignes ou blocs de code en utilisant des annotations:
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($_);
}
Les annotations "## no critic" dirigent Perl :: Critic pour ignorer les lignes de code restantes jusqu'à ce qu'une annotation "## use critic" soit trouvée. Si l'annotation "## no critic" est sur la même ligne qu'une instruction de code, seule cette ligne de code est ignorée. Pour diriger Perlcritic pour ignorer les annotations "## no critic" , utilisez l'option --force .
Une annotation nue "## no critic" désactive toutes les politiques actives. Si vous souhaitez désactiver uniquement des politiques spécifiques, ajoutez une liste des noms de politique comme arguments, tout comme vous le feriez pour les pragmas "no strict" ou "no warnings" . Par exemple, cela désactiverait les politiques de ProhibitEmptyQuotes et ProhibitPostfixControls jusqu'à la fin du bloc ou jusqu'à l'annotation "## use critic" suivante (selon la première éventualité):
## 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;
Étant donné que les noms de politique sont égalés aux arguments "## no critic" comme expressions régulières, vous pouvez abréger les noms de politique ou désactiver toute une famille de politiques dans un coup comme celle-ci:
## no critic (NamingConventions)
# Now exempt from NamingConventions::Capitalization
my $camelHumpVar = 'foo';
# Now exempt from NamingConventions::Capitalization
sub camelHumpSub {}
La liste des arguments doit être jointe entre parenthèses ou supports et doit contenir un ou plusieurs mots nus séparés par les virgules (par exemple, n'utilisez pas de citations). Les annotations "## no critic" peuvent être imbriquées, et les politiques nommées par une annotation intérieure seront désactivées avec ceux qui ont déjà désactivé une annotation extérieure.
Certaines politiques comme Subroutines::ProhibitExcessComplexity s'appliquent à un bloc de code entier. Dans ces cas, l'annotation "## no critic" doit apparaître sur la ligne où la violation est signalée. Par exemple:
sub complicated_function { ## no critic (ProhibitExcessComplexity)
# Your code here...
}
Des politiques telles que Documentation::RequirePodSections s'appliquent à l'ensemble du document, auquel cas les violations sont signalées à la ligne 1.
Utilisez à bon escient cette fonctionnalité. Les annotations "## no critic" doivent être utilisées dans la plus petite portée possible, ou uniquement sur les lignes de code individuelles. Et vous devriez toujours être aussi précis que possible sur les politiques que vous souhaitez désactiver (c'est-à-dire n'utilisez jamais un "## no critic" ). Si Perl :: Critic se plaint de votre code, essayez de trouver une solution conforme avant de recourir à cette fonctionnalité.
Les normes de codage sont profondément personnelles et très subjectives. Le but de Perl :: Critic est de vous aider à écrire du code conforme à un ensemble de meilleures pratiques. Notre objectif principal n'est pas de dicter ce que sont ces pratiques, mais plutôt de mettre en œuvre les pratiques découvertes par d'autres. En fin de compte, vous créez les règles - Perl :: Critic n'est qu'un outil pour encourager la cohérence. S'il y a une politique qui, selon vous, est importante ou que nous avons négligé, nous serions très reconnaissants pour les contributions, ou vous pouvez simplement charger votre propre ensemble privé de politiques dans Perl :: Critic.
La conception modulaire de Perl :: Critic est destinée à faciliter l'ajout de nouvelles politiques. Vous aurez besoin d'avoir une certaine compréhension de l'IPP, mais la plupart des modules de stratégie sont assez simples et ne nécessitent qu'environ 20 lignes de code. Veuillez consulter le fichier de développeur Perl :: Critic :: inclus dans cette distribution pour une démonstration étape par étape de la façon de créer de nouveaux modules de politique.
Si vous développez de nouveaux modules politiques, n'hésitez pas à les envoyer à <[email protected]> et je serai heureux d'envisager de les mettre dans la distribution de Critic Perl ::. Ou si vous souhaitez travailler directement sur le projet Perl :: Critic, vous pouvez débarquer notre référentiel sur https://github.com/perl-critic/perl-critic.git.
L'équipe Perl :: Critic est également disponible à la location. Si votre organisation a ses propres normes de codage, nous pouvons créer des politiques personnalisées pour appliquer vos directives locales. Ou si votre base de code est sujette à un modèle de défaut particulier, nous pouvons concevoir des politiques qui vous aideront à saisir ces défauts coûteux avant de se produire. Pour discuter de vos besoins avec l'équipe de Perl :: Critic, contactez simplement <[email protected]> .
Perl :: Critic nécessite les modules suivants:
B :: Mots-clés
Config :: minuscule
Exception :: Classe
Fichier :: spec
Fichier :: Spec :: Unix
Dossier :: qui
Liste :: Someutils
Liste :: util
Module :: enfichable
Perl :: Tidy
Pod :: sort
IPP
Pod :: en clair
POD :: SELECT
POD :: Utilisation
Lire en lecture
Scalar :: Util
Chaîne :: format
Terme :: ANSICOLOR
Texte :: Parsewords
version
Vous êtes encouragé à vous abonner à la liste de diffusion publique à https://groups.google.com/d/forum/perl-critic. Au moins un membre de l'équipe de développement traîne généralement dans IRC: //ir.perl.org/#perlcritic et vous pouvez suivre Perl :: Critic sur Twitter, sur https://twitter.com/perlcritic.
Il existe un certain nombre de distributions de politiques supplémentaires disponibles. Quelques-uns sont répertoriés ici:
Perl :: critique :: Plus
Perl :: Critic :: Bangs
Perl :: critique :: lax
Perl :: Critic :: Strictrsubs
Perl :: Critic :: Swift
Perl :: critique :: tics
Ces distributions vous permettent d'utiliser Perl :: Critic dans vos tests unitaires:
Test :: perl :: critique
Test :: Perl :: Critic :: Progressive
Il existe également une distribution qui installera tous les modules liés à Perl :: Critic connus de l'équipe de développement:
Tâche :: Perl :: critique
Le scrutin du code Perl est difficile pour les humains, sans parler des machines. Si vous trouvez des bogues, en particulier des faux positifs ou des faux-négatifs d'une politique perl :: critique ::, veuillez les soumettre à https://github.com/perl-critic/perl-critic/issues. Merci.
Adam Kennedy - Pour la création de PPI, le cœur et l'âme de Perl :: Critic.
Damian Conway - Pour écrire les meilleures pratiques Perl , enfin :)
Chris Dolan - Pour avoir contribué les meilleures fonctionnalités et modules de politique.
Andy Lester - sage sage et maître des tests de toutes les choses.
Elliot Shank - Le monstre de qualité autoproclamée.
Giuseppe Maxia - Pour toutes les grandes idées et les encouragements positifs.
Et Sharon, ma femme - pour avoir adopté mes séances de code toute la nuit.
Merci également à la Fondation Perl pour avoir fourni une subvention pour soutenir le projet de Chris Dolan pour mettre en œuvre vingt politiques PBP. http://www.perlfoundation.org/april_1_2007_new_grant_awards
Merci également à cette liste de blanchisserie incomplète des gens qui ont contribué à Perl :: Critic d'une manière ou d'une autre: Gregory Oschwald, Mike O'Regan, Tom Hukins, Omer Gazit, Evan Zacks, Paul Howarth, Sawyer X, Christian Walde, Dave Rolsky, Jakub Wilk, Roy IIVy III, OLIVER TROSIEN, GLENN, GLENNE, MATTER CRIVYI III, OLIVER TROSIEN, GLENN, GLENNE, MATTER CRÉRENCE IIII, OLIVER TROSIEN, GLENN, MATT Balhatchet, Sebastian Paaske Tørholm, Stuart A Johnston, Dan Book, Steven Humphrey, James Raspass, Nick Tonkin, Harrison Katz, Douglas Sims, Mark Fowler, Alan Berndt Guillaume Aubert, Dave Cross, Anirvan Chatterjee, Todd Rinaldo, Graham Ollis, Karen Etheridge, Jonas Brømsø, Olaf Alders, Jim Keenan, Slave Rezić, Szymon Nieznański.
Jeffrey Ryan Thalhammer [email protected]
Copyright (C) 2005-2018 Systèmes logiciels imaginatifs. Tous droits réservés.
Ce programme est un logiciel gratuit; Vous pouvez le redistribuer et / ou le modifier dans les mêmes termes que Perl lui-même. Le texte intégral de cette licence peut être trouvé dans le fichier de licence inclus dans ce module.