All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ch.hortis.sonar.mvn.reports.CheckstyleHandler Maven / Gradle / Ivy

/*
 * Copyright 2001-2005 The Apache Software Foundation.
 *
 * Licensed 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.
 */
package ch.hortis.sonar.mvn.reports;

import ch.hortis.sonar.mvn.PomUtils;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;

import java.util.*;

public class CheckstyleHandler extends ReportHandler {

  public void configurePlugin( MavenProject pom, Plugin plugin ) {
    unsetConfigParameter( plugin, "outputDirectory" );
    unsetConfigParameter( plugin, "outputFile" );
    setConfigParameter( plugin, "outputFileFormat", "xml" );
    setConfigParameter( plugin, "consoleOutput", "false" );
    setConfigParameter( plugin, "enableRSS", "false" );
    setConfigParameter( plugin, "failsOnError", "false" );
    setConfigParameter( plugin, "linkXRef", "false" );

    copyPluginDependencies(pom, plugin);
  }

  public List getGoals() {
    return Arrays.asList( new String[]{"checkstyle"} );
  }

  public boolean mustFailOnError() {
    return true;
  }

  /**
   * Example from the mule project (http://mule.codehaus.org/display/MULE/Home).
   * Checkstyle configuration file is defined in a dependency :
   *
     
         
                org.apache.maven.plugins
                maven-checkstyle-plugin
                
                    
                        org.mule
                        mule-buildtools
                        ${version}
                    
                
            
        

   * and the configuration is in the reporting node :

       
          ...
            
                org.apache.maven.plugins
                maven-checkstyle-plugin
                
                    codecheck/checkstyle.xml
                    codecheck/LICENSE.txt
                
            
             ...
         
   *
   *
   *
   *
   *
   */
  private void copyPluginDependencies(MavenProject pom, Plugin plugin) {
    HashSet depKeys = new HashSet();
    Collection checkstylePlugins = PomUtils.findPluginDefinitions(pom, getReport().getGroupId(), getReport().getArtifactId());
    for (Plugin ckPlugin : checkstylePlugins) {
      if ( ckPlugin.getDependencies()!=null ) {
        if ( plugin.getDependencies()==null ) {
          plugin.setDependencies( new ArrayList() );
        }
        for (Dependency dependency : (Collection)ckPlugin.getDependencies()) {
          String depArtifactId = dependency.getArtifactId();
          if ( ! depKeys.contains( depArtifactId ) ) {
            depKeys.add( depArtifactId );
            plugin.getDependencies().add( dependency );
          }
        }

      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy