2014-04-23 21 views
5

Attualmente sto migrando il mio progetto applicativo da Eclipse basato su Ant a Studio Android basato su Gradle. Il mio progetto eclissi ha un controllo Checkstyle personalizzato configurato come personalizzato e il pacchetto personalizzato è quindi incluso nel XML di configurazione Checkstyle. Ho riscontrato problemi con la migrazione di questo controllo personalizzato su Android Studio. Non sono sicuro su dove posso indicare gradle per ritirare questo pacchetto personalizzato. Bloccato a questo problema per un paio di giorni! Ogni aiuto è molto apprezzato ...Checkstyle controllo personalizzato con gradle (android studio)

Attualmente in esecuzione in errore TreeWalker non riuscendo a creare un'istanza del pacchetto personalizzato:

[Errore]

Unable to create a Checker: cannot initialize module TreeWalker - Unable to instantiate jp.myproject.tools.checkstyle.checks.naming.MemberNameCheck 

[checkstyle-packages.xml]

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE checkstyle-packages PUBLIC 
"-//Puppy Crawl//DTD Package Names 1.0//EN" 
"http://www.puppycrawl.com/dtds/packages_1_0.dtd"> 

<checkstyle-packages> 
    <package name="jp.myproject.tools.checkstyle.checks.naming" /> 
</checkstyle-packages> 

