A. SuppressWarnings Lọc
Với checkstyle 6.5.0 Tôi có thể sử dụng @SuppressWarnings. Vui lòng xem xét các điểm sau:
- Bộ lọc SuppressWarnings phải là bật trong cài đặt Kiểu kiểm tra.
- Trong thẻ cho chú thích SuppressWarnings, bạn phải sử dụng tên của mô-đun kiểm tra trong tất cả các chữ thường.
- Tùy chọn một tiền tố "checkstyle:" có thể được sử dụng trong thẻ.
- Nếu chú thích không hoạt động như mong đợi, hãy thử đổi vị trí của nó. Chú thích cho mô-đun MagicNumber cần được đặt trước phương thức. Một số chú thích phải được đặt trực tiếp nơi hiển thị sự cố và các chú thích khác phải được đặt trước định nghĩa lớp.
Một số ví dụ cho các mô-đun checkstyle "MagicNumber":
trình:
@SuppressWarnings("checkstyle:magicnumber")
public example(){
int g = 5;
}
.
@SuppressWarnings("magicnumber")
public example(){
int g = 5;
}
Không làm việc:
@SuppressWarnings("MagicNumber")
public example(){
int g = 5;
}
.
@SuppressWarnings("magicNumber")
public example(){
int g = 5;
}
.
public example(){
@SuppressWarnings("magicnumber")
int g = 5;
}
ghi chú Hơn nữa
tôi nhận được một cảnh báo suppresswarnings không được hỗ trợ mà tôi vô hiệu hóa trong các ưu đãi với Java => Compiler => lỗi/cảnh báo => Chú thích => Unhandled thẻ Eclipse trong '@SuppressWarnings' ': Bỏ qua
Tên (như được định nghĩa trong tệp xml) của mô-đun kiểm tra tương ứng là không được hiển thị trong thông báo vi phạm bật lên khi di chuột qua vấn đề về mã. Tôi đã bật tùy chọn "bao gồm id mô-đun (nếu có) trong thông báo vi phạm" và tự thay đổi tất cả id mô-đun giống với tên mô-đun tương ứng trong tệp xml, nhưng trường hợp thấp hơn. Ví dụ: có một mô-đun < name = "AnonInnerLength" > được hiển thị trong cài đặt kiểu kiểm tra Eclipse là "Độ dài lớp bên trong ẩn danh". Mô-đun đó không có id mô-đun. Tôi đã thay đổi id module để checkstyle: anoninnerlength để làm cho nó dễ dàng hơn cho các đồng nghiệp của tôi để ngăn chặn các cảnh báo:
< tên module = "AnonInnerLength" >
< property name = "id" value = "checkstyle: anoninnerlength "/ >
< mô-đun >
tôi sử dụng tiền tố 'checkstyle:' trong id mô-đun cũng như trong thẻ SuppressWarnings để làm cho nó rõ ràng rằng các cảnh báo không phải là một 'cảnh báo Eclipse chuẩn'. (Tiền tố tùy chọn "checkstyle:" có thể đã được sử dụng trong thẻ mà không thay đổi id mô-đun. Tuy nhiên, tiền tố sẽ không được hiển thị trong thông báo vi phạm. bao gồm tiền tố trong thẻ, quá.)
B. Suppression Comment Lọc
- Bộ lọc checkstyle Filters => Suppression Comment Lọc sử dụng tên mô-đun vì nó được quy định trong xml tập tin.
- Nếu bạn sử dụng tiền tố "checkstyle:", tên mô-đun cũng có thể được sử dụng trong trường hợp thấp hơn.
trình:
//CHECKSTYLE:OFF: checkstyle:magicnumber
public example(){
int g = 5;
}
//CHECKSTYLE:ON: checkstyle:magicnumber
.
//CHECKSTYLE:OFF: MagicNumber
public example(){
int g = 5;
}
//CHECKSTYLE:ON: MagicNumber
Không làm việc:
//CHECKSTYLE:OFF: magicnumber
public example(){
int g = 5;
}
//CHECKSTYLE:ON: magicnumber
C. Ví dụ settings.xml checkstyle file:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
Checkstyle-Configuration with module ids that can be used as
tags in @SuppressWarnings
-->
<module name="Checker">
<property name="severity" value="warning"/>
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="FileContentsHolder"/>
<module name="SuppressWarningsHolder"/>
<module name="JavadocMethod">
<property name="id" value="checkstyle:javadocmethod"/>
<property name="severity" value="ignore"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="suppressLoadErrors" value="true"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="JavadocType">
<property name="id" value="checkstyle:javadoctype"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="JavadocVariable">
<property name="id" value="checkstyle:javadocvariable"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="JavadocStyle">
<property name="id" value="checkstyle:javadocstyle"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="ConstantName">
<property name="id" value="checkstyle:constantname"/>
</module>
<module name="LocalFinalVariableName">
<property name="id" value="checkstyle:localfinalvariablename"/>
</module>
<module name="LocalVariableName">
<property name="id" value="checkstyle:localvariablename"/>
</module>
<module name="MemberName">
<property name="id" value="checkstyle:membername"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="MethodName">
<property name="id" value="checkstyle:methodname"/>
</module>
<module name="PackageName">
<property name="id" value="checkstyle:packagename"/>
</module>
<module name="ParameterName">
<property name="id" value="checkstyle:parametername"/>
</module>
<module name="StaticVariableName">
<property name="id" value="checkstyle:staticvariablename"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="TypeName">
<property name="id" value="checkstyle:typename"/>
</module>
<module name="AvoidStarImport">
<property name="id" value="checkstyle:avoidstarimport"/>
</module>
<module name="IllegalImport">
<property name="id" value="checkstyle:illegalimport"/>
</module>
<module name="RedundantImport">
<property name="id" value="checkstyle:redundantimport"/>
</module>
<module name="UnusedImports">
<property name="id" value="checkstyle:unusedimports"/>
</module>
<module name="ParameterNumber">
<property name="id" value="checkstyle:parameternumber"/>
</module>
<module name="EmptyForIteratorPad">
<property name="id" value="checkstyle:emptyforiteratorpad"/>
</module>
<module name="MethodParamPad">
<property name="id" value="checkstyle:methodparampad"/>
</module>
<module name="NoWhitespaceAfter">
<property name="id" value="checkstyle:nowhitespaceafter"/>
<property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore">
<property name="id" value="checkstyle:nowhitespacebefore"/>
</module>
<module name="OperatorWrap">
<property name="id" value="checkstyle:operatorwrap"/>
<property name="option" value="eol"/>
</module>
<module name="ParenPad">
<property name="id" value="checkstyle:parenpad"/>
</module>
<module name="TypecastParenPad">
<property name="id" value="checkstyle:typecastparenpad"/>
</module>
<module name="WhitespaceAfter">
<property name="id" value="checkstyle:whitespaceafter"/>
</module>
<module name="WhitespaceAround">
<property name="id" value="checkstyle:whitespacearound"/>
</module>
<module name="ModifierOrder">
<property name="id" value="checkstyle:modifierorder"/>
</module>
<module name="RedundantModifier">
<property name="id" value="checkstyle:redundantmodifier"/>
</module>
<module name="LeftCurly">
<property name="id" value="checkstyle:leftcurly"/>
</module>
<module name="NeedBraces">
<property name="id" value="checkstyle:needbraces"/>
</module>
<module name="RightCurly">
<property name="id" value="checkstyle:rightcurly"/>
</module>
<module name="AvoidInlineConditionals">
<property name="id" value="checkstyle:avoidinlineconditionals"/>
</module>
<module name="EmptyStatement">
<property name="id" value="checkstyle:emptystatement"/>
</module>
<module name="HiddenField">
<property name="id" value="checkstyle:hiddenfield"/>
<property name="tokens" value="VARIABLE_DEF"/>
</module>
<module name="IllegalInstantiation">
<property name="id" value="checkstyle:illegalinstantiation"/>
</module>
<module name="InnerAssignment">
<property name="id" value="checkstyle:innerassignment"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="MagicNumber">
<property name="id" value="checkstyle:magicnumber"/>
</module>
<module name="MissingSwitchDefault">
<property name="id" value="checkstyle:missingswitchdefault"/>
</module>
<module name="RedundantThrows">
<property name="id" value="checkstyle:redundantthrows"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="SimplifyBooleanExpression">
<property name="id" value="checkstyle:simplifybooleanexpression"/>
</module>
<module name="SimplifyBooleanReturn">
<property name="id" value="checkstyle:simplifybooleanreturn"/>
</module>
<module name="DesignForExtension">
<property name="id" value="checkstyle:designforextension"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="FinalClass">
<property name="id" value="checkstyle:finalclass"/>
</module>
<module name="HideUtilityClassConstructor">
<property name="id" value="checkstyle:hideutilityclassconstructor"/>
</module>
<module name="VisibilityModifier">
<property name="id" value="checkstyle:visibilitymodifier"/>
</module>
<module name="ArrayTypeStyle">
<property name="id" value="checkstyle:arraytypestyle"/>
</module>
<module name="UpperEll">
<property name="id" value="checkstyle:upperell"/>
</module>
<module name="AnnotationUseStyle">
<property name="id" value="checkstyle:annotationusestyle"/>
</module>
<module name="MissingDeprecated">
<property name="id" value="checkstyle:missingdeprecated"/>
</module>
<module name="MissingOverride">
<property name="id" value="checkstyle:missingoverride"/>
</module>
<module name="PackageAnnotation">
<property name="id" value="checkstyle:packageannotation"/>
</module>
<module name="AbstractClassName">
<property name="id" value="checkstyle:abstractclassname"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="AnonInnerLength">
<property name="id" value="checkstyle:anoninnerlength"/>
</module>
<module name="ExecutableStatementCount">
<property name="id" value="checkstyle:executablestatementcount"/>
<property name="max" value="20"/>
<property name="tokens" value="INSTANCE_INIT,STATIC_INIT,METHOD_DEF,CTOR_DEF"/>
</module>
<module name="LineLength">
<property name="id" value="checkstyle:linelength"/>
<property name="max" value="120"/>
<property name="tabWidth" value="4"/>
</module>
<module name="MethodLength">
<property name="id" value="checkstyle:methodlength"/>
<property name="severity" value="ignore"/>
<property name="max" value="20"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="OuterTypeNumber">
<property name="id" value="checkstyle:outertypenumber"/>
</module>
<module name="RegexpSinglelineJava">
<property name="id" value="checkstyle:regexpsinglelinejava"/>
<property name="format" value="^.*System.out.println.*$"/>
<property name="ignoreComments" value="true"/>
</module>
<module name="AvoidNestedBlocks">
<property name="id" value="checkstyle:avoidnestedblocks"/>
<property name="allowInSwitchCase" value="true"/>
</module>
<module name="CovariantEquals">
<property name="id" value="checkstyle:covariantequals"/>
</module>
<module name="DefaultComesLast">
<property name="id" value="checkstyle:defaultcomeslast"/>
</module>
<module name="DeclarationOrder">
<property name="id" value="checkstyle:declarationorder"/>
</module>
<module name="EqualsHashCode">
<property name="id" value="checkstyle:equalshashcode"/>
</module>
<module name="ExplicitInitialization">
<property name="id" value="checkstyle:explicitinitialization"/>
</module>
<module name="FallThrough">
<property name="id" value="checkstyle:fallthrough"/>
</module>
<module name="IllegalCatch">
<property name="id" value="checkstyle:illegalcatch"/>
</module>
<module name="IllegalThrows">
<property name="id" value="checkstyle:illegalthrows"/>
</module>
<module name="MissingCtor">
<property name="id" value="checkstyle:missingctor"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="ModifiedControlVariable">
<property name="id" value="checkstyle:modifiedcontrolvariable"/>
</module>
<module name="MultipleStringLiterals">
<property name="id" value="checkstyle:multiplestringliterals"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="MultipleVariableDeclarations">
<property name="id" value="checkstyle:multiplevariabledeclarations"/>
</module>
<module name="NestedForDepth">
<property name="id" value="checkstyle:nestedfordepth"/>
<property name="max" value="2"/>
</module>
<module name="NestedIfDepth">
<property name="id" value="checkstyle:nestedifdepth"/>
<property name="max" value="2"/>
</module>
<module name="NestedTryDepth">
<property name="id" value="checkstyle:nestedtrydepth"/>
</module>
<module name="NoClone">
<property name="id" value="checkstyle:noclone"/>
</module>
<module name="NoFinalizer">
<property name="id" value="checkstyle:nofinalizer"/>
</module>
<module name="ParameterAssignment">
<property name="id" value="checkstyle:parameterassignment"/>
</module>
<module name="StringLiteralEquality">
<property name="id" value="checkstyle:stringliteralequality"/>
</module>
<module name="OneStatementPerLine">
<property name="id" value="checkstyle:onestatementperline"/>
</module>
<module name="InnerTypeLast">
<property name="id" value="checkstyle:innertypelast"/>
</module>
<module name="InterfaceIsType">
<property name="id" value="checkstyle:interfaceistype"/>
</module>
<module name="MutableException">
<property name="id" value="checkstyle:mutableexception"/>
</module>
<module name="BooleanExpressionComplexity">
<property name="id" value="checkstyle:booleanexpressioncomplexity"/>
</module>
<module name="ClassFanOutComplexity">
<property name="id" value="checkstyle:classfanoutcomplexity"/>
<property name="max" value="10"/>
</module>
<module name="JavaNCSS">
<property name="id" value="checkstyle:gavancss"/>
<property name="methodMaximum" value="20"/>
</module>
<module name="NPathComplexity">
<property name="id" value="checkstyle:npathcomplexity"/>
<property name="max" value="1200"/>
</module>
<module name="TrailingComment">
<property name="id" value="checkstyle:trailingcomment"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="UncommentedMain">
<property name="id" value="checkstyle:uncommentedmain"/>
</module>
<module name="CyclomaticComplexity">
<property name="id" value="checkstyle:cyclomaticcomplexity"/>
<property name="max" value="7"/>
</module>
<module name="StrictDuplicateCode">
<property name="id" value="checkstyle:strictduplicatecode"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="SuppressWarnings">
<property name="id" value="checkstyle:suppresswarnings"/>
</module>
</module>
<module name="JavadocPackage">
<property name="id" value="checkstyle:javadocpackage"/>
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<module name="Translation">
<property name="id" value="checkstyle:translation"/>
</module>
<module name="FileLength">
<property name="id" value="checkstyle:filelength"/>
<property name="max" value="1000"/>
</module>
<module name="NewlineAtEndOfFile">
<property name="id" value="checkstyle:newlineatendoffile"/>
<property name="fileExtensions" value="*.java"/>
</module>
<module name="SuppressWithNearbyCommentFilter"/>
<module name="SuppressWarningsFilter"/>
<module name="SuppressionCommentFilter">
<metadata name="net.sf.eclipsecs.core.comment" value="Single warning"/>
<property name="offCommentFormat" value="CHECKSTYLE\:OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE\:ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
</module>
Bạn đang sử dụng Checkstyle 5.7 hoặc cao hơn? @SuppressWarnings được hỗ trợ từ 5.7. – satellite779
Tôi cũng gặp vấn đề này với Checkstyle 6.0 – Marcin