org.sonar.plugins.checkstyle.CheckstyleMavenPluginHandler Maven / Gradle / Ivy
/*
* 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;
}
}