[Checkstyle config 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"> 

<!-- 
    This configuration file was written by the eclipse-cs plugin configuration editor 
--> 
<!-- 
    Checkstyle-Configuration: myproject android checks 
    Description: none 
--> 
<module name="Checker"> 
    <property name="severity" value="warning"/> 
    <property name="charset" value="UTF-8" /> 
    <module name="TreeWalker"> 
    <property name="tabWidth" value="4"/> 
    <module name="FileContentsHolder"/> 
    <module name="CyclomaticComplexity"> 
     <property name="severity" value="info"/> 
     <property name="max" value="15"/> 
    </module> 
    <module name="NPathComplexity"> 
     <property name="severity" value="info"/> 
     <property name="max" value="200"/> 
    </module> 
    <module name="JavadocMethod"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="JavadocType"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="JavadocVariable"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="JavadocStyle"> 
     <property name="severity" value="ignore"/> 
     <property name="endOfSentenceFormat" value="([。.?!][ \t\n\r\f&lt;])|([。.?!]$)"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="AbstractClassName"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ClassTypeParameterName"> 
     <property name="format" value="^[A-Z][a-zA-Z]*$"/> 
    </module> 
    <module name="ConstantName"> 
     <property name="format" value="^[A-Z_][A-Z0-9_]*(_[A-Z0-9]+)*$"/> 
    </module> 
    <module name="LocalFinalVariableName"/> 
    <module name="LocalVariableName"/> 
    <module name="MemberName"> 
     <property name="applyToProtected" value="false"/> 
     <property name="applyToPackage" value="false"/> 
     <property name="applyToPrivate" value="false"/> 
     <property name="format" value="^[a-zA-Z0-9]*$"/> 
    </module> 
    <module name="jp.myproject.tools.checkstyle.checks.naming.MemberNameCheck"> 
     <property name="applyToPublic" value="false"/> 
     <property name="applyToNestedClassMember" value="false"/> 
     <property name="format" value="^m[A-Z][a-zA-Z0-9]+$"/> 
    </module> 
    <module name="MethodName"/> 
    <module name="MethodTypeParameterName"/> 
    <module name="PackageName"/> 
    <module name="ParameterName"/> 
    <module name="StaticVariableName"/> 
    <module name="TypeName"/> 
    <module name="AvoidStarImport"> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="IllegalImport"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="RedundantImport"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="UnusedImports"> 
     <property name="processJavadoc" value="true"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="LineLength"> 
     <property name="severity" value="ignore"/> 
     <property name="max" value="100"/> 
     <property name="tabWidth" value="4"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MethodLength"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ParameterNumber"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="EmptyForIteratorPad"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="GenericWhitespace"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MethodParamPad"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="NoWhitespaceAfter"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="NoWhitespaceBefore"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="OperatorWrap"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ParenPad"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="TypecastParenPad"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="WhitespaceAfter"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="WhitespaceAround"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ModifierOrder"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="RedundantModifier"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="AvoidNestedBlocks"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="EmptyBlock"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="LeftCurly"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="NeedBraces"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="RightCurly"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="DoubleCheckedLocking"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="EmptyStatement"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="EqualsHashCode"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="HiddenField"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="IllegalInstantiation"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="InnerAssignment"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MagicNumber"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MissingSwitchDefault"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="RedundantThrows"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="SimplifyBooleanExpression"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="SimplifyBooleanReturn"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="DesignForExtension"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="FinalClass"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="HideUtilityClassConstructor"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="InterfaceIsType"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="VisibilityModifier"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ArrayTypeStyle"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="FinalParameters"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="TodoComment"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="UpperEll"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="AnnotationUseStyle"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MissingDeprecated"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="MissingOverride"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="PackageAnnotation"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="SuppressWarnings"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="StringLiteralEquality"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ArrayTrailingComma"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="UnnecessaryParentheses"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="OneStatementPerLine"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="ParameterAssignment"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="PackageDeclaration"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="NoFinalizer"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="NestedTryDepth"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="DefaultComesLast"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="GenericWhitespace"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="EmptyForInitializerPad"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="DeclarationOrder"> 
     <property name="severity" value="ignore"/> 
     <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    </module> 
    <module name="NewlineAtEndOfFile"> 
    <property name="severity" value="ignore"/> 
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="Translation"> 
    <property name="severity" value="ignore"/> 
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="FileLength"> 
    <property name="severity" value="ignore"/> 
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="FileTabCharacter"/> 
    <module name="JavadocPackage"> 
    <property name="severity" value="ignore"/> 
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="RegexpSingleline"> 
    <property name="severity" value="ignore"/> 
    <property name="format" value="\s+$"/> 
    <property name="message" value="Line has trailing spaces."/> 
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/> 
    </module> 
    <module name="SuppressionCommentFilter"/> 
    <module name="SuppressWithNearbyCommentFilter"> 
    <property name="commentFormat" value="CHECKSTYLE IGNORE THIS LINE"/> 
    <property name="checkFormat" value=".*"/> 
    <property name="influenceFormat" value="0"/> 
    </module> 
    <module name="StrictDuplicateCode"> 
     <property name="severity" value="info"/> 
    </module> 
</module> 
+0

Qual è il tuo 'build.gradle'? Puoi avere un'idea di come eseguire checkstyle da questo progetto: https://github.com/stephanenicolas/Quality-Tools-for-Android/blob/master/build.gradle –

+0

Ben checkstyle come tale funziona bene senza il pacchetto checkstyle personalizzato . Ho configurato il checkstyle in base a questo progetto [https://github.com/marcoRS/volley-examples]. L'errore si verifica quando provo ad aggiungere il pacchetto checkstyle personalizzato – Vishy

+0

Quale versione di Checkstyle hai usato con formica? Perché l'opzione '-n packageNamesFile' è stata rilasciata per Checkstyle 5.0. Il plugin Gradle utilizza Checkstyle 5.6. Dovresti inserire 'checkstyle-packages.xml' nella root del tuo jar con i controlli personalizzati come dice la documentazione: http://checkstyle.sourceforge.net/config.html#Packages o aggiorna il file di configurazione checkstyle per usare il nome completo del pacchetto per il custom controlli. –

risposta

1

Supponendo che si sta utilizzando il checkstyle Gradle standard di plugin che si deve solo bisogno di aggiungere

dependencies { 
    checkstyle 'custom:checkstyle:0.01' //Replace this with a dependency on your custom checkstyle code. 
} 

che estenderà il percorso di classe del plugin checkstyle per includere il pacchetto supplementare.

Se non si dispone di un repository Maven/Ivy interno per estrarre il codice, sarà probabilmente necessario esaminare lo dependency documentation su come specificare le dipendenze del file o del progetto.

+0

Scusate ma questo non funziona per me! Ho provato un bel po 'di schemi per aggiungere dipendenze come "checkstyle fileTree (dir:' src ', include:' *. Java ')" ecc ma gradle non riconosce il controllo personalizzato } – Vishy

+2

Aggiunta di file sorgente al classpath vinto fare qualcosa di utile Avrai bisogno del codice compilato sul classpath di checkstyle. Se le estensioni stile di controllo sono anche nella stessa struttura di origine dovresti essere in grado di aggiungere 'tasks.withType (Checkstyle) {checkstyleClasspath + = checkstyleMain.classpath}' al tuo file di build e rimuovere il precedente suggerimento di aggiungere un blocco di dipendenze. Questo aggiungerà il codice dalla sorgente principale impostata al percorso classe di runtime checkstyles. – devmop

Problemi correlati