1 package org.apache.maven.plugin.checkstyle;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.model.Resource;
23 import org.apache.maven.plugins.annotations.Mojo;
24 import org.apache.maven.plugins.annotations.Parameter;
25 import org.apache.maven.plugins.annotations.ResolutionScope;
26 import org.apache.maven.project.MavenProject;
27 import org.apache.maven.reporting.MavenReportException;
28 import org.codehaus.plexus.util.StringUtils;
29
30 import java.io.File;
31 import java.net.URL;
32 import java.util.Collections;
33 import java.util.HashMap;
34 import java.util.List;
35 import java.util.Locale;
36 import java.util.Map;
37
38
39
40
41
42
43
44
45
46
47 @Mojo( name = "checkstyle", requiresDependencyResolution = ResolutionScope.COMPILE, threadSafe = true )
48 public class CheckstyleReport
49 extends AbstractCheckstyleReport
50 {
51
52
53
54 private static final Map<String, String> FORMAT_TO_CONFIG_LOCATION;
55
56 static
57 {
58 Map<String, String> fmt2Cfg = new HashMap<String, String>();
59
60 fmt2Cfg.put( "sun", "config/sun_checks.xml" );
61 fmt2Cfg.put( "turbine", "config/turbine_checks.xml" );
62 fmt2Cfg.put( "avalon", "config/avalon_checks.xml" );
63 fmt2Cfg.put( "maven", "config/maven_checks.xml" );
64
65 FORMAT_TO_CONFIG_LOCATION = Collections.unmodifiableMap( fmt2Cfg );
66 }
67
68
69
70
71
72
73
74 @Parameter( defaultValue = "sun" )
75 private String format;
76
77
78
79
80
81
82
83 @Parameter
84 private File propertiesFile;
85
86
87
88
89
90
91
92 @Parameter
93 private URL propertiesURL;
94
95
96
97
98
99
100
101
102 @Parameter( defaultValue = "${basedir}/LICENSE.txt" )
103 private File headerFile;
104
105
106
107
108
109
110
111
112
113
114 @Parameter
115 private String suppressionsFile;
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 @Parameter
134 private String packageNamesLocation;
135
136
137
138
139
140
141
142 @Parameter
143 private String packageNamesFile;
144
145
146 protected MavenProject getProject()
147 {
148 return project;
149 }
150
151
152 public void executeReport( Locale locale )
153 throws MavenReportException
154 {
155 mergeDeprecatedInfo();
156 super.executeReport( locale );
157 }
158
159
160
161
162 protected CheckstyleExecutorRequest createRequest()
163 throws MavenReportException
164 {
165 CheckstyleExecutorRequest request = new CheckstyleExecutorRequest();
166 request.setConsoleListener( getConsoleListener() ).setConsoleOutput( consoleOutput )
167 .setExcludes( excludes ).setFailsOnError( failsOnError ).setIncludes( includes )
168 .setResourceIncludes( resourceIncludes )
169 .setResourceExcludes( resourceExcludes )
170 .setIncludeResources( includeResources )
171 .setIncludeTestResources( includeTestResources )
172 .setIncludeTestSourceDirectory( includeTestSourceDirectory ).setListener( getListener() )
173 .setLog( getLog() ).setProject( project ).setSourceDirectory( sourceDirectory ).setResources( resources )
174 .setStringOutputStream( stringOutputStream ).setSuppressionsLocation( suppressionsLocation )
175 .setTestSourceDirectory( testSourceDirectory ).setConfigLocation( configLocation )
176 .setPropertyExpansion( propertyExpansion ).setHeaderLocation( headerLocation )
177 .setCacheFile( cacheFile ).setSuppressionsFileExpression( suppressionsFileExpression )
178 .setEncoding( encoding ).setPropertiesLocation( propertiesLocation );
179 return request;
180 }
181
182
183 public String getOutputName()
184 {
185 return "checkstyle";
186 }
187
188
189 public boolean canGenerateReport()
190 {
191
192 return !skip && ( sourceDirectory.exists()
193 || ( includeTestSourceDirectory && testSourceDirectory.exists() )
194 || ( includeResources && hasResources( resources ) )
195 || ( includeTestResources && hasResources( testResources ) )
196 );
197 }
198
199
200
201
202
203
204 private boolean hasResources( List<Resource> resources )
205 {
206 for ( Resource resource : resources )
207 {
208 if ( new File( resource.getDirectory() ).exists() )
209 {
210 return true;
211 }
212 }
213 return false;
214 }
215
216
217
218
219
220
221
222 private void mergeDeprecatedInfo()
223 {
224 if ( "config/sun_checks.xml".equals( configLocation ) && !"sun".equals( format ) )
225 {
226 configLocation = FORMAT_TO_CONFIG_LOCATION.get( format );
227 }
228
229 if ( StringUtils.isEmpty( propertiesLocation ) )
230 {
231 if ( propertiesFile != null )
232 {
233 propertiesLocation = propertiesFile.getPath();
234 }
235 else if ( propertiesURL != null )
236 {
237 propertiesLocation = propertiesURL.toExternalForm();
238 }
239 }
240
241 if ( "LICENSE.txt".equals( headerLocation ) )
242 {
243 File defaultHeaderFile = new File( project.getBasedir(), "LICENSE.txt" );
244 if ( !defaultHeaderFile.equals( headerFile ) )
245 {
246 headerLocation = headerFile.getPath();
247 }
248 }
249
250 if ( StringUtils.isEmpty( suppressionsLocation ) )
251 {
252 suppressionsLocation = suppressionsFile;
253 }
254
255 if ( StringUtils.isEmpty( packageNamesLocation ) )
256 {
257 packageNamesLocation = packageNamesFile;
258 }
259 }
260
261 }