Running Code Analysis (FxCop > 10) on build agent without installing Visual Studio

前端 未结 5 1944
生来不讨喜
生来不讨喜 2020-11-29 17:02

After FxCop 10 Microsoft stopped shipping a separate installer for FxCop. Officially one can currently only run code analysis (FxCop 12.0 / 14.0 / 15.0) after installing Vis

5条回答
  •  天涯浪人
    2020-11-29 17:35

    For FxCop 14.0 / VS2015 see this answer


    Run FxCop 12.0 without installing Visual Studio 2013

    Okay, i've invested 6 hours and now it's working. I've added all necessary executables, dlls and msbuild targets to source control.

    These are the files that i had to add to source control: (Please consider that this might violate some license agreements)

    (source control)\dev\tools\FxCop
    │
    ├[amd64]
    │   │
    │   └msdia120.dll
    ├[Engines]
    │   │
    │   ├IntrospectionAnalysisEngine.dll
    │   └PhoenixAnalysisEngine.dll
    ├[Msbuild]
    │   │
    │   ├fxcoptask.dll
    │   ├Microsoft.CodeAnalysis.Targets
    │   ├Microsoft.VisualStudio.CodeAnalysis.dll
    │   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
    ├[Repository]
    │   │
    │   ├[Compatibility]
    │   │   │
    │   │   ├Desktop2.0.xml
    │   │   ├Desktop2.0SP1.xml
    │   │   ├Desktop2.0SP2.xml
    │   │   ├Desktop3.0.xml
    │   │   ├Desktop3.0SP1.xml
    │   │   ├Desktop3.0SP2.xml
    │   │   ├Desktop3.5.xml
    │   │   └Desktop3.5SP1.xml
    │   └system32.bin
    ├[Rules]
    │   │
    │   ├DataflowRules.dll
    │   ├DesignRules.dll
    │   ├GlobalizationRules.dll
    │   ├InteroperabilityRules.dll
    │   ├MaintainabilityRules.dll
    │   ├MobilityRules.dll
    │   ├NamingRules.dll
    │   ├PerformanceRules.dll
    │   ├PortabilityRules.dll
    │   ├ReliabilityRules.dll
    │   ├SecurityRules.dll
    │   ├SecurityTransparencyRules.dll
    │   └UsageRules.dll
    ├[Xml]
    │   │
    │   ├CodeAnalysisReport.xsl
    │   ├FxCopReport.xsl
    │   └VSConsoleOutput.xsl
    ├Architecture-msil.dll
    ├CodeAnalysis.dll
    ├CustomDictionary.xml
    ├FxCopCmd.exe
    ├FxCopCmd.exe.config
    ├FxCopCommon.dll
    ├FxCopSdk.dll
    ├Microsoft.Cci.dll
    ├Microsoft.VisualStudio.CodeAnalysis.Common.dll
    ├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
    ├Microsoft.VisualStudio.CodeAnalysis.dll
    ├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
    ├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
    ├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
    ├msdia120.dll
    ├mssp7en.dll
    ├mssp7en.lex
    ├phx.dll
    └Runtime-vccrt-win-msil.dll
    

    Copy them as follows:

    • entire FxCop installation folder contents from

      %programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop

    • from Visual Studio 2013 C++ redist, or any other place: (also see legal information) copy msdia120 x86 and x64 to:

      msdia120.dll (874 KiB)

      amd64\msdia120.dll (1.07 MiB)

    • from the Global Assembly Cache (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) of a computer where VS2013 is installed, copy the following DLLs to: (Make sure the DLLs are version 12.0 !)

      Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

      Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

    • All files from %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis to

      Msbuild\fxcoptask.dll

      Msbuild\Microsoft.CodeAnalysis.Targets

    (Furthermore you need the appropriate Windows (7.1 / 8.1) SDK for building the .net 4.0 / 4.5 application installed on the build agent)

    Additionally we had to adjust the project msbuild file as follows:

    
    
    
    

    And this is what our Custom.CodeAnalysis.targets contains:

      
        
        en-US
    
        
        $(SourcesDir)Custom.ruleset
    
        
        $(ToolsDir)FxCop\
    
        
        $(CodeAnalysisPath)Msbuild\Microsoft.CodeAnalysis.Targets
      
      
    
      
        false
        true
      
    
      
      
        
      
    
    
    

提交回复
热议问题