Änderungen von Dokument Checkstyle u. Statische Codeanalyse

Zuletzt geändert von Celina Bock am 2025/09/17 10:43

Von Version 2.1
bearbeitet von Celina Bock
am 2025/07/08 09:32
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 11.3
bearbeitet von Celina Bock
am 2025/07/08 10:16
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -1,166 +1,37 @@
1 -Für die Programmierfächer aus Semester 1 und 2 wurde Checkstyle eingeführt. Bei der Aufgabenerstellung muss der Haken bei "statische Codeanalyse" gesetzt werden. Späteres Hinzufügen von Checkstyle ist umständlich (Export in einen anderen Kurs, Löschen im alten Kurs, erneutes Importieren, dann Haken setzen).
1 +== Checkstyle einrichten ==
2 2  
3 +Für die Programmierfächer aus Semester 1 und 2 wurde Checkstyle eingeführt mit mehr Einschränkungen als es die Java Sun Konvention vorsieht (Zeilenlänge, Npath Complexity und co).
3 3  
5 +Steps
4 4  
5 -<?xml version="1.0"?>
6 -<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">//
7 +* Bei der Aufgabenerstellung muss der Haken bei "statische Codeanalyse" gesetzt werden. //Späteres Hinzufügen von Checkstyle ist umständlich!//
7 7  
9 +[[image:StatCode.png||data-xwiki-image-style-border="true"]]
8 8  
9 -<module name="Checker">
10 - <property name="severity" value="warning" />
11 11  
12 - <property name="fileExtensions" value="java" />
12 +* Weitere Eingaben tätigen und Test Repository clonen.
13 +* Geclontes Repo enthält 3 statische Codeanalyse Tools. Alle Konfigurationsdateien befinden sich unter **staticCodeAnalysisConfig.**
13 13  
14 - <!-- See https://checkstyle.org/filefilters/beforeexecutionexclusionfilefilter.html -->
15 +[[image:1751962116852-287.png]]
15 15  
16 - <module name="BeforeExecutionExclusionFileFilter">
17 - <!-- Filtert alle Dateien, die nicht SortedArray heißen -->
18 - <property name="fileNamePattern" value="^(?!.*([
19 -/])?(SortedArray)\.java$).*" />
20 - </module>
21 21  
22 - <!--    gdp checks-->
23 - <module name="TreeWalker">
24 - <property name="tabWidth" value="4" />
25 - <module name="JavadocMethod">
26 - <property name="accessModifiers" value="public" />
27 - </module>
28 - <module name="JavadocStyle">
29 - <property name="scope" value="public" />
30 - <property name="checkFirstSentence" value="false" />
31 - </module>
32 - <module name="LocalFinalVariableName" />
33 - <module name="LocalVariableName" />
34 - <module name="MemberName" />
35 - <module name="MethodName" />
36 - <module name="PackageName">
37 - </module>
38 - <module name="ParameterName" />
39 - <module name="StaticVariableName" />
40 - <module name="TypeName">
41 - </module>
42 - <module name="AvoidStarImport">
43 - </module>
44 - <module name="IllegalImport" />
45 - <module name="RedundantImport" />
46 - <module name="UnusedImports" />
47 - <module name="MethodLength">
48 - <property name="max" value="75" />
49 - </module>
50 - <module name="ParameterNumber">
51 - </module>
52 - <module name="EmptyForIteratorPad">
53 - </module>
54 - <module name="MethodParamPad">
55 - </module>
56 - <module name="NoWhitespaceAfter">
57 - <property name="tokens" value="LNOT,DOT,BNOT,DEC,UNARY_MINUS,UNARY_PLUS,INC,ARRAY_INIT" />
58 - <property name="severity" value="info" />
59 - </module>
60 - <module name="NoWhitespaceBefore">
61 - <property name="allowLineBreaks" value="true" />
62 - <property name="tokens" value="SEMI,DOT,POST_DEC,POST_INC" />
63 - <property name="severity" value="info" />
64 - </module>
65 - <module name="OperatorWrap">
66 - </module>
67 - <module name="ParenPad">
68 - </module>
69 - <module name="TypecastParenPad">
70 - </module>
71 - <module name="WhitespaceAfter">
72 - <property name="tokens" value="COMMA" />
73 - <property name="severity" value="info" />
74 - </module>
75 - <module name="WhitespaceAround">
76 - <property name="severity" value="info" />
77 - </module>
78 - <module name="AvoidNestedBlocks">
79 - </module>
80 - <module name="EmptyBlock">
81 - </module>
82 - <module name="LeftCurly">
83 - </module>
84 - <module name="NeedBraces">
85 - <property name="severity" value="info" />
86 - </module>
87 - <module name="EmptyStatement">
88 - </module>
89 - <module name="EqualsHashCode">
90 - </module>
91 - <module name="HiddenField">
92 - <property name="ignoreConstructorParameter" value="true" />
93 - <property name="ignoreSetter" value="true" />
94 - </module>
95 - <module name="InnerAssignment">
96 - </module>
97 - <module name="MissingSwitchDefault" />
98 - <module name="SimplifyBooleanExpression">
99 - <message key="simplify.expression" value="Der Ausdruck sollte vereinfacht werden." />
100 - </module>
101 - <module name="SimplifyBooleanReturn">
102 - </module>
103 - <module name="ArrayTypeStyle">
104 - </module>
105 - <module name="TodoComment">
106 - </module>
107 - <module name="UpperEll">
108 - </module>
109 - <module name="ReturnCount">
110 - <property name="max" value="8" />
111 - </module>
112 - <!-- <module name="MagicNumber">
113 - <metadata name="net.sf.eclipsecs.core.comment"
114 - value="-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9"/>
115 - <property name="ignoreNumbers" value="-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9"/>
116 - <property name="severity" value="info"/>
117 - </module> -->
118 - <module name="ReturnCount">
119 - <property name="max" value="4" />
120 - <message key="return.count"
121 - value="Möglichst nicht mehr als {1,number,integer} return-Anweisungen." />
122 - </module>
123 - <module name="JavadocType">
124 - <property name="authorFormat" value=".{2,}" />
125 - <message key="type.tagFormat" value="Autor sollte mindestens zwei Buchstaben haben" />
126 - </module>
127 - <module name="JavadocVariable">
128 - <property name="scope" value="public" />
129 - </module>
130 - <module name="ConstantName">
131 - <message key="name.invalidPattern"
132 - value="Nur Großbuchstaben, Zahlen und Unterstriche für Konstanten verwenden." />
133 - </module>
134 - <module name="ModifierOrder">
135 - </module>
136 - <module name="CyclomaticComplexity">
137 - <property name="max" value="20" />
138 - </module>
139 - <module name="NPathComplexity">
140 - <property name="max" value="80" />
141 - </module>
142 - <module name="RightCurly">
143 - </module>
144 - </module>
145 - <module name="LineLength">
146 - <property name="max" value="140" />
147 - <property name="fileExtensions" value="java" />
148 - <property name="ignorePattern"
149 - value="^package.*|^import.*|a href|href|http://|https://|ftp://" />
150 - </module>
18 +* Inhalt der Checkstyle Konfiguration austauschen mit unserer Konfiguration. (% style="color:#c0392b" %)**Checkstyle Konfiguration findet sich unten unter Anhänge.**
151 151  
152 152  
153 - <module name="JavadocPackage" />
154 - <module name="FileLength">
155 - <property name="max" value="1000" />
156 - </module>
157 - <module name="FileTabCharacter">
158 - <property name="severity" value="info" />
159 - </module>
160 - <module name="RegexpHeader">
161 - <property name="header" value="^package" />
162 - <message key="header.mismatch" value="Angabe eines Packages fehlt." />
163 - </module>
164 164  
165 -</module>
22 +== Entfernen von Spotbugs und PMD oder Checkstyle ==
23 +
24 +Beim Erstellen von Aufgaben mit statischer Code Analyse erstellt Artemis ein Projekt mit [[Checkstyle>>https://maven.apache.org/plugins/maven-checkstyle-plugin/]], [[Apache PMD>>https://maven.apache.org/plugins/maven-pmd-plugin/]] und [[Spotbugs>>https://spotbugs.github.io/spotbugs-maven-plugin/]]. Wenn eines der Tools nicht benötigt wird, muss die Dependency im Projekt gelöscht werden **und** das Build Script angepasst werden.
25 +
26 +
27 +Unter Build-Plane bearbeiten finden sich die mvn commands, um die genannten Tools auszuführen.
28 +
29 +[[image:1751960876121-491.png||data-xwiki-image-style-border="true"]]
30 +
31 +
32 +Die Methode staticCodeAnalysis alle Commands. Beim Entfernen von z.B. PMD muss nicht nur der Command //pmd:pmd pmd:cpd// entfernt werden, sondern auch die copy Commands für die Reports.
33 +
34 +[[image:1751961576022-284.png||data-xwiki-image-style-border="true"]]
35 +
36 +
166 166  
1751960876121-491.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.id300818
Größe
... ... @@ -1,0 +1,1 @@
1 +21.6 KB
Inhalt
1751961576022-284.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.id300818
Größe
... ... @@ -1,0 +1,1 @@
1 +70.6 KB
Inhalt
1751962116852-287.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.id300818
Größe
... ... @@ -1,0 +1,1 @@
1 +21.5 KB
Inhalt
Checktyle.xml
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.id300818
Größe
... ... @@ -1,0 +1,1 @@
1 +5.8 KB
Inhalt
... ... @@ -1,0 +1,159 @@
1 +<?xml version="1.0"?>
2 +<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
3 +
4 +
5 +<module name="Checker">
6 + <property name="severity" value="warning" />
7 +
8 + <property name="fileExtensions" value="java" />
9 +
10 + <!-- See https://checkstyle.org/filefilters/beforeexecutionexclusionfilefilter.html -->
11 +
12 + <module name="BeforeExecutionExclusionFileFilter">
13 + <!-- Filtert alle Dateien, die nicht SortedArray heißen -->
14 + <property name="fileNamePattern" value="^(?!.*([\\/])?(SortedArray)\.java$).*" />
15 + </module>
16 +
17 + <module name="TreeWalker">
18 + <property name="tabWidth" value="4" />
19 + <module name="JavadocMethod">
20 + <property name="accessModifiers" value="public" />
21 + </module>
22 + <module name="JavadocStyle">
23 + <property name="scope" value="public" />
24 + <property name="checkFirstSentence" value="false" />
25 + </module>
26 + <module name="LocalFinalVariableName" />
27 + <module name="LocalVariableName" />
28 + <module name="MemberName" />
29 + <module name="MethodName" />
30 + <module name="PackageName">
31 + </module>
32 + <module name="ParameterName" />
33 + <module name="StaticVariableName" />
34 + <module name="TypeName">
35 + </module>
36 + <module name="AvoidStarImport">
37 + </module>
38 + <module name="IllegalImport" />
39 + <module name="RedundantImport" />
40 + <module name="UnusedImports" />
41 + <module name="MethodLength">
42 + <property name="max" value="75" />
43 + </module>
44 + <module name="ParameterNumber">
45 + </module>
46 + <module name="EmptyForIteratorPad">
47 + </module>
48 + <module name="MethodParamPad">
49 + </module>
50 + <module name="NoWhitespaceAfter">
51 + <property name="tokens" value="LNOT,DOT,BNOT,DEC,UNARY_MINUS,UNARY_PLUS,INC,ARRAY_INIT" />
52 + <property name="severity" value="info" />
53 + </module>
54 + <module name="NoWhitespaceBefore">
55 + <property name="allowLineBreaks" value="true" />
56 + <property name="tokens" value="SEMI,DOT,POST_DEC,POST_INC" />
57 + <property name="severity" value="info" />
58 + </module>
59 + <module name="OperatorWrap">
60 + </module>
61 + <module name="ParenPad">
62 + </module>
63 + <module name="TypecastParenPad">
64 + </module>
65 + <module name="WhitespaceAfter">
66 + <property name="tokens" value="COMMA" />
67 + <property name="severity" value="info" />
68 + </module>
69 + <module name="WhitespaceAround">
70 + <property name="severity" value="info" />
71 + </module>
72 + <module name="AvoidNestedBlocks">
73 + </module>
74 + <module name="EmptyBlock">
75 + </module>
76 + <module name="LeftCurly">
77 + </module>
78 + <module name="NeedBraces">
79 + <property name="severity" value="info" />
80 + </module>
81 + <module name="EmptyStatement">
82 + </module>
83 + <module name="EqualsHashCode">
84 + </module>
85 + <module name="HiddenField">
86 + <property name="ignoreConstructorParameter" value="true" />
87 + <property name="ignoreSetter" value="true" />
88 + </module>
89 + <module name="InnerAssignment">
90 + </module>
91 + <module name="MissingSwitchDefault" />
92 + <module name="SimplifyBooleanExpression">
93 + <message key="simplify.expression" value="Der Ausdruck sollte vereinfacht werden." />
94 + </module>
95 + <module name="SimplifyBooleanReturn">
96 + </module>
97 + <module name="ArrayTypeStyle">
98 + </module>
99 + <module name="TodoComment">
100 + </module>
101 + <module name="UpperEll">
102 + </module>
103 + <module name="ReturnCount">
104 + <property name="max" value="8" />
105 + </module>
106 + <!-- <module name="MagicNumber">
107 + <metadata name="net.sf.eclipsecs.core.comment"
108 + value="-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9"/>
109 + <property name="ignoreNumbers" value="-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9"/>
110 + <property name="severity" value="info"/>
111 + </module> -->
112 + <module name="ReturnCount">
113 + <property name="max" value="4" />
114 + <message key="return.count"
115 + value="Möglichst nicht mehr als {1,number,integer} return-Anweisungen." />
116 + </module>
117 + <module name="JavadocType">
118 + <property name="authorFormat" value=".{2,}" />
119 + <message key="type.tagFormat" value="Autor sollte mindestens zwei Buchstaben haben" />
120 + </module>
121 + <module name="JavadocVariable">
122 + <property name="scope" value="public" />
123 + </module>
124 + <module name="ConstantName">
125 + <message key="name.invalidPattern"
126 + value="Nur Großbuchstaben, Zahlen und Unterstriche für Konstanten verwenden." />
127 + </module>
128 + <module name="ModifierOrder">
129 + </module>
130 + <module name="CyclomaticComplexity">
131 + <property name="max" value="20" />
132 + </module>
133 + <module name="NPathComplexity">
134 + <property name="max" value="80" />
135 + </module>
136 + <module name="RightCurly">
137 + </module>
138 + </module>
139 + <module name="LineLength">
140 + <property name="max" value="140" />
141 + <property name="fileExtensions" value="java" />
142 + <property name="ignorePattern"
143 + value="^package.*|^import.*|a href|href|http://|https://|ftp://" />
144 + </module>
145 +
146 +
147 + <module name="JavadocPackage" />
148 + <module name="FileLength">
149 + <property name="max" value="1000" />
150 + </module>
151 + <module name="FileTabCharacter">
152 + <property name="severity" value="info" />
153 + </module>
154 + <module name="RegexpHeader">
155 + <property name="header" value="^package" />
156 + <message key="header.mismatch" value="Angabe eines Packages fehlt." />
157 + </module>
158 +
159 +</module>
StatCode.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.id300818
Größe
... ... @@ -1,0 +1,1 @@
1 +36.6 KB
Inhalt