You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2008/02/02 23:34:56 UTC
svn commit: r617914 -
/maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java
Author: dennisl
Date: Sat Feb 2 14:34:53 2008
New Revision: 617914
URL: http://svn.apache.org/viewvc?rev=617914&view=rev
Log:
[MCHECKSTYLE-83] Checkstyle report showing a check as Error when it is Warning
Modified:
maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java
Modified: maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java?rev=617914&r1=617913&r2=617914&view=diff
==============================================================================
--- maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java (original)
+++ maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java Sat Feb 2 14:34:53 2008
@@ -217,16 +217,43 @@
sink.figure_();
}
- private String getConfigAttribute( Configuration config, String attname, String defvalue )
+ /**
+ * Get the value of the specified attribute from the Checkstyle configuration.
+ * If parentConfigurations is non-null and non-empty, the parent
+ * configurations are searched if the attribute cannot be found in the
+ * current configuration. If the attribute is still not found, the
+ * specified default value will be returned.
+ *
+ * @param config The current Checkstyle configuration
+ * @param parentConfigurations The configurations for the parents of the current configuration
+ * @param attributeName The name of the attribute
+ * @param defaultValue The default value to use if the attribute cannot be found in any configuration
+ * @return The value of the specified attribute
+ */
+ private String getConfigAttribute( Configuration config, List parentConfigurations, String attributeName,
+ String defaultValue )
{
String ret;
try
{
- ret = config.getAttribute( attname );
+ ret = config.getAttribute( attributeName );
}
catch ( CheckstyleException e )
{
- ret = defvalue;
+ // Try to find the attribute in a parent, if there are any
+ if ( parentConfigurations != null && !parentConfigurations.isEmpty() )
+ {
+ Configuration parentConfiguration =
+ (Configuration) parentConfigurations.get( parentConfigurations.size() - 1 );
+ List newParentConfigurations = new ArrayList( parentConfigurations );
+ // Remove the last parent
+ newParentConfigurations.remove( parentConfiguration );
+ ret = getConfigAttribute( parentConfiguration, newParentConfigurations, attributeName, defaultValue );
+ }
+ else
+ {
+ ret = defaultValue;
+ }
}
return ret;
}
@@ -267,7 +294,7 @@
// Top level should be the checker.
if ( "checker".equalsIgnoreCase( checkstyleConfig.getName() ) )
{
- doRuleChildren( checkstyleConfig.getChildren(), results );
+ doRuleChildren( checkstyleConfig, null, results );
}
else
{
@@ -286,11 +313,41 @@
/**
* Create a summary for each Checkstyle rule.
*
- * @param configChildren Configurations for each Checkstyle rule
+ * @param configuration The Checkstyle configuration
+ * @param parentConfigurations A List of configurations for the chain of parents to the current configuration
* @param results The results to summarize
*/
- private void doRuleChildren( Configuration configChildren[], CheckstyleResults results )
+ private void doRuleChildren( Configuration configuration, List parentConfigurations, CheckstyleResults results )
{
+ // Remember the chain of parent configurations
+ if ( parentConfigurations == null )
+ {
+ parentConfigurations = new ArrayList();
+ }
+ // The "oldest" parent will be first in the list
+ parentConfigurations.add( configuration );
+
+ if ( getLog().isDebugEnabled() )
+ {
+ // Log the parent configuration path
+ StringBuffer parentPath = new StringBuffer();
+ Iterator iterator = parentConfigurations.iterator();
+ while ( iterator.hasNext() )
+ {
+ Configuration parentConfiguration = (Configuration) iterator.next();
+ parentPath.append( parentConfiguration.getName() );
+ if ( iterator.hasNext() )
+ {
+ parentPath.append( " --> " );
+ }
+ }
+ if ( parentPath.length() > 0 )
+ {
+ getLog().debug( "Parent Configuration Path: " + parentPath.toString() );
+ }
+ }
+
+ Configuration configChildren[] = configuration.getChildren();
for ( int cci = 0; cci < configChildren.length; cci++ )
{
String ruleName = configChildren[cci].getName();
@@ -298,11 +355,11 @@
if ( "TreeWalker".equals( ruleName ) )
{
// special sub-case
- doRuleChildren( configChildren[cci].getChildren(), results );
+ doRuleChildren( configChildren[cci], parentConfigurations, results );
}
else
{
- doRuleRow( configChildren[cci], ruleName, results );
+ doRuleRow( configChildren[cci], parentConfigurations, ruleName, results );
}
}
}
@@ -311,10 +368,12 @@
* Create a summary for one Checkstyle rule.
*
* @param checkerConfig Configuration for the Checkstyle rule
+ * @param parentConfigurations Configurations for the parents of this rule
* @param ruleName The name of the rule, for example "JavadocMethod"
* @param results The results to summarize
*/
- private void doRuleRow( Configuration checkerConfig, String ruleName, CheckstyleResults results )
+ private void doRuleRow( Configuration checkerConfig, List parentConfigurations, String ruleName,
+ CheckstyleResults results )
{
sink.tableRow();
sink.tableCell();
@@ -334,7 +393,7 @@
sink.text( name );
sink.bold_();
- String value = getConfigAttribute( checkerConfig, name, "" );
+ String value = getConfigAttribute( checkerConfig, null, name, "" );
// special case, Header.header and RegexpHeader.header
if ( "header".equals( name ) && ( "Header".equals( ruleName ) || "RegexpHeader".equals( ruleName ) ) )
{
@@ -372,16 +431,17 @@
sink.tableCell_();
sink.tableCell();
- String fixedmessage = getConfigAttribute( checkerConfig, "message", null );
+ String fixedmessage = getConfigAttribute( checkerConfig, null, "message", null );
// Grab the severity from the rule configuration, use null as default value
- String configSeverity = getConfigAttribute( checkerConfig, "severity", null );
+ String configSeverity = getConfigAttribute( checkerConfig, null, "severity", null );
sink.text( countRuleViolation( results.getFiles().values().iterator(), ruleName, fixedmessage,
configSeverity ) );
sink.tableCell_();
sink.tableCell();
- // Grab the severity again from the rule configuration, this time use error as default value
- configSeverity = getConfigAttribute( checkerConfig, "severity", "error" );
+ // Grab the severity from the rule configuration, this time use error as default value
+ // Also pass along all parent configurations, so that we can try to find the severity there
+ configSeverity = getConfigAttribute( checkerConfig, parentConfigurations, "severity", "error" );
iconSeverity( configSeverity );
sink.nonBreakingSpace();
sink.text( StringUtils.capitalise( configSeverity ) );