2012-01-23 21 views
16

guidelines on the apache site'a göre maven pompasında özel bir kontrol düzeni yapılandırması yapmayı denemek çok basit bir durumda çalışmıyor.Maven Checkstyle configLocation yok sayıldı mı?

ben Maven tarafından (yani src/main/java/src/main/kaynaklar) tavsiye edilen dizin düzenini kullanarak bir proje, MyProject, tek bir dosya MyClass.java yarattı

:

package com.myproject; 

public class MyClass { 

    public static void main(String[] args) { 
     System.out.println("This line is longer than 80 characters which returns an error in sun_checks.xml, however my_checks.xml allows for much longer lines and will not return a long line error."); 
    } 
} 

boş kılavuzda özelliklerine göre

<?xml version="1.0"?> 
<!DOCTYPE module PUBLIC 
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN" 
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"> 

<module name="Checker"> 
    <property name="severity" value="warning"/> 
    <module name="TreeWalker"> 
    </module> 
</module> 

ve pom dosyası:: checkstyle dosya, my_checks.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myproject</groupId> 
    <artifactId>A_Project</artifactId> 
    <name>A Project</name> 
    <version>1.0.0</version> 

    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.8</version> 
     <configuration> 
      <configLocation>my_checks.xml</configLocation> 
     </configuration> 
     </plugin> 
    </plugins> 
    </reporting> 
</project> 

'mvn -X checkstyle: checkstyle', my_checks.xml dosyasındaki yapılandırmayı kullanmak yerine sun_checks.xml (varsayılan) 'ı kullanır; bu da hem sonuçta oluşan checkstyle hataları hem de hata ayıklama çıktısı tarafından görülebilir (örn. '[DEBUG] request.getConfigLocation() config/sun_checks.xml').

Checkstyle.config.location, Carboni tarafından numaralı belgede belirtilen stratejiyi kullanan özelliklerde değiştirilebildiğinden, my_checks.xml dosyasının geçerli olduğunu biliyorum, ancak bu durum çok modüllü projelere taşınırken sorunlara neden olur ve 'Resmi' apache maven checkstyle talimatları. Bu benim için çalışıyor

+0

Yapı xml'iniz tam olarak nerede bulunur? – Corubba

cevap

10

: Ben kök düzeyinde (pom.xml paralel) my_checks.xml yerleştirmek

  1. ve
  2. Wrap (<reporting> aksine) <build> elemanda eklenti

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-checkstyle-plugin:2.8:checkstyle' with basic configurator --> 
[DEBUG] (f) cacheFile = /home/dave/tech/lang/java/web/struts/playground/so/s231_01/target/checkstyle-cachefile 
[DEBUG] (f) configLocation = my_checks.xml 
... etc ... 
[DEBUG] request.getConfigLocation() my_checks.xml 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader 
... etc ... 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.URLResourceLoader. 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader. 
[DEBUG] The resource 'my_checks.xml' was found as /home/dave/tech/lang/java/web/struts/playground/so/s231_01/my_checks.xml. 
0123: bu değişikliklerden sonra

, aşağıdaki bakın

özellikle usage documentation da belirtin: Aşağıdaki örnekte gösterildiği gibi

özellikle Checkstyle Plugin yapılandırmak için, bu uygulamanın pom.xml arasında <build> bölümünde eklemeniz gerekir.

<reporting> kullanımı mvn site içindir.

+2

Teşekkürler Dave Newton! Sorun, yerine kullanıyordu. Maven Checkstyle kılavuzunun site örnekleri yerine checkstyle örneklerini vermesi yararlı olurdu. – HeavyE

+0

@HeavyE Sorun değil :) Teknik olarak, ve [hedefler dokümanlar] (http://maven.apache.org/plugins/maven-checkstyle-plugin/plugin-info.html) eklenti ve raporlama hedefleri arasında ayrım yapar ama terminoloji ile oldukça rahat değilseniz (biraz Maven belgeleri olduğu gibi) biraz opaktır. –

+1

Maven 3 kullanıyorsanız, bkz. https://cwiki.apache.org/MAVEN/maven-3x- uyumluluk -notes.html # Maven3.xCompatibilityNotes-SiteandReporting " bölümündeki eklenti yapılandırması artık POM'un bölümündeki eklentileri etkilemiyor." Maven 2 için raporlama ve oluşturma arasındaki bitleri kopyalamanız gerekebilir. – Bae

22

Evet, apache sitesindeki yönergeleri güncel değil buldum. İnterneti trolleyerek ve bitleri bir araya getirerek birlikte çalışmayı başardım.

<build> etiketine geçmek bir süredir çalıştı, ancak en son denetim stiline güncellendiğinde yeniden yoksayılıyordu.Ben bir özelliği ayarlamak zorunda buldum:

<project ...> 

.... 

    <properties> 
    <checkstyle.config.location>properties/checkstyle-configuration.xml</checkstyle.config.location> 
    </properties> 

    <build> 
    ... 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.9.1</version> 
     </plugin> 
    </plugins> 
    </build> 

    ... 

</project> 

Bu burada bulunan kendi checkstyle özel çeki nasıl oluşturulacağını benim örnek bir parçasıdır:
http://blog.blundellapps.com/create-your-own-checkstyle-check/

ve burada kaynak kodundan alınan :
https://github.com/blundell/CreateYourOwnCheckStyleCheck

+1

Thx! Bu lutfen diğer yapılandırma özellikleri için çalışır: '' Not: konuma: Ben dosyayı eklemek zorunda – IDKFA

İlgili konular