# Probleme mit Checkstyle , v.a. Klammersetzung



## mic_checker (7. Mrz 2006)

Hi,
also ich hab mich im Rahmen eines größeren Projekts für die Stilanalyse für Checkstyle entschieden, da es leicht konfigurierbar und erweiterbar ist. Ebenso bringt es standardmäßig schon viele Checks mit (fast schon zu viele *g*).
Bis jetzt hab ich auch die Basisfunktionalität eingestellt , allerdings scheint es v.a. mit der Klammsetzung so seine Probleme zu haben.

Btw. ich mein http://checkstyle.sourceforge.net/ in der aktuellen Version (4.1).

So tritt unter anderem folgendes Problem auf: 
Überschreitet eine Zeile die maximal zulässige Zeilenlänge, so werden Fehler in der darauf folgenden Klammersetzung
nicht richtig erkannt.


```
if(Bedingung1 && Bedingung2 && ....) 
{
...
}
```

Solange die if-Zeile kürzer ist als die maximale Länge meckert er korrekt das die Klammer so gesetzt werden sollte:


```
if(...) {

}
```

Überschreitet die Zeile die maximale Länge, so meckert er nicht mehr und meldet keinen Fehler.

Bisher habe ich einfach in der Konfigurationsdatei die maximale Länge hochgestellt, aber diese Lösung gefällt mir auch nicht wirklich.

Zudem scheint es auch Probleme mit der schließenden klammer zu geben. Dort steht die Property von "option" auf "same", da ich folgende Klammersetzung will:

```
if(...) {

} else {

}
```

und nicht (wie es standardmäßig eingestellt ist):

```
if(..) {

}
else 
{

}
```

Funktioniert für if etc. auch soweit ganz gut, aber bei Methoden und Konstruktoren gibt es Probleme , da folgendes
ohne "Fehlermeldungen" akzeptiert wird:


```
public void methode1() { .... }
```

Sollte aber sein:

```
public void methode1() {
...
}
```

Hab auch schon versucht das Problem zu beheben, in dem ich was an der Einstellung von "tokens" verändert habe,
bisher hat es allerdings nichts gebracht.

Vielleicht bin ich ja einfach nur blind...

Danke schon mal im Voraus, wenn ihr weitere Informationen braucht sagt einfach bescheid.


----------



## mic_checker (10. Mrz 2006)

Da der betreuende Professor eine andere Klammersetzung bevorzugt, habe ich in der Konfigurationsdatei
entsprechend die Optionen angepasst, so dass die linke oeffnende Klammer nun immer in einer neuen
Zeile steht (nicht so wie beim meinem vorherigen Post....), auch wenn mir persoenlich diese Art nicht gefaellt.

Man koennte ja nun viel. vermuten das der obige Fehler auch da auftritt, sprich:


```
if(....) {

}
```

muesste die fehlerhafte Klammersetzung nicht erkennen wenn maxLineLength ueberschritten wurde.

Doch seltsamerweise erkennt er in diesen Faellen die fehlerhafte Klammersetzung korrekt. Dabei hab
ich die Angabe von maxLineLength auf dem Standardwert gelassen.

Kann sowieso nicht verstehen was die "maxLineLength" Option fuer einen Sinn macht bei der Klammersetzung....naja...egal....


----------



## Leroy42 (10. Mrz 2006)

Hmm! Wie es aussieht, kennt sich hier niemand so *genau* mit Checkstyle aus,
um dir helfen zu können.

Ich zum Beispiel kenne es noch nicht mal


----------



## Bleiglanz (12. Mrz 2006)

ich kenne es, aber die Feinheiten der checkstyle.xml sind zu kompliziert, steht aber alles in der Doku auf der Homepage


----------



## mic_checker (12. Mrz 2006)

ja, aber hierbei scheint es sich eher um einen Bug zu handeln und die Doku hilft in dem Fall auch nicht weiter. Mit den andern Einstellungen funktioniert es ja richtig...Solangs bei den aktuellen Einstellungen bleibt funktioniert es ja, das zählt erstma...auch wenn ich mich frag warums anders nicht geht...


----------



## flanker (12. Mrz 2006)

```
<module name="LeftCurly">
    <property name="option" value="nl"/>
</module>
```
das hier hast du eingestellt?
Tag-Länge richtig eingestellt?

Ich kann schwer vorstellen, dass dafür keine Einstellung gibt, steht bestimmt in Docs drin!


----------



## mic_checker (12. Mrz 2006)

Mit "nl" funktioniert es ja richtig, aber mit "eol" nicht, wie oben beschrieben.


----------



## flanker (12. Mrz 2006)

falls du wie folgt formatierst:

```
void method1() {

}
```
dann _eol_ setzen(bzw. brauchts du nichts machen, da es per default so ist), aber wenn:

```
void method1()
{

}
```
schreibst dann *musst* du _nl_ setzen damit Checkstyle richtig funktioniert,
oder habe ich dein Problem falsch verstanden?


----------



## mic_checker (13. Mrz 2006)

ja, scheinbar hast du es falsch verstanden.

Ganz kurz: Es geht darum das wenn man eine Zeile hat:


```
if(...) 
{
..
}
```
und eol ist gesetzt, so muss er einen Fehler melden, allerdings macht er das nicht wenn die Zeile länger ist als maxLineLength. Darum gehts.


----------

