2016-04-11 21 views
3

Çalıştığım bir projede çok fazla özel Checkstyle kontrolümüz var. Örneğin, RegexpSingleline modüllerini kullanarak her tür şeyi hariç tutuyoruz.xml tabanlı özel modül tanımlamak için çek stili denetimlerini yeniden kullanma

Maalesef
<?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"> 
<module name="Checker"> 

    <!-- Disable this --> 
    <module name="RegexpSingleline"> 
     ... 
    </module> 

    <!-- Disable that --> 
    <module name="RegexpSingleline"> 
     ... 
    </module> 

    ... 
</module> 

, bu biz bir dosya için bir çek devre dışı bırakmak istediğiniz zaman, genellikle örneğin tüm bu RegexpSingleline dayalı bir çok çeklerin devre dışı bırakarak sona anlamına gelir: Bizim checkstyle kuralları benziyor .

beklediğim olurdu, ama, olasılık tanımlamak için "kompozit" çek gibi bir şey bulmak gibi olamaz:

<?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"> 
<module name="Checker"> 

    <!-- Disable this --> 
    <myCheck name="DisableNastyThing1"> 
     <module name="RegexpSingleline"> 
      ... 
     </module> 
    </myCheck> 

    <!-- Disable that --> 
    <myCheck name="DisableNastyThing2"> 
     <module name="RegexpSingleline"> 
      ... 
     </module> 
    </myCheck> 

    ... 
</module> 

bir modül bastırmak gibi tam olarak çalışacak DisableNastyThing1 veya DisableNastyThing2 Bastırma. Başka bir deyişle, myCheck XML öğesi adı, denetimin, AbstractCheck'i uygulayan gerçek bir Java sınıfı ile eşlenmemiş olduğunu, ancak bunun yerine, içine yerleştirilmiş olan çekleri yürüten bazı genel denetimlere eşlendiğini gösterir.

Checkstyle'de böyle bir kavram var mıdır?

cevap

0

Çok gibi her çek bir id özelliği ekleyebilirsiniz: Sonra

<!-- Disable this --> 
<module name="RegexpSingleline"> 
    <property name="id" value="DisableNastyThing1"/> 
    ... 
</module> 

<!-- Disable that --> 
<module name="RegexpSingleline"> 
    <property name="id" value="DisableNastyThing2"/> 
    ... 
</module> 

sizin suppressions.xml yılında, gerekiyorsa kimlik başvurabilirsiniz:

<suppress files="some/files/" id="DisableNastyThing1" /> 
<suppress files="some/other/files/" id="DisableNastyThing2" /> 

yılında Bu şekilde, hepsine değil, yalnızca bazı RegexpSingleLine örneklerini bastırırsınız. Bununla birlikte, kontrol örneklerinin gruplarını tanımlamak mümkün değildir. Başka bir deyişle, DisableNastyThing1 ve DisableNastyThing2'u DisableNastyThings içine gruplamak için bir sözdizimi yoktur ve bunu bastırmalarda bulabilirsiniz.