Da ich dieses Problem in einem meiner Projekte auch hatte und sicher viele über die Suchmaschine ihres Vertrauens bei diesem Thread auskommen, poste ich hier noch die Lösung die für mich funktioniert hat. (Eclipse 3.7 mit Checkstyle-Plugin 5.3)
In unserer Checkstyle-Konfiguration sind die beiden Module
- TypeName (für Klassen, also "CLASS_DEF" Tokens)
- AbstractClassName
mit dem gleichen RegEx "^[A-Z][a-zA-Z_0-9]{1,34}$" zur Namensprüfung enthalten.
Seit Checkstyle Version 5.3 gibt es im Modul AbstractClassName einen zusätzlichen Check, ob die geprüfte Klasse den Modifier abstract hat (
checkstyle - Release Notes). Dieser greift scheinbar auch dann ab und zu (bei mir nicht bei allen Klassen) wenn es eine normale Klasse ist, die eben auch den RegEx für abstrakte Klassen erfüllt.
Um das zu umgehen gibt es folgende Möglichkeit:
In der externen Checkstyle Xml-Konfiguration folgendes ergänzen (rot markiert):
<module name="AbstractClassName">
<property name="severity" value="warning"/>
<property name="format" value="^[A-Z][a-zA-Z_0-9]{1,34}$"/>
<property name="ignoreModifier" value="true"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="warning"/>
</module>
Leider gibt das aktuelle Eclipse Checkstyle Plugin 5.3 keine Möglichkeit her, diese Property über den Editor zu setzen. Wenn man das AbstractClassName Modul per eclipse-cs editiert, wird die ergänzte Zeile sogar wieder gelöscht da scheinbar das ganze Tag neu generiert wird.
Es gibt dazu einen Feature Request bei eclipse-cs, vielleicht ist es bald ja auch darüber möglich.
Hoffe das erspart einigen die Sucherei im Netz.