2012-11-19 5 views
0

우리는 Visual Studio Professional 2012로 전환하고 있으며 이제 코드 분석에 액세스 할 수 있습니다.코드 분석 규칙 및 사전 공유

이전에는 FxCop을 사용하고 SourceControlPath\OurFxCopSharedProject.FxCop 매개 변수를 전달했습니다. 또한 FxCop.exe가 포함 된 (소스가 제어되는) 폴더에 CustomDictionary.xml을 추가했습니다. 이는 많은 산업별 용어를 사용하고 분석 규칙을 표준화했기 때문에 효과가있었습니다.

VS 2012에서는 Code Analysis Dictionary must be applied to each projectRule Set must be specified for each project 인 것으로 보입니다.

Microsoft 기본 권장 규칙 및 표준 사전 대신 .rulesetCustomDictionary.xml 표준에 기존 프로젝트와 새 프로젝트를 기본값으로 설정하는 방법이 있습니까? 우리는 수백 가지의 솔루션과 더 많은 프로젝트를 보유하고 있습니다.

답변

1

예, 적어도 VS2010에 대해서는 가능하며 VS2012에 대해서도 동일하게 작동합니다.

나는 this blog post에 설명 된대로 세부 사항을 따랐으며, 저에게는 큰 도움이되었습니다.

빌드 된 첫 번째 프로젝트에 대해 구성된 룰 세트가 구성된 프로젝트와 관계없이 모든 프로젝트의 룰 세트가되는 VS2010에도 문제가있었습니다. 이것은 우리 단위 테스트 프로젝트의 규칙을 완화했기 때문에 나에게 적합하지 않았습니다. VS2012에서 고정되어 있다고 가정하지만,이 절차가 아니라면 그 해결 방법을 제공합니다.


업데이트

블로그는 더 이상 존재하지 않습니다. 나는 http://web.archive.org/web/20140531211137/http://kentb.blogspot.co.nz/2011_01_01_archive.html에 아래를 발견했다.

샘플 솔루션은 여전히 ​​https://onedrive.live.com/?cid=328ba01b2a22de20&id=328BA01B2A22DE20%21178&authkey=!ALAeFtsfPqgdMCk

모든 신용에서 찾을 수 있습니다 비주얼 스튜디오없이 Kent Boogaart


코드 분석가는 2010

이 포스팅은 단계별 지침을 제공합니다 Visual Studio 2010의 코드 분석을 빌드에 통합하는 방법에 대해 설명합니다. 아직 작성하지 않았다면 달성 할 내용에 대한 첫 번째 게시물을 읽어보십시오. 원하는 경우 이전 게시물의 지침에 따라 Visual Studio 2008의 코드 분석을 통합 할 수 있습니다. Visual Studio 2010이 설치된 컴퓨터가 필요하지만 올바르게 설정된 후에는 프로젝트를 빌드하는 데 필요하지 않습니다. Visual Studio가 기본 위치에 설치되어 있다고 가정합니다. 필요에 따라 경로를 조정하십시오.

우리는 다음과 같은 디렉토리 구조로 시작하는 가정 :

Project 
    Lib 
    Src 

1 단계 : 복사 코드 분석 공구 Lib\Code AnalysisC:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop

복사 전체 내용.

C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\CodeAnalysis의 전체 내용을 Lib\Code Analysis에 복사하십시오.

복사 다음 파일 Lib\Code Analysis에 :

  • C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualC\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.Dll
  • C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.CodeAnalysis.Sdk\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
  • C:\Program Files\Microsoft Visual Studio 10.0\DIA SDK\bin\msdia100.dll C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dll
  • C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcr100.dll

2 단계 : 코드 분석 대상 파일 만들기

