Author: brianf Date: Sun Mar 11 18:19:22 2007 New Revision: 517064 URL: http://svn.apache.org/viewvc?view=rev&rev=517064 Log: MCHECKSTYLE-71 - added skip flag
Modified: maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java Modified: maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java?view=diff&rev=517064&r1=517063&r2=517064 ============================================================================== --- maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java (original) +++ maven/plugins/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java Sun Mar 11 18:19:22 2007 @@ -74,7 +74,7 @@ /** * Perform checkstyle analysis, and generate report on violations. - * + * * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a> * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Siveton</a> * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a> @@ -103,8 +103,15 @@ } /** + * skip entire check + * + * @parameter expression="${checkstyle.skip}" default-value="false" + */ + private boolean skip; + + /** * Specifies the directory where the report will be generated - * + * * @parameter default-value="${project.reporting.outputDirectory}" * @required */ @@ -112,117 +119,133 @@ /** * Specifies if the Rules summary should be enabled or not. - * + * * @parameter expression="${checkstyle.enable.rules.summary}" - * default-value="true" + * default-value="true" */ private boolean enableRulesSummary; /** * Specifies if the Severity summary should be enabled or not. - * + * * @parameter expression="${checkstyle.enable.severity.summary}" - * default-value="true" + * default-value="true" */ private boolean enableSeveritySummary; /** * Specifies if the Files summary should be enabled or not. - * + * * @parameter expression="${checkstyle.enable.files.summary}" - * default-value="true" + * default-value="true" */ private boolean enableFilesSummary; /** * Specifies if the RSS should be enabled or not. - * - * @parameter expression="${checkstyle.enable.rss}" - * default-value="true" + * + * @parameter expression="${checkstyle.enable.rss}" default-value="true" */ private boolean enableRSS; /** * Specifies the names filter of the source files to be used for checkstyle - * + * * @parameter expression="${checkstyle.includes}" default-value="**\/*.java" * @required */ private String includes; /** - * Specifies the names filter of the source files to be excluded for checkstyle - * + * Specifies the names filter of the source files to be excluded for + * checkstyle + * * @parameter expression="${checkstyle.excludes}" */ private String excludes; /** - * <p>Specifies the location of the XML configuration to use.</p> - * - * <p>Potential values are a filesystem path, a URL, or a classpath - * resource. This parameter expects that the contents of the location - * conform to the xml format (Checkstyle - * <a href="http://checkstyle.sourceforge.net/config.html#Modules">Checker - * module</a>) configuration of rulesets.</p> - * - * <p>This parameter is resolved as resource, URL, then file. - * If successfully resolved, the contents of the configuration is copied into the + * <p> + * Specifies the location of the XML configuration to use. + * </p> + * + * <p> + * Potential values are a filesystem path, a URL, or a classpath resource. + * This parameter expects that the contents of the location conform to the + * xml format (Checkstyle <a + * href="http://checkstyle.sourceforge.net/config.html#Modules">Checker + * module</a>) configuration of rulesets. + * </p> + * + * <p> + * This parameter is resolved as resource, URL, then file. If successfully + * resolved, the contents of the configuration is copied into the * <code>${project.build.directory}/checkstyle-configuration.xml</code> - * file before being passed to checkstyle as a configuration.</p> - * - * <p>There are 4 predefined rulesets.</p> - * + * file before being passed to checkstyle as a configuration. + * </p> + * + * <p> + * There are 4 predefined rulesets. + * </p> + * * <ul> * <li><code>config/sun_checks.xml</code>: Sun Checks.</li> * <li><code>config/turbine_checks.xml</code>: Turbine Checks.</li> * <li><code>config/avalon_checks.xml</code>: Avalon Checks.</li> * <li><code>config/maven_checks.xml</code>: Maven Source Checks.</li> * </ul> - * - * @parameter expression="${checkstyle.config.location}" default-value="config/sun_checks.xml" + * + * @parameter expression="${checkstyle.config.location}" + * default-value="config/sun_checks.xml" */ private String configLocation; /** - * Specifies what predefined check set to use. Available sets are - * "sun" (for the Sun coding conventions), "turbine", and "avalon". - * Default is sun. - * + * Specifies what predefined check set to use. Available sets are "sun" (for + * the Sun coding conventions), "turbine", and "avalon". Default is sun. + * * @parameter default-value="sun" * @deprecated Use configLocation instead. */ private String format; /** - * <p>Specifies the location of the properties file.</p> - * - * <p>This parameter is resolved as URL, File, then resource. - * If successfully resolved, the contents of the properties location is copied into the + * <p> + * Specifies the location of the properties file. + * </p> + * + * <p> + * This parameter is resolved as URL, File, then resource. If successfully + * resolved, the contents of the properties location is copied into the * <code>${project.build.directory}/checkstyle-checker.properties</code> - * file before being passed to checkstyle for loading.</p> - * - * <p>The contents of the <code>propertiesLocation</code> will be made - * available to checkstyle for specifying values for parameters within - * the xml configuration (specified in the <code>configLocation</code> - * parameter).</p> - * + * file before being passed to checkstyle for loading. + * </p> + * + * <p> + * The contents of the <code>propertiesLocation</code> will be made + * available to checkstyle for specifying values for parameters within the + * xml configuration (specified in the <code>configLocation</code> + * parameter). + * </p> + * * @parameter expression="${checkstyle.properties.location}" * @since 2.0-beta-2 */ private String propertiesLocation; /** - * Specifies the location of the checkstyle properties that will be used to check the source. - * + * Specifies the location of the checkstyle properties that will be used to + * check the source. + * * @parameter * @deprecated Use propertiesLocation instead. */ private File propertiesFile; /** - * Specifies the URL of the checkstyle properties that will be used to check the source. - * + * Specifies the URL of the checkstyle properties that will be used to check + * the source. + * * @parameter * @deprecated Use propertiesLocation instead. */ @@ -230,18 +253,24 @@ /** * Allows for specifying raw property expansion information. - * + * * @parameter */ private String propertyExpansion; /** - * <p>Specifies the location of the License file (a.k.a. the header file) - * that can be used by Checkstyle to verify that source code has the - * correct copyright.</p> - * <p>You need to use ${checkstyle.header.file} in your checkstyle xml configuration - * to reference the name of this header file.</p> - * <p>For instance:</p> + * <p> + * Specifies the location of the License file (a.k.a. the header file) that + * can be used by Checkstyle to verify that source code has the correct + * copyright. + * </p> + * <p> + * You need to use ${checkstyle.header.file} in your checkstyle xml + * configuration to reference the name of this header file. + * </p> + * <p> + * For instance: + * </p> * <p> * <code> * <module name="RegexpHeader"> @@ -249,16 +278,18 @@ * </module> * </code> * </p> - * - * @parameter expression="${checkstyle.header.file}" default-value="LICENSE.txt" + * + * @parameter expression="${checkstyle.header.file}" + * default-value="LICENSE.txt" * @since 2.0-beta-2 */ private String headerLocation; /** - * Specifies the location of the License file (a.k.a. the header file) that is used by Checkstyle - * to verify that source code has the correct copyright. - * + * Specifies the location of the License file (a.k.a. the header file) that + * is used by Checkstyle to verify that source code has the correct + * copyright. + * * @parameter expression="${basedir}/LICENSE.txt" * @deprecated Use headerLocation instead. */ @@ -266,32 +297,36 @@ /** * Specifies the cache file used to speed up Checkstyle on successive runs. - * + * * @parameter default-value="${project.build.directory}/checkstyle-cachefile" */ private String cacheFile; /** - * If null, the checkstyle task will display violations on stdout. Otherwise, the text file will be - * created with the violations. - * + * If null, the checkstyle task will display violations on stdout. + * Otherwise, the text file will be created with the violations. + * * @parameter */ private File useFile; /** - * <p>Specifies the location of the suppressions XML file to use.</p> - * - * <p>This parameter is resolved as resource, URL, then file. - * If successfully resolved, the contents of the suppressions XML is copied into the - * <code>${project.build.directory}/checkstyle-supressions.xml</code> - * file before being passed to checkstyle for loading.</p> - * * <p> - * See <code>suppressionsFileExpression</code> for the property that will be made available - * to your checkstyle configuration. + * Specifies the location of the suppressions XML file to use. * </p> - * + * + * <p> + * This parameter is resolved as resource, URL, then file. If successfully + * resolved, the contents of the suppressions XML is copied into the + * <code>${project.build.directory}/checkstyle-supressions.xml</code> file + * before being passed to checkstyle for loading. + * </p> + * + * <p> + * See <code>suppressionsFileExpression</code> for the property that will + * be made available to your checkstyle configuration. + * </p> + * * @parameter expression="${checkstyle.suppressions.location}" * @since 2.0-beta-2 */ @@ -299,59 +334,65 @@ /** * The key to be used in the properties for the suppressions file. - * + * * @parameter expression="${checkstyle.suppression.expression}" - * default-value="checkstyle.suppressions.file" + * default-value="checkstyle.suppressions.file" * @since 2.1 */ private String suppressionsFileExpression; /** - * Specifies the location of the supperssions XML file to use. The plugin defines a Checkstyle - * property named <code>checkstyle.suppressions.file</code> with the value of this - * property. This allows using the Checkstyle property your own custom checkstyle - * configuration file when specifying a suppressions file. - * + * Specifies the location of the supperssions XML file to use. The plugin + * defines a Checkstyle property named + * <code>checkstyle.suppressions.file</code> with the value of this + * property. This allows using the Checkstyle property your own custom + * checkstyle configuration file when specifying a suppressions file. + * * @parameter * @deprecated Use suppressionsLocation instead. */ private String suppressionsFile; /** - * Specifies the path and filename to save the checkstyle output. The format of the output file is - * determined by the <code>outputFileFormat</code> - * + * Specifies the path and filename to save the checkstyle output. The format + * of the output file is determined by the <code>outputFileFormat</code> + * * @parameter expression="${checkstyle.output.file}" - * default-value="${project.build.directory}/checkstyle-result.xml" + * default-value="${project.build.directory}/checkstyle-result.xml" */ private File outputFile; /** - * Specifies the format of the output to be used when writing to the output file. Valid values are - * "plain" and "xml" - * + * Specifies the format of the output to be used when writing to the output + * file. Valid values are "plain" and "xml" + * * @parameter expression="${checkstyle.output.format}" default-value="xml" */ private String outputFileFormat; /** - * <p>Specifies the location of the package names XML to be used to configure - * the Checkstyle <a href="http://checkstyle.sourceforge.net/config.html#Packages">Packages</a>.</p> - * - * <p>This parameter is resolved as resource, URL, then file. - * If resolved to a resource, or a URL, the contents of the package names - * XML is copied into the - * <code>${project.build.directory}/checkstyle-packagenames.xml</code> - * file before being passed to checkstyle for loading.</p> - * + * <p> + * Specifies the location of the package names XML to be used to configure + * the Checkstyle <a + * href="http://checkstyle.sourceforge.net/config.html#Packages">Packages</a>. + * </p> + * + * <p> + * This parameter is resolved as resource, URL, then file. If resolved to a + * resource, or a URL, the contents of the package names XML is copied into + * the <code>${project.build.directory}/checkstyle-packagenames.xml</code> + * file before being passed to checkstyle for loading. + * </p> + * * @parameter * @since 2.0-beta-2 */ private String packageNamesLocation; /** - * Specifies the location of the package names XML to be used to configure Checkstyle - * + * Specifies the location of the package names XML to be used to configure + * Checkstyle + * * @parameter * @deprecated Use packageNamesLocation instead. */ @@ -359,36 +400,37 @@ /** * Specifies if the build should fail upon a violation. - * + * * @parameter default-value="false" */ private boolean failsOnError; /** * Specifies the location of the source directory to be used for Checkstyle - * + * * @parameter default-value="${project.build.sourceDirectory}" * @required */ private File sourceDirectory; /** - * Specifies the location of the test source directory to be used for Checkstyle - * + * Specifies the location of the test source directory to be used for + * Checkstyle + * * @parameter default-value="${project.build.testSourceDirectory}" */ private File testSourceDirectory; /** * Include or not the test source directory to be used for Checkstyle - * + * * @parameter default-value="${false}" */ private boolean includeTestSourceDirectory; /** * The Maven Project Object - * + * * @parameter default-value="${project}" * @required * @readonly @@ -397,15 +439,15 @@ /** * Output errors to console. - * + * * @parameter default-value="false" */ private boolean consoleOutput; /** - * Link the violation line numbers to the source xref. Defaults to true and will link - * automatically if jxr plugin is being used. - * + * Link the violation line numbers to the source xref. Defaults to true and + * will link automatically if jxr plugin is being used. + * * @parameter expression="${linkXRef}" default-value="true" * @since 2.1 */ @@ -413,7 +455,7 @@ /** * Location of the Xrefs to link to. - * + * * @parameter default-value="${project.reporting.outputDirectory}/xref" */ private File xrefLocation; @@ -427,7 +469,7 @@ /** * Velocity Component - * + * * @component role="org.codehaus.plexus.velocity.VelocityComponent" * @required */ @@ -490,58 +532,64 @@ public void executeReport( Locale locale ) throws MavenReportException { - mergeDeprecatedInfo(); + if ( !skip ) + { + mergeDeprecatedInfo(); - locator.addSearchPath( FileResourceLoader.ID , project.getFile().getParentFile().getAbsolutePath() ); + locator.addSearchPath( FileResourceLoader.ID, project.getFile().getParentFile().getAbsolutePath() ); - locator.setOutputDirectory( new File( project.getBuild().getDirectory() ) ); + locator.setOutputDirectory( new File( project.getBuild().getDirectory() ) ); - if ( !canGenerateReport() ) - { - getLog().info( "Source directory does not exist - skipping report." ); - return; - } + if ( !canGenerateReport() ) + { + getLog().info( "Source directory does not exist - skipping report." ); + return; + } - // for when we start using maven-shared-io and maven-shared-monitor... - // locator = new Locator( new MojoLogMonitorAdaptor( getLog() ) ); + // for when we start using maven-shared-io and + // maven-shared-monitor... + // locator = new Locator( new MojoLogMonitorAdaptor( getLog() ) ); - //locator = new Locator( getLog(), new File( project.getBuild().getDirectory() ) ); + // locator = new Locator( getLog(), new File( + // project.getBuild().getDirectory() ) ); - String configFile = getConfigFile(); - Properties overridingProperties = getOverridingProperties(); - ModuleFactory moduleFactory; - Configuration config; - CheckstyleResults results; + String configFile = getConfigFile(); + Properties overridingProperties = getOverridingProperties(); + ModuleFactory moduleFactory; + Configuration config; + CheckstyleResults results; - ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); + ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); - try - { - // checkstyle will always use the context classloader in order to load resources (dtds), - // so we have to fix it - ClassLoader checkstyleClassLoader = PackageNamesLoader.class.getClassLoader(); - Thread.currentThread().setContextClassLoader( checkstyleClassLoader ); + try + { + // checkstyle will always use the context classloader in order + // to load resources (dtds), + // so we have to fix it + ClassLoader checkstyleClassLoader = PackageNamesLoader.class.getClassLoader(); + Thread.currentThread().setContextClassLoader( checkstyleClassLoader ); - moduleFactory = getModuleFactory(); - config = - ConfigurationLoader.loadConfiguration( configFile, new PropertiesExpander( overridingProperties ) ); - results = executeCheckstyle( config, moduleFactory ); - } - catch ( CheckstyleException e ) - { - throw new MavenReportException( "Failed during checkstyle configuration", e ); - } + moduleFactory = getModuleFactory(); + config = ConfigurationLoader.loadConfiguration( configFile, + new PropertiesExpander( overridingProperties ) ); + results = executeCheckstyle( config, moduleFactory ); + } + catch ( CheckstyleException e ) + { + throw new MavenReportException( "Failed during checkstyle configuration", e ); + } - ResourceBundle bundle = getBundle( locale ); - generateReportStatics(); - generateMainReport( results, config, moduleFactory, bundle ); - if ( enableRSS ) - { - generateRSS( results ); - } + ResourceBundle bundle = getBundle( locale ); + generateReportStatics(); + generateMainReport( results, config, moduleFactory, bundle ); + if ( enableRSS ) + { + generateRSS( results ); + } - // be sure to restore original context classloader - Thread.currentThread().setContextClassLoader( currentClassLoader ); + // be sure to restore original context classloader + Thread.currentThread().setContextClassLoader( currentClassLoader ); + } } private void generateReportStatics() @@ -638,7 +686,8 @@ relativePath = relativePath + "/" + xrefLocation.getName(); if ( xrefLocation.exists() ) { - // XRef was already generated by manual execution of a lifecycle binding + // XRef was already generated by manual execution of a lifecycle + // binding generator.setXrefLocation( relativePath ); } else @@ -665,8 +714,9 @@ } /** - * Merge in the deprecated parameters to the new ones, unless the new parameters have values. - * + * Merge in the deprecated parameters to the new ones, unless the new + * parameters have values. + * * @deprecated Remove when deprecated params are removed. */ private void mergeDeprecatedInfo() @@ -725,7 +775,8 @@ Checker checker = new Checker(); - // setup classloader, needed to avoid "Unable to get class information for ..." errors + // setup classloader, needed to avoid "Unable to get class information + // for ..." errors List classPathStrings; try { @@ -804,7 +855,8 @@ if ( failsOnError && nbErrors > 0 ) { - // TODO: should be a failure, not an error. Report is not meant to throw an exception here (so site would + // TODO: should be a failure, not an error. Report is not meant to + // throw an exception here (so site would // work regardless of config), but should record this information throw new MavenReportException( "There are " + nbErrors + " checkstyle errors." ); } @@ -846,8 +898,8 @@ else { // TODO: failure if not a report - throw new MavenReportException( - "Invalid output file format: (" + outputFileFormat + "). Must be 'plain' or 'xml'." ); + throw new MavenReportException( "Invalid output file format: (" + outputFileFormat + + "). Must be 'plain' or 'xml'." ); } }