/* * Maven and Sonar plugin for .Net * Copyright (C) 2010 Jose Chillan and Alexandre Victoor * mailto: jose.chillan@codehaus.org or alexvictoor@codehaus.org * * This program 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. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 */ /* * Created on Jan 14, 2010 * */ package org.apache.maven.dotnet.stylecop; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.maven.dotnet.commons.XmlUtils; import org.apache.maven.dotnet.msbuild.xml.CreateItem; import org.apache.maven.dotnet.msbuild.xml.ItemGroup; import org.apache.maven.dotnet.msbuild.xml.ItemOutput; import org.apache.maven.dotnet.msbuild.xml.Project; import org.apache.maven.dotnet.msbuild.xml.PropertyGroup; import org.apache.maven.dotnet.msbuild.xml.StyleCopTask; import org.apache.maven.dotnet.msbuild.xml.Target; import org.apache.maven.dotnet.msbuild.xml.UsingTask; import org.codehaus.plexus.util.StringOutputStream; /** * An example of MSBuild project generation. * @author Jose CHILLAN Jan 14, 2010 */ public class ExampleMsbuildGeneration { private final static Logger log = LogManager.getLogger(ExampleMsbuildGeneration.class); /** * Test the generation of stylecop msbuild files. */ public static void main(String[] args) { StyleCopGenerator generator = new StyleCopGenerator(); generator.setOutput(new File("C:/Work/CodeQuality/Temp/Example/target/style-cop-results.xml")); generator.setProjectRoot(new File("C:/Work/CodeQuality/Temp/Example")); generator.setSettings(new File("C:/Work/CodeQuality/Configuration/StyleCop/default-rules.StyleCop")); generator.setVisualSolution(new File("C:/Work/CodeQuality/Temp/Example/Example.sln")); generator.setStyleCopRoot(new File("C:/Program Files/Microsoft StyleCop 4.3.2.1")); List<File> projects = new ArrayList<File>(); projects.add(new File("C:/Work/CodeQuality/Temp/Example/Example.Core/Example.Core.csproj")); projects.add(new File("C:/Work/CodeQuality/Temp/Example/Example.Application/Example.Application.csproj")); generator.setVisualProjects(projects); StringOutputStream outputStream = new StringOutputStream(); generator.generate(outputStream); System.out.println("Result:\n" + outputStream ); try { FileOutputStream outputFile = new FileOutputStream(new File("C:/Work/CodeQuality/Temp/Example/style-build.xml")); generator.generate(outputFile); outputFile.close(); } catch (IOException e) { log.debug("Generation error", e); } } /** * Tests the MS Project generation */ public static void generateSampleProject() { Project project= new Project(); // Properties used PropertyGroup propGroup = new PropertyGroup(); propGroup.setProjectRoot("C:/temp/myProject"); propGroup.setStyleCopRoot("C:\\Program Files\\Microsoft StyleCop 4.3.2.1"); // StyleCop task definition UsingTask usingTask = new UsingTask(); usingTask.setAssemblyFile("$(StyleCopRoot)\\Microsoft.StyleCop.dll"); usingTask.setTaskName("StyleCopTask"); // StyleCop execution target Target target = new Target(); target.setName("StyleCop"); StyleCopTask task = new StyleCopTask(); task.setFullPath("C:/temp/"); task.setOutputFile("C:/temp/result.xml"); task.setSettingsFile("C:/temp/rules.StyleCop"); task.setSourceFiles("@(SourceAnalysisFiles)"); // Builds the creation item CreateItem createItem = new CreateItem(); createItem.setInclude("%(Project.RootDir)%(Project.Directory)**\\*.cs"); ItemOutput output = new ItemOutput(); output.setTaskParameter("Include"); output.setItemName("SourceAnalysisFiles"); createItem.setOutput(output); // ItemGroup group = new ItemGroup(); group.addProject("C:\\Temp\\mySolution\\MyProject.csproj"); // Populates the task target.setStyleCopTask(task); // Finishes the project project.setUsingTask(usingTask); project.setPropertyGroup(propGroup); project.setDefaultTargets("StyleCop"); project.setToolsVersion("3.5"); project.addItem(group); project.addTarget(target); StringOutputStream outputStream = new StringOutputStream(); XmlUtils.marshall(project, outputStream); System.out.println("Result:\n" + outputStream ); } }