use of com.puppycrawl.tools.checkstyle.api.CheckstyleException in project maven-plugins by apache.
the class CheckstyleViolationCheckMojo method execute.
/** {@inheritDoc} */
public void execute() throws MojoExecutionException, MojoFailureException {
checkDeprecatedParameterUsage(sourceDirectory, "sourceDirectory", "sourceDirectories");
checkDeprecatedParameterUsage(testSourceDirectory, "testSourceDirectory", "testSourceDirectories");
if (skip) {
return;
}
outputXmlFile = outputFile;
if (!skipExec) {
if (checkstyleRules != null) {
if (!"sun_checks.xml".equals(configLocation)) {
throw new MojoExecutionException("If you use inline configuration for rules, don't specify " + "a configLocation");
}
if (checkstyleRules.getChildCount() > 1) {
throw new MojoExecutionException("Currently only one root module is supported");
}
PlexusConfiguration checkerModule = checkstyleRules.getChild(0);
try {
FileUtils.forceMkdir(rulesFiles.getParentFile());
FileUtils.fileWrite(rulesFiles, CHECKSTYLE_FILE_HEADER + checkerModule.toString());
} catch (final IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
configLocation = rulesFiles.getAbsolutePath();
}
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
try {
CheckstyleExecutorRequest request = new CheckstyleExecutorRequest();
request.setConsoleListener(getConsoleListener()).setConsoleOutput(consoleOutput).setExcludes(excludes).setFailsOnError(failsOnError).setIncludes(includes).setResourceIncludes(resourceIncludes).setResourceExcludes(resourceExcludes).setIncludeResources(includeResources).setIncludeTestResources(includeTestResources).setIncludeTestSourceDirectory(includeTestSourceDirectory).setListener(getListener()).setProject(project).setSourceDirectories(getSourceDirectories()).setResources(resources).setTestResources(testResources).setStringOutputStream(stringOutputStream).setSuppressionsLocation(suppressionsLocation).setTestSourceDirectories(getTestSourceDirectories()).setConfigLocation(configLocation).setConfigurationArtifacts(collectArtifacts("config")).setPropertyExpansion(propertyExpansion).setHeaderLocation(headerLocation).setLicenseArtifacts(collectArtifacts("license")).setCacheFile(cacheFile).setSuppressionsFileExpression(suppressionsFileExpression).setEncoding(encoding).setPropertiesLocation(propertiesLocation).setOmitIgnoredModules(omitIgnoredModules);
checkstyleExecutor.executeCheckstyle(request);
} catch (CheckstyleException e) {
throw new MojoExecutionException("Failed during checkstyle configuration", e);
} catch (CheckstyleExecutorException e) {
throw new MojoExecutionException("Failed during checkstyle execution", e);
} finally {
//be sure to restore original context classloader
Thread.currentThread().setContextClassLoader(currentClassLoader);
}
}
if (!"xml".equals(outputFileFormat) && skipExec) {
throw new MojoExecutionException("Output format is '" + outputFileFormat + "', checkstyle:check requires format to be 'xml' when using skipExec.");
}
if (!outputXmlFile.exists()) {
getLog().info("Unable to perform checkstyle:check, unable to find checkstyle:checkstyle outputFile.");
return;
}
try (Reader reader = new BufferedReader(ReaderFactory.newXmlReader(outputXmlFile))) {
XmlPullParser xpp = new MXParser();
xpp.setInput(reader);
int violations = countViolations(xpp);
if (violations > maxAllowedViolations) {
if (failOnViolation) {
String msg = "You have " + violations + " Checkstyle violation" + ((violations > 1) ? "s" : "") + ".";
if (maxAllowedViolations > 0) {
msg += " The maximum number of allowed violations is " + maxAllowedViolations + ".";
}
throw new MojoFailureException(msg);
}
getLog().warn("checkstyle:check violations detected but failOnViolation set to false");
}
} catch (IOException | XmlPullParserException e) {
throw new MojoExecutionException("Unable to read Checkstyle results xml: " + outputXmlFile.getAbsolutePath(), e);
}
}
use of com.puppycrawl.tools.checkstyle.api.CheckstyleException in project maven-plugins by apache.
the class AbstractCheckstyleReport method executeReport.
/** {@inheritDoc} */
public void executeReport(Locale locale) throws MavenReportException {
checkDeprecatedParameterUsage(sourceDirectory, "sourceDirectory", "sourceDirectories");
checkDeprecatedParameterUsage(testSourceDirectory, "testSourceDirectory", "testSourceDirectories");
locator.addSearchPath(FileResourceLoader.ID, project.getFile().getParentFile().getAbsolutePath());
locator.addSearchPath("url", "");
locator.setOutputDirectory(new File(project.getBuild().getDirectory()));
// 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() ) );
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
try {
CheckstyleExecutorRequest request = createRequest().setLicenseArtifacts(collectArtifacts("license")).setConfigurationArtifacts(collectArtifacts("configuration")).setOmitIgnoredModules(omitIgnoredModules);
CheckstyleResults results = checkstyleExecutor.executeCheckstyle(request);
ResourceBundle bundle = getBundle(locale);
generateReportStatics();
generateMainReport(results, bundle);
if (enableRSS) {
CheckstyleRssGeneratorRequest checkstyleRssGeneratorRequest = new CheckstyleRssGeneratorRequest(this.project, this.getCopyright(), outputDirectory, getLog());
checkstyleRssGenerator.generateRSS(results, checkstyleRssGeneratorRequest);
}
} catch (CheckstyleException e) {
throw new MavenReportException("Failed during checkstyle configuration", e);
} catch (CheckstyleExecutorException e) {
throw new MavenReportException("Failed during checkstyle execution", e);
} finally {
//be sure to restore original context classloader
Thread.currentThread().setContextClassLoader(currentClassLoader);
}
}
use of com.puppycrawl.tools.checkstyle.api.CheckstyleException in project checkstyle by checkstyle.
the class PropertyCacheFile method loadExternalResource.
/**
* Loads the content of external resource.
* @param location external resource location.
* @return array of bytes which respresents the content of external resource in binary form.
* @throws CheckstyleException if error while loading occurs.
*/
private static byte[] loadExternalResource(String location) throws CheckstyleException {
final byte[] content;
final URI uri = CommonUtils.getUriByFilename(location);
try {
content = ByteStreams.toByteArray(new BufferedInputStream(uri.toURL().openStream()));
} catch (IOException ex) {
throw new CheckstyleException("Unable to load external resource file " + location, ex);
}
return content;
}
use of com.puppycrawl.tools.checkstyle.api.CheckstyleException in project checkstyle by checkstyle.
the class TreeWalker method processFiltered.
@Override
protected void processFiltered(File file, List<String> lines) throws CheckstyleException {
// check if already checked and passed the file
if (CommonUtils.matchesFileExtension(file, getFileExtensions())) {
final String msg = "%s occurred during the analysis of file %s.";
final String fileName = file.getPath();
try {
final FileText text = FileText.fromLines(file, lines);
final FileContents contents = new FileContents(text);
final DetailAST rootAST = parse(contents);
getMessageCollector().reset();
walk(rootAST, contents, AstState.ORDINARY);
final DetailAST astWithComments = appendHiddenCommentNodes(rootAST);
walk(astWithComments, contents, AstState.WITH_COMMENTS);
} catch (final TokenStreamRecognitionException tre) {
final String exceptionMsg = String.format(Locale.ROOT, msg, "TokenStreamRecognitionException", fileName);
throw new CheckstyleException(exceptionMsg, tre);
} catch (RecognitionException | TokenStreamException ex) {
final String exceptionMsg = String.format(Locale.ROOT, msg, ex.getClass().getSimpleName(), fileName);
throw new CheckstyleException(exceptionMsg, ex);
}
}
}
use of com.puppycrawl.tools.checkstyle.api.CheckstyleException in project checkstyle by checkstyle.
the class SuppressionFilter method suppressionSourceExists.
/**
* Checks if suppression source with given fileName exists.
* @param fileName name of the suppressions file.
* @return true if suppression file exists, otherwise false
*/
private static boolean suppressionSourceExists(String fileName) {
boolean suppressionSourceExists = true;
InputStream sourceInput = null;
try {
final URI uriByFilename = CommonUtils.getUriByFilename(fileName);
final URL url = uriByFilename.toURL();
sourceInput = url.openStream();
} catch (CheckstyleException | IOException ignored) {
suppressionSourceExists = false;
} finally {
if (sourceInput != null) {
try {
sourceInput.close();
} catch (IOException ignored) {
suppressionSourceExists = false;
}
}
}
return suppressionSourceExists;
}
Aggregations