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

org.sonar.plugins.checkstyle.CheckstyleMavenPluginHandler Maven / Gradle / Ivy

There is a newer version: 1.5M3
Show newest version
/*
 * Sonar, entreprise quality control tool.
 * Copyright (C) 2007-2008 Hortis-GRC SA
 * mailto:be_agile HAT hortis DOT ch
 *
 * Sonar is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * Sonar is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with Sonar; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
 */
package org.sonar.plugins.checkstyle;

import org.apache.commons.io.FileUtils;
import org.sonar.plugins.api.Languages;
import org.sonar.plugins.api.maven.*;
import org.sonar.plugins.api.maven.model.*;
import org.sonar.plugins.api.rules.RulesManager;

import java.io.*;

public class CheckstyleMavenPluginHandler extends AbstractMavenPluginHandler {
  private RulesManager rulesManager;
  private CheckstyleRulesRepository checkstyleRulesRepository;

  public CheckstyleMavenPluginHandler(RulesManager rulesManager, CheckstyleRulesRepository checkstyleRulesRepository) {
    this.rulesManager = rulesManager;
    this.checkstyleRulesRepository = checkstyleRulesRepository;
  }

  public String getGroupId() {
    return MavenUtils.APACHE_MOJO_GROUP_ID;
  }

  public String getArtifactId() {
    return "maven-checkstyle-plugin";
  }

  public String getVersion() {
    return "2.2";
  }

  public boolean isFixedVersion() {
    return true;
  }

  public boolean shouldStopOnFailure() {
    return true;
  }

  public String[] getGoals() {
    return new String[]{"checkstyle"};
  }

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

    try {
      File xmlFile = saveConfigXml(pom);
      plugin.setConfigParameter("configLocation", xmlFile.getCanonicalPath());

    } catch (IOException e) {
      throw new RuntimeException("fail to save the checkstyle XML configuration", e);
    }

    addRuleExtensionsDependency(plugin);
  }

  private File saveConfigXml(MavenPom pom) throws IOException {
    File checkstyle = new File(pom.getSonarWorkingDirectory(), "checkstyle.xml");
    String xml = checkstyleRulesRepository.exportConfiguration(rulesManager.getActiveProfile(Languages.JAVA));
    FileUtils.writeStringToFile(checkstyle, xml);
    return checkstyle;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy