You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/12/01 22:46:42 UTC
svn commit: r1209263 - in /maven/plugins/trunk/maven-checkstyle-plugin/src:
main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java
test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java
Author: olamy
Date: Thu Dec 1 21:46:40 2011
New Revision: 1209263
URL: http://svn.apache.org/viewvc?rev=1209263&view=rev
Log:
[MCHECKSTYLE-168] checkstyle-aggregate give a wrong file count
Submitted by Antonio Petrelli.
Added:
maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java (with props)
Modified:
maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java
Modified: maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java?rev=1209263&r1=1209262&r2=1209263&view=diff
==============================================================================
--- maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java (original)
+++ maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListener.java Thu Dec 1 21:46:40 2011
@@ -124,10 +124,14 @@ public class CheckstyleReportListener
{
for ( File sourceDirectory : sourceDirectories )
{
- currentFile = StringUtils.substring( event.getFileName(), sourceDirectory.getPath().length() + 1 );
- currentFile = StringUtils.replace( currentFile, "\\", "/" );
+ String sourceDirectoryPath = sourceDirectory.getPath();
+ String fileName = StringUtils.replace( event.getFileName(), "\\", "/" );
+ if ( fileName.startsWith( sourceDirectoryPath + "/" ) )
+ {
+ currentFile = StringUtils.substring( fileName, sourceDirectoryPath.length() + 1 );
- events = getResults().getFileViolations( currentFile );
+ events = getResults().getFileViolations( currentFile );
+ }
}
if ( events == null )
Added: maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java?rev=1209263&view=auto
==============================================================================
--- maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java (added)
+++ maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java Thu Dec 1 21:46:40 2011
@@ -0,0 +1,185 @@
+package org.apache.maven.plugin.checkstyle;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.puppycrawl.tools.checkstyle.api.AuditEvent;
+import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
+import com.puppycrawl.tools.checkstyle.api.SeverityLevel;
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class CheckstyleReportListenerMultiSourceTest
+ extends TestCase
+{
+ private Map<SeverityLevel, CheckstyleReportListener> listenerMap;
+
+ /**
+ * {@inheritDoc}
+ */
+ protected void setUp()
+ throws Exception
+ {
+ listenerMap = new HashMap<SeverityLevel, CheckstyleReportListener>();
+
+ CheckstyleReportListener listener = new CheckstyleReportListener( new File( "/source/path" ) );
+ listener.addSourceDirectory( new File( "/source/path2" ) );
+ listener.setSeverityLevelFilter( SeverityLevel.INFO );
+ listenerMap.put( listener.getSeverityLevelFilter(), listener );
+
+ listener = new CheckstyleReportListener( new File( "/source/path" ) );
+ listener.addSourceDirectory( new File( "/source/path2" ) );
+ listener.setSeverityLevelFilter( SeverityLevel.WARNING );
+ listenerMap.put( listener.getSeverityLevelFilter(), listener );
+
+ listener = new CheckstyleReportListener( new File( "/source/path" ) );
+ listener.addSourceDirectory( new File( "/source/path2" ) );
+ listener.setSeverityLevelFilter( SeverityLevel.ERROR );
+ listenerMap.put( listener.getSeverityLevelFilter(), listener );
+
+ listener = new CheckstyleReportListener( new File( "/source/path" ) );
+ listener.addSourceDirectory( new File( "/source/path2" ) );
+ listener.setSeverityLevelFilter( SeverityLevel.IGNORE );
+ listenerMap.put( listener.getSeverityLevelFilter(), listener );
+ }
+
+ public void testListeners()
+ {
+ fireAuditStarted( null );
+
+ AuditEvent event = new AuditEvent( this, "/source/path/file1", null );
+ fireFileStarted( event );
+ LocalizedMessage message =
+ new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.INFO, null, getClass(), null );
+ fireAddError( new AuditEvent( this, "/source/path/file1", message ) );
+ fireFileFinished( event );
+
+ event = new AuditEvent( this, "/source/path2/file2", null );
+ fireFileStarted( event );
+ message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.WARNING, null, getClass(), null );
+ fireAddError( new AuditEvent( this, "/source/path2/file2", message ) );
+ fireAddError( new AuditEvent( this, "/source/path2/file2", message ) );
+ fireFileFinished( event );
+
+ event = new AuditEvent( this, "/source/path/file3", null );
+ fireFileStarted( event );
+ message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.ERROR, null, getClass(), null );
+ fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
+ fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
+ fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
+ fireFileFinished( event );
+
+ event = new AuditEvent( this, "/source/path2/file4", null );
+ fireFileStarted( event );
+ message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.IGNORE, null, getClass(), null );
+ fireAddError( new AuditEvent( this, "/source/path2/file4", message ) );
+ fireAddError( new AuditEvent( this, "/source/path2/file4", message ) );
+ fireAddError( new AuditEvent( this, "/source/path2/file4", message ) );
+ fireAddError( new AuditEvent( this, "/source/path2/file4", message ) );
+ fireFileFinished( event );
+
+ fireAuditFinished( null );
+
+ CheckstyleReportListener listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.INFO );
+ CheckstyleResults results = listener.getResults();
+ assertEquals( "Test total files", 4, results.getFiles().size() );
+ assertEquals( "Test file count", 4, results.getFileCount() );
+ assertEquals( "test file violations", 1, results.getFileViolations( "file1" ).size() );
+ assertEquals( "test file severities", 1, results.getSeverityCount( "file1", SeverityLevel.INFO ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.WARNING ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.ERROR ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.IGNORE ) );
+
+ listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.WARNING );
+ results = listener.getResults();
+ assertEquals( "Test total files", 4, results.getFiles().size() );
+ assertEquals( "Test file count", 4, results.getFileCount() );
+ assertEquals( "test file violations", 2, results.getFileViolations( "file2" ).size() );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.INFO ) );
+ assertEquals( "test file severities", 2, results.getSeverityCount( "file2", SeverityLevel.WARNING ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.ERROR ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.IGNORE ) );
+
+ listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.ERROR );
+ results = listener.getResults();
+ assertEquals( "Test total files", 4, results.getFiles().size() );
+ assertEquals( "Test file count", 4, results.getFileCount() );
+ assertEquals( "test file violations", 3, results.getFileViolations( "file3" ).size() );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.INFO ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.WARNING ) );
+ assertEquals( "test file severities", 3, results.getSeverityCount( "file3", SeverityLevel.ERROR ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.IGNORE ) );
+
+ listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.IGNORE );
+ results = listener.getResults();
+ assertEquals( "Test total files", 4, results.getFiles().size() );
+ assertEquals( "Test file count", 4, results.getFileCount() );
+ assertEquals( "test file violations", 0, results.getFileViolations( "file4" ).size() );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.INFO ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.WARNING ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.ERROR ) );
+ assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.IGNORE ) );
+ }
+
+ private void fireAuditStarted( AuditEvent event )
+ {
+ for ( CheckstyleReportListener listener : listenerMap.values() )
+ {
+ listener.auditStarted( event );
+ }
+ }
+
+ private void fireAuditFinished( AuditEvent event )
+ {
+ for ( CheckstyleReportListener listener : listenerMap.values() )
+ {
+ listener.auditFinished( event );
+ }
+ }
+
+ private void fireFileStarted( AuditEvent event )
+ {
+ for ( CheckstyleReportListener listener : listenerMap.values() )
+ {
+ listener.fileStarted( event );
+ }
+ }
+
+ private void fireFileFinished( AuditEvent event )
+ {
+ for ( CheckstyleReportListener listener : listenerMap.values() )
+ {
+ listener.fileFinished( event );
+ }
+ }
+
+ private void fireAddError( AuditEvent event )
+ {
+ for ( CheckstyleReportListener listener : listenerMap.values() )
+ {
+ listener.addError( event );
+ }
+ }
+}
Propchange: maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-checkstyle-plugin/src/test/java/org/apache/maven/plugin/checkstyle/CheckstyleReportListenerMultiSourceTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision