
Perl :: 비평가 - 최고 실습에 대한 비평 Perl 소스 코드.
use Perl::Critic;
my $file = shift;
my $critic = Perl::Critic->new();
my @violations = $critic->critique($file);
print @violations;
Perl :: Critic은 Perl 소스 코드에 코딩 표준을 작성하고 적용하기위한 확장 가능한 프레임 워크입니다. 기본적으로 정적 소스 코드 분석 엔진입니다. Perl :: 비평가는 다양한 코딩 가이드 라인을 시행하려는 많은 Perl :: 비평가 :: 정책 모듈로 배포됩니다. 대부분의 정책 모듈은 Damian Conway의 Book Perl 모범 사례를 기반으로합니다. 그러나 Perl :: 비평가는 PBP에만 국한되지 않으며 Conway와 모순되는 정책을 지원할 것입니다. Perl :: 비평가 인터페이스를 통해 해당 경찰을 활성화, 비활성화 및 사용자 정의 할 수 있습니다. 자신의 취향에 맞는 새로운 정책 모듈을 만들 수도 있습니다.
Perl :: 비평가의 명령 줄 인터페이스는 perlcritic에 대한 문서를 참조하십시오. Perl :: 비평가를 빌드 프로세스와 통합하려면 Test :: Perl :: Critic은 테스트 프로그램에 적합한 인터페이스를 제공합니다. 또한 Test :: Perl :: Critic :: Progressive는 레거시 코드에 코딩 표준을 점차적으로 적용하는 데 유용합니다. 궁극적 인 편의성은 (약간의 유연성을 희생시키면서) 비판 Pragma를 참조하십시오.
아무것도 설치하지 않고 Perl :: 비평가를 시도하고 싶다면 http://perlcritic.com에는 웹 서비스가 있습니다. 웹 서비스는 기본 Perl :: Critic API에서 사용할 수있는 모든 구성 기능을 아직 지원하지는 않지만 그것이 무엇을하는지에 대한 좋은 아이디어를 제공해야합니다.
또한 ActivePerl에는 perlcritic-gui 라는 perl-critic에 대한 매우 매끄러운 그래픽 인터페이스가 포함되어 있습니다. http://www.activestate.com에서 ActivePerl의 무료 커뮤니티 에디션을받을 수 있습니다.
Perl :: 비평가는 Perl 5.10.1로 돌아갑니다. PPI 모듈에 의존하여 Parsing 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 :: 비평가 대상에 대한 참조를 반환합니다. 대부분의 인수는 Perl :: Critic :: Config로 직접 전달되었지만 여기에서도 설명했습니다. 모든 인수의 기본값은 .perlcriticrc 파일에 정의 될 수 있습니다. 자세한 내용은 "구성"섹션을 참조하십시오. 모든 인수는 다음과 같이 선택적인 키 값 쌍입니다.
-profile은 구성 파일의 경로입니다. $FILE 정의되지 않은 경우, perl :: critic :: config는 현재 디렉토리에서 .perlcriticrc configuration 파일을 찾은 다음 홈 디렉토리에서 찾으려고 시도합니다. 또는 다른 위치에있는 파일을 가리하도록 PERLCRITIC 환경 변수를 설정할 수 있습니다. 구성 파일을 찾을 수 없거나 $FILE 빈 문자열 인 경우 모든 정책에 기본 구성이로드됩니다. 자세한 내용은 "구성"을 참조하십시오.
-Severity 는 최소 심각도 수준입니다. 심각도가 $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 비판으로 내려갑니다.
-테마는 해당 테마를 기반으로 적용 할 정책을 결정하는 특별한 표현입니다. 예를 들어, 다음은 '버그'및 'PBP'테마가있는 정책 만로드합니다.
my $critic = Perl::Critic->new( -theme => 'bugs && pbp' );
-severity 옵션이 명시 적으로 주어지지 않는 한 -theme 조용히 설정하면 -severity 1으로 설정됩니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다. 테마에 대한 자세한 내용은 "정책 테마"섹션을 참조하십시오.
-include는 문자열 @PATTERNS 목록에 대한 참조입니다. 하나 이상의 m/$PATTERN/ixms 일치하는 정책 모듈은 다른 모든 설정에 관계없이 항상로드됩니다. 예를 들어:
my $critic = Perl::Critic->new(-include => ['layout'], -severity => 4);
이로 인해 Perl :: Critic은 모든 CodeLayout::* 정책 모듈이 4 미만인 심각도 레벨을 적용 할 수 있습니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다. -exclude 옵션과 함께 -include 사용할 수도 있습니다. -exclude 는 정책이 두 패턴과 일치 할 때 -include 보다 우선합니다.
-exclude 는 문자열 @PATTERNS 목록에 대한 참조입니다. 하나 이상의 m/$PATTERN/ixms 일치하는 정책 모듈은 다른 모든 설정에 관계없이로드되지 않습니다. 예를 들어:
my $critic = Perl::Critic->new(-exclude => ['strict'], -severity => 1);
이로 인해 Perl :: 비평가는 1보다 큰 심각도 레벨이 있더라도 RequireUseStrict 및 ProhibitNoStrict 정책 모듈을 적용하지 않아야합니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다. -include 옵션과 함께 -exclude 사용할 수도 있습니다. -exclude 는 정책이 두 패턴과 일치 할 때 -include 보다 우선합니다.
-Single-Policy 는 문자열 PATTERN 입니다. m/$PATTERN/ixms 와 일치하는 하나의 정책 만 사용됩니다. 일치하지 않는 정책은 제외됩니다. 이 옵션은 -severity , -theme , -include , -exclude 및 -only 옵션보다 우선합니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다.
-Top은 심각도 수준에 의해 순위가 매겨 질 때 반환 할 최대 위반 수입니다. 이것은 긍정적 인 정수 여야합니다. 위반은 여전히 파일 내에서 발생하는 순서대로 반환됩니다. -severity 옵션이 명시 적으로 주어지지 않는 한 -top 설정은 -severity 1으로 설정하게합니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다.
-만 부울 가치입니다. 진정한 가치로 설정된 경우, Perl :: Critic은 사용자의 프로필에 언급 된 정책 중에서 만 선택합니다. 거짓 값 (기본값)으로 설정하면 Perl :: 비평가는 귀하의 사이트에서 찾은 모든 정책 중에서 선택합니다. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다.
-profile-strictness 는 perl :: critic :: utils :: utils (기본값), "$ profile_strictness_fatal"의 "$ profile_strictness_warn"중 하나 인 열거 된 값입니다. Perl :: utils :: Constants 및 "$ profile_strict_quiet"에서 :: utils :: Constants :: Constants. perl :: ritils :: utils :: constants에서 "$ profile_strictness_fatal"으로 설정된 경우, perl :: 비평가는 -profile 옵션 치명적인 .perlcriticrc 옵션을 통해 지정된 파일에서 발견 된 문제에 대해 특정 경고를 할 것입니다. 예를 들어, Perl :: 비평가는 일반적으로 존재하지 않는 정책을 언급하는 프로파일에 대해서만 warn 하지만이 가치는이 상황이 치명적입니다. 이에 따라, perl :: itils :: constants의 "$ profile_strictness_quiet"은 Perl :: 비평가를 이런 것들에 대해 닥치게합니다.
-Force는 Perl :: 비평가가 코드에서 마법의 "## no critic" 주석을 관찰하는지 여부를 제어하는 부울 가치입니다. 진정한 값으로 설정되면 Perl :: Critic은 모든 코드를 분석합니다. False 값 (기본값)으로 설정된 경우 Perl :: Critic은 이러한 주석으로 태그가 지정된 코드를 무시합니다. 자세한 내용은 "규칙 굽힘"을 참조하십시오. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다.
-Verbose는 양의 정수 (1에서 11까지) 또는 문자 형식 사양 일 수 있습니다. 형식 사양에 대한 설명은 Perl :: Critic :: 위반을 참조하십시오. .perlcriticrc 파일 에서이 옵션의 기본값을 설정할 수 있습니다.
-Unsafe 는 Perl :: 비평가에게 저자가 "안전하지 않은"것으로 표시된 정책을 사용하도록 지시합니다. 이러한 정책은 신뢰할 수없는 코드를 수집하거나 다른 사악한 일을 할 수 있습니다.
-Color 와 -pager는 Perl :: 비평가에 의해 사용되지 않지만 perlcritic의 이익을 위해 제공됩니다.
-Criticism-Fatal은 Perl :: 비평가에 의해 사용되지 않지만 비판의 이익을 위해 제공됩니다.
-Color-Severity-High High , -Color-Severity-High , -Color-Severity- Medium , -Color-Severity-Low 및 -Color-Severity-Lowest는 Perl :: 비평가에 의해 사용되지 않지만 Perlcritic의 이점을 위해 제공됩니다. 각각은 해당 심각도 위반을 표시하는 데 사용되는 용어로 설정됩니다.
파일-폭력 및 파일이 있는 파일은 Perl :: 비평가에 의해 사용되지 않지만, 관련 파일 이름 만 표시되도록 perlcritic의 이점을 위해 제공됩니다.
critique( $source_code )
이 엔진에로드 된 모든 정책을 사용하여 Perl :: 비평가 엔진을 통해 $source_code 실행합니다. $source_code 가 스칼라 참조 인 경우 실제 Perl 코드 문자열로 취급됩니다. $source_code 가 ppi :: 문서의 인스턴스에 대한 참조 인 경우 해당 인스턴스가 직접 사용됩니다. 그렇지 않으면 Perl 코드를 포함하는 로컬 파일의 경로로 취급됩니다. 이 메소드는로드 된 정책의 각 위반에 대해 Perl :: Critic :: 위반 개체 목록을 반환합니다. 목록은 위반이 코드에 나타나는 순서대로 정렬됩니다. 위반이없는 경우이 메소드는 빈 목록을 반환합니다.
add_policy( -policy => $policy_name, -params => %param_hash )
정책 대상을 만들어이 비평가에로드합니다. 객체를 인스턴스화 할 수 없으면 치명적인 예외가 발생합니다. 그렇지 않으면, 그것은이 비평가에 대한 언급을 반환합니다.
-policy 는 perl :: critic :: 정책 서브 클래스 모듈의 이름입니다. 이름의 'Perl::Critic::Policy' 부분은 간결하게 생략 될 수 있습니다. 이 주장은 필요합니다.
-Params 는 정책 매개 변수 해시에 대한 선택적 참조입니다. 이 해시 참조의 내용은 정책 모듈의 생성자로 전달됩니다. 지원하는 인수에 대한 설명은 관련 정책 모듈의 문서를 참조하십시오.
policies()
이 엔진에로드 된 모든 정책 개체에 대한 참조가 포함 된 목록을 반환합니다. 객체는로드 된 순서대로됩니다.
config()
이 비평가를 위해 만들어 지거나 주어진 perl :: critic :: config 객체를 반환합니다.
statistics()
이 비평가를 위해 만들어진 perl :: 비평가 :: 통계 개체를 반환합니다. 통계 객체는이 비평가가 분석 한 모든 파일에 대한 데이터를 축적합니다.
기능 인터페이스를 선호하는 사람들에게는 요청시 critique 방법을 내보내고 정적 기능으로 호출 할 수 있습니다. 첫 번째 인수가 해시 프르 인 경우 내용은 내부적으로 새로운 perl :: 비평가 대상을 구성하는 데 사용됩니다. 해시의 열쇠는 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 :: 비평가 및 각 정책 모듈의 대부분의 설정은 구성 파일로 제어 할 수 있습니다. 기본 구성 파일은 .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 :: 비평가와 함께 배포 된 정책 모듈은 Damian Conway의 Book 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"또는 빈 문자열을 지정하십시오.
나머지 키 값 쌍은 해당 정책의 생성자로 전달되는 구성 매개 변수입니다. 대부분의 정책 오브젝트의 생성자는 인수를 지원하지 않으며, 이는 합리적인 기본값이 있어야합니다. 자세한 내용은 해당 정책 모듈의 문서를 참조하십시오.
주어진 정책의 심각도를 재정의하는 대신 구성 파일의 모듈 이름으로 a '-'를 선물하여 정책을 완전히 비활성화 할 수 있습니다. 이런 식으로, 정책은 perl :: 비평가 생성자에게 주어진 -severity 에 관계없이 절대로로드되지 않을 것입니다.
간단한 구성은 다음과 같습니다.
#--------------------------------------------------------------
# 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.
추가 구성 예는이 배포 의이 examples 디렉토리에 포함 된 perlcriticrc 파일을 참조하십시오.
Damian Conway의 자체 Perl :: 비평가 구성 도이 분포에 examples/perlcriticrc-conway 로 포함됩니다.
많은 정책 모듈이 Perl :: 비평가와 함께 배포됩니다. 그것들은 동반자 문서 perl :: critic :: policysummary에 간단히 설명하고 개별 모듈 자체에 더 자세히 설명되어 있습니다. Regex m/PATTERN/ixms 와 일치하는 모든 정책 모듈에 대한 Perldoc을보기 위해 "perlcritic -doc PATTERN" 이라고 말하십시오.
CPAN에는 여러 정책이 여러 차례 있습니다. Perl :: 비평가가 원하는 정책이 포함되어 있지 않다면 어떤 정책은 이미 작성했을 수도 있습니다. 이 배포판 중 일부 목록은 아래의 "또한"섹션을 참조하십시오.
각 정책은 하나 이상의 "테마"로 정의됩니다. 테마는 임의의 정책 그룹을 만드는 데 사용될 수 있습니다. 그들은 선호하는 정책 세트를 선택하기위한 대안 메커니즘을 제공하기위한 것입니다. 예를 들어, 테스트 프로그램을 분석 할 때 특정 정책의 일부 하위 집합을 비활성화 할 수 있습니다. 반대로 모듈을 분석 할 때 특정 정책의 일부만 활성화 할 수 있습니다.
Perl :: 비평가와 함께 배송되는 정책은 다음 주제로 나뉘어졌습니다. 이것은 기본 논리 그룹화를 제공하려는 우리의 시도 일뿐입니다. 당신은 당신의 요구에 맞는 새로운 테마를 자유롭게 발명 할 수 있습니다.
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 :: 비평가는 코드에 대한 하드 라인 접근 방식을 취합니다. 실제 세계에서는 코딩 표준을 완전히 준수하는 것이 항상 실용적이지는 않습니다. 그러한 경우, 당신이 표준을 고의로 위반하고 있으며 그렇게할만한 이유 (DGR)가 있음을 보여주는 것이 현명합니다.
이러한 상황을 돕기 위해 Perl :: 비평가는 주석을 사용하여 특정 줄이나 코드 블록을 무시하도록 지시 할 수 있습니다.
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" 주석은 "## use critic" 주석이 발견 될 때까지 나머지 코드 줄을 무시하도록 직접 :: 비평가. "## no critic" 주석이 코드 문과 같은 줄에 있으면 해당 코드 줄만 간과됩니다. Perlcritic이 "## no critic" 주석을 무시하도록 지시하려면 --force 옵션을 사용하십시오.
Bare "## no critic" 주석은 모든 활성 정책을 비활성화합니다. 특정 정책 만 비활성화하려면 "no strict" 또는 "no warnings" pragmas와 마찬가지로 정책 이름 목록을 인수로 추가하십시오. 예를 들어, 이것은 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 :: 비평가가 코드에 대해 불평하는 경우이 기능에 의지하기 전에 준수 솔루션을 찾아보십시오.
코딩 표준은 매우 개인적이고 주관적입니다. Perl :: Critic의 목표는 모범 사례 세트를 준수하는 코드를 작성하는 데 도움이됩니다. 우리의 주요 목표는 그러한 관행이 무엇인지 지시하는 것이 아니라 다른 사람들이 발견 한 관행을 구현하는 것입니다. 궁극적으로, 당신은 규칙을 제시합니다 - Perl :: 비평가는 단지 일관성을 장려하기위한 도구 일뿐입니다. 귀하가 중요하다고 생각하거나 간과 한 정책이 있다면 기부에 대해 매우 감사하거나 자신의 개인 정책을 Perl :: 비평가에 간단히로드 할 수 있습니다.
Perl :: 비평가의 모듈 식 설계는 새로운 정책의 추가를 용이하게하기위한 것입니다. PPI에 대한 이해가 필요하지만 대부분의 정책 모듈은 매우 간단하며 약 20 줄의 코드 만 있으면됩니다. 새로운 정책 모듈을 만드는 방법에 대한 단계별 데모를 위해이 배포에 포함 된 Perl :: Critic :: Developer 파일을 참조하십시오.
새로운 정책 모듈을 개발하는 경우 <[email protected]> 로 자유롭게 보내 주시면 Perl :: 비평가 배포에 넣는 것이 기쁩니다. 또는 Perl :: 비평가 프로젝트에서 직접 작업하려면 https://github.com/perl-critic/perl-critic.git에서 저장소를 포크 할 수 있습니다.
Perl :: 비평가 팀도 고용 할 수 있습니다. 조직에 고유 한 코딩 표준이있는 경우 로컬 가이드 라인을 시행하기위한 맞춤 정책을 작성할 수 있습니다. 또는 코드베이스에 특정 결함 패턴이 발생하는 경우 생산에 들어가기 전에 비용이 많이 드는 결함을 잡는 데 도움이되는 정책을 설계 할 수 있습니다. Perl :: 비평가 팀과의 요구에 대해 논의하려면 <[email protected]> 에 문의하십시오.
Perl :: 비평가는 다음 모듈이 필요합니다.
B :: 키워드
구성 :: 작은
예외 :: 클래스
파일 :: 사양
파일 :: spec :: unix
파일 :: 어느
목록 :: someutils
목록 :: util
모듈 :: 플러그 가능
Perl :: 깔끔한
포드 :: 주문
PPI
pod :: 일반 텍스트
포드 :: 선택
포드 :: 사용법
준비 적
스칼라 :: util
문자열 :: 형식
용어 :: Ansicolor
텍스트 :: parsewords
버전
https://groups.google.com/d/forum/perl-critic에서 공개 메일 링리스트를 구독하는 것이 좋습니다. 개발 팀의 최소 한 명의 구성원이 일반적으로 irc : //irc.perl.org/#perlcritic에 매달려 있으며 https://twitter.com/perlcritic에서 Twitter에서 Perl :: 비평가를 따라갈 수 있습니다.
추가 정책에 대한 여러 배포가 있습니다. 일부는 여기에 나열되어 있습니다.
Perl :: 비평가 :: more
Perl :: 비평가 :: 강타
Perl :: 비평가 :: LAX
Perl :: 비평가 :: Strictersubs
Perl :: 비평가 :: 스위프트
Perl :: 비평가 :: tics
이 배포판에서는 단위 테스트에서 Perl :: 비평가를 사용할 수 있습니다.
테스트 :: perl :: 비평가
테스트 :: perl :: 비평가 :: 진보
개발 팀에 알려진 모든 Perl :: 비평가 관련 모듈을 설치할 배포도 있습니다.
과제 :: perl :: 비평가
Perl 코드를 면밀히 조사하는 것은 기계는 물론 인간에게는 어렵습니다. Perl :: Critic :: 정책의 버그, 특히 거짓 양성 또는 거짓 음성을 발견하면 https://github.com/perl-critic/perl-critic/issues에서 제출하십시오. 감사합니다.
Adam Kennedy- PPI, Perl :: 비평가의 마음과 영혼을 창출하기위한.
Damian Conway- Perl 모범 사례 작성을 위해, 마지막으로 :)
Chris Dolan- 최고의 기능과 정책 모듈에 기여한 것.
Andy Lester- 현명한 현자와 모든 시세 테스트의 마스터.
Elliot Shank- 자칭 품질 괴물.
Giuseppe Maxia- 모든 위대한 아이디어와 긍정적 인 격려를 위해.
그리고 아내 인 샤론 - 밤새 코드 세션을 참아주었습니다.
Chris Dolan의 프로젝트를 지원하기위한 보조금을 제공 한 Perl Foundation에도 20 개의 PBP 정책을 구현하기위한 Grant Foundation에도 감사드립니다. http://www.perlfoundation.org/april_1_2007_new_grant_awards
Gregory Oschwald, Mike O'Regan, Tom Hukins, Omer Gazit, Evan Zacks, Paul Howarth, Sawyer X, Christian Walde, Dave Rolsky, Jakub Wilk, Roy Ivy III, Oliver Trosien, Glenn Fowler, Mattal Balhorly, Oliver Trosien Sebastian Paaske Tørholm, Stuart a Johnston, Dan Book, Steven Humphrey, James Raspass, Nick Tonkin, Harrison Katz, Douglas Sims, Mark Fowler, Alan Berndt, Neil Bowers, Sergey Romanov, Gabor Szabo, Graham Knop, Mike Eldridge, David Steiralor, Kirk Kimmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm에서 David Dave Cross, Anirvan Chatterjee, Todd Rinaldo, Graham Ollis, Karen Etheridge, Jonas Brømsø, Olaf Alders, Jim Keenan, Slaven Rezić, Szymon Nieznański.
Jeffrey Ryan Thalhammer [email protected]
저작권 (C) 2005-2018 상상력있는 소프트웨어 시스템. 모든 권리 보유.
이 프로그램은 무료 소프트웨어입니다. Perl 자체와 동일한 용어로 재분배하거나 수정할 수 있습니다. 이 라이센스의 전체 텍스트는이 모듈에 포함 된 라이센스 파일에서 찾을 수 있습니다.