Author: sisbell Date: Mon May 21 14:21:41 2007 New Revision: 540304 URL: http://svn.apache.org/viewvc?view=rev&rev=540304 Log: Initial import of FxCop plugin.
Added: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml (with props) incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml (with props) incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java (with props) Added: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml?view=auto&rev=540304 ============================================================================== --- incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml (added) +++ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml Mon May 21 14:21:41 2007 @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet type="text/xsl" href="http://www.gotdotnet.com/team/fxcop//xsl/1.35/FxCopReport.xsl"?> +<FxCopReport Version="1.35"> + <Localized> + <String Key="Category">Category</String> + <String Key="CollapseAll">Collapse All</String> + <String Key="CheckId">Check Id</String> + <String Key="Error">Error</String> + <String Key="Errors">error(s)</String> + <String Key="Line">Line</String> + <String Key="LocationNotStoredInPdb">[Location not stored in Pdb]</String> + <String Key="Project">Project</String> + <String Key="Rule">Rule</String> + <String Key="RuleDescription">Rule Description</String> + <String Key="Source">Source</String> + <String Key="Target">Target</String> + <String Key="Warning">Warning</String> + <String Key="Warnings">warning(s)</String> + <String Key="ReportTitle">Code Analysis Report</String> + </Localized> + <Exceptions> + <Exception Keyword="CA0055" Kind="AssemblyLoad"> + <Type>Microsoft.FxCop.Common.AssemblyLoadException</Type> + <ExceptionMessage>* Could not load file: 'target\NMaven.Logging.dll'.</ExceptionMessage> + </Exception> + <Exception Keyword="CA0052" Kind="Engine"> + <Type>Microsoft.FxCop.Sdk.FxCopException</Type> + <ExceptionMessage>No targets were selected.</ExceptionMessage> + </Exception> + </Exceptions> +</FxCopReport> Propchange: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/Output.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml?view=auto&rev=540304 ============================================================================== --- incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml (added) +++ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml Mon May 21 14:21:41 2007 @@ -0,0 +1,20 @@ +<?xml version="1.0"?><project> + <parent> + <artifactId>maven-dotnet-plugins</artifactId> + <groupId>org.apache.maven.dotnet.plugins</groupId> + <version>0.14-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.dotnet.plugins</groupId> + <artifactId>maven-fxcop-plugin</artifactId> + <version>0.14-SNAPSHOT</version> + <packaging>maven-plugin</packaging> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> \ No newline at end of file Propchange: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java?view=auto&rev=540304 ============================================================================== --- incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java (added) +++ incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java Mon May 21 14:21:41 2007 @@ -0,0 +1,147 @@ +package org.apache.maven.dotnet.plugin.fxcop; + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.dotnet.executable.ExecutionException; +import org.apache.maven.dotnet.PlatformUnsupportedException; +import org.apache.maven.dotnet.artifact.AssemblyRepositoryLayout; +import org.apache.maven.dotnet.artifact.AssemblyResolver; +import org.apache.maven.dotnet.artifact.ArtifactType; +import org.apache.maven.project.MavenProject; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.DefaultArtifactRepository; +import org.apache.maven.artifact.resolver.ArtifactResolutionException; +import org.apache.maven.artifact.resolver.ArtifactNotFoundException; +import org.apache.maven.artifact.Artifact; +import org.codehaus.plexus.util.FileUtils; + +import java.util.List; +import java.util.ArrayList; +import java.util.Set; +import java.io.File; +import java.io.IOException; + +/** + * @author Shane Isbell + * @goal fxcop + */ +public class FxCopMojo + extends AbstractMojo +{ + /** + * @component + */ + private org.apache.maven.dotnet.executable.NetExecutableFactory netExecutableFactory; + + /** + * The maven project. + * + * @parameter expression="${project}" + * @required + */ + private MavenProject project; + + /** + * The Vendor for the executable. + * + * @parameter expression="${vendor}" + */ + private String vendor; + + /** + * @parameter expression = "${frameworkVersion}" + */ + private String frameworkVersion; + + /** + * The profile that the executable should use. + * + * @parameter expression = "${profile}" default-value = "DEFAULT" + */ + private String profile; + + /** + * @component + */ + private AssemblyResolver assemblyResolver; + + /** + * @parameter expression="${settings.localRepository}" + * @readonly + */ + private String localRepository; + + /** + * @parameter expression = "${project.build.directory}" + */ + private File targetDirectory; + + + public void execute() + throws MojoExecutionException + { + + ArtifactRepository localArtifactRepository = + new DefaultArtifactRepository( "local", "file://" + localRepository, new AssemblyRepositoryLayout() ); + try + { + assemblyResolver.resolveTransitivelyFor( project, project.getArtifact(), project.getDependencies(), + project.getRemoteArtifactRepositories(), localArtifactRepository, + true ); + } + catch ( ArtifactResolutionException e ) + { + throw new MojoExecutionException( "NMAVEN-901-000: Unable to resolve assemblies", e ); + } + catch ( ArtifactNotFoundException e ) + { + throw new MojoExecutionException( "NMAVEN-901-001: Unable to resolve assemblies", e ); + } + + Set<Artifact> artifacts = project.getDependencyArtifacts(); + for ( Artifact artifact : artifacts ) + { + if ( artifact.getType().startsWith( "gac" ) ) + { + continue; + } + else + { + try + { + FileUtils.copyFileToDirectory( artifact.getFile(), targetDirectory ); + } + catch ( IOException e ) + { + throw new MojoExecutionException( "NMAVEN-1100-002: Artifact = " + artifact.toString(), e ); + } + } + } + + try + { + netExecutableFactory.getNetExecutableFor( vendor, frameworkVersion, profile, getCommands(), + null ).execute(); + } + catch ( ExecutionException e ) + { + throw new MojoExecutionException( "NMAVEN-xxx-000: Unable to execute: Vendor " + vendor + + ", frameworkVersion = " + frameworkVersion + ", Profile = " + profile, e ); + } + catch ( PlatformUnsupportedException e ) + { + throw new MojoExecutionException( "NMAVEN-xxx-001: Platform Unsupported: Vendor " + vendor + + ", frameworkVersion = " + frameworkVersion + ", Profile = " + profile, e ); + } + } + + public List<String> getCommands() + throws MojoExecutionException + { + List<String> commands = new ArrayList<String>(); + commands.add( "/f:target" + File.separator + project.getArtifactId() + "." + + ArtifactType.getArtifactTypeForPackagingName( project.getPackaging() ).getExtension() ); + commands.add( "/o:target" + File.separator + "Output.xml" ); + return commands; + } +} Propchange: incubator/nmaven/trunk/plugins/maven-fxcop-plugin/src/main/java/org/apache/maven/dotnet/plugin/fxcop/FxCopMojo.java ------------------------------------------------------------------------------ svn:eol-style = native