CodeAnalysis.targets이라는 파일을 만들고 Src 디렉토리에 저장하십시오. 다음은이 파일의 내용을위한 시작점입니다. 당신은 당신의 요구에 필요한 조정할해야합니다

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <!-- 
     Inject our own target before the code analysis runs. 
     --> 
     <RunCodeAnalysisDependsOn> 
      ConfigureCodeAnalysis; 
      $(RunCodeAnalysisDependsOn); 
     </RunCodeAnalysisDependsOn> 

     <!-- 
     Ensure code analysis is run 
     --> 
     <RunCodeAnalysis>True</RunCodeAnalysis> 

     <!-- 
     Set this to false if you don't want all code analysis violations to be treated as errors. 
     --> 
     <CodeAnalysisTreatWarningsAsErrors>True</CodeAnalysisTreatWarningsAsErrors> 
     <!-- 
     This should be set to resolve to the Lib directory, which must contain the code analysis tooling. 
     --> 
     <PathToLib>$(MSBuildProjectDirectory)\..\..\Lib\</PathToLib> 
     <!-- 
     This should be set to resolve to the directory containing this targets file. 
     --> 
     <PathToTargets>$(MSBuildProjectDirectory)\..\</PathToTargets> 

     <!-- 
     Setting these properties is required in order for the code analysis targets to execute correctly. 
     Without setting these, it will look for the tooling under default installation directories instead 
     --> 
     <CodeAnalysisTargets>$(PathToLib)\Code Analysis\Microsoft.CodeAnalysis.Targets</CodeAnalysisTargets> 
     <CodeAnalysisPath>$(PathToLib)\Code Analysis</CodeAnalysisPath> 
     <!-- 
     Assign default code analysis rules 
     --> 
     <CodeAnalysisRuleSet>$(PathToTargets)CodeAnalysis.Default.ruleset</CodeAnalysisRuleSet> 
    </PropertyGroup> 
    <UsingTask AssemblyFile="$(PathToLib)\MSBuildSdcTasks\Microsoft.Sdc.Tasks.dll" TaskName="StringComparison"/> 
    <Target Name="ConfigureCodeAnalysis"> 
     <!-- 
     Assume that any projects with ".Tests" in their names are test projects 
     --> 
     <StringComparison Comparison="Contains" Param1="$(AssemblyName)" Param2=".Tests"> 
      <Output TaskParameter="Result" PropertyName="IsTestProject"/> 
     </StringComparison> 
     <!-- 
     Assign different rules for test projects (more relaxed) 
     --> 
     <CreateProperty Condition="$(IsTestProject)" Value="$(PathToTargets)CodeAnalysis.Tests.ruleset"> 
      <Output TaskParameter="Value" PropertyName="CodeAnalysisRuleSet"/> 
     </CreateProperty> 
    </Target> 
</Project> 

3 단계 : 규칙을 만들기

Src 디렉토리에 CodeAnalysis.Default.rulesetCodeAnalysis.Tests.ruleset라는 파일을 생성합니다 설정합니다. File/New/File/Code Analysis Rule Set을 선택하여 Visual Studio 2010에서 이러한 파일을 만들 수 있습니다. 또는 다운로드 한 예제의 파일을 복사 할 수도 있습니다.

4 단계 :는, 관련 프로젝트 코드 분석이 필요한 모든 프로젝트에 대한

에 대한 코드 분석을 활성화 .csproj 파일을 열고 Microsoft.CSharp.targets의 가져 오기 전에 다음을 삽입 :

<Import Project="..\CodeAnalysis.targets" /> 

참고 : Microsoft.CSharp.targets 가져 오기 전에 삽입하는 것이 매우 중요합니다.

5 단계 :,

가 활성화 된 규칙, 규칙 설정하는 조건을 변경하기 위해 CodeAnalysis.targets, CodeAnalysis.Default.rulesetCodeAnalysis.Tests.ruleset 파일을 조정할 수도 있습니다를 사용하는 등 필요한 조정할 등 위에서 언급 한 것처럼 VS2010을 사용하여 .ruleset 파일을 만들고 편집 할 수 있습니다.

코드 분석이 이제 프로젝트와 통합되었습니다. Visual Studio, 명령 줄 또는 빌드 서버에 관계없이 빌드하는 곳은 관련이 없습니다. 모든 경우 코드 분석이 프로젝트에 실행됩니다. 아래의 모든 작업을 보여주는 예제 솔루션을 다운로드 할 수 있습니다.

문제 해결이 CA0001 Phx.FatalError을 얻을 경우, 당신은 가능성이 빌드 시스템에서 msdia100.dll 등록해야

: 빌드 경우

regsvr32 msdia100.dll 

당신은 아마도, 너무, 빌드 스크립트에이 통합 수를 사용자에게 충분한 권한이 있습니다.