2010-08-24 2 views
5

현재 소스 제어 및 지속적인 통합을 위해 TFS 2008을 사용하고 있습니다.FXCop 경고를 기반으로 TFS 빌드를 실패하는 방법

FXCop을 사용하여 성능 및 보안 경고를 확인합니다. Architect 또는 수석 개발자는 스프린트가 끝나거나 배달 전에 FX Cop을 실행합니다.

경고가있는 경우 CI의 일부로 실행하고 빌드가 실패하면이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

5

나는 비슷한 것을 연구 해왔다. 이 질문이 약간 오래된 것이지만, 그것이 당신을 도울 것이라고 기대하고 있습니다.

필자는 FxCopCmd를 호출하는 빌드 후 이벤트를 작성하여 시작했습니다. 내 경우

, 나는

나는이에 대한 .fxcop 프로젝트 파일을 사용하여 내장 된 규칙 및 (.dll 인에서) 또한 일부 사용자 지정 규칙의 일부 코드의 단지 작은 부분 집합을, 원 - GUI를 통해 원하는 방식으로 구성한 다음 빌드 후 이벤트의 프로젝트 파일에 FxCopCmd를 지정합니다.

대단히 효과적 이었지만 규칙 위반은 경고로만 나타났습니다. "경고를 오류로 처리"옵션이 여기에 적용되지 않는 것 같아서 다른 해결책을 찾아야했습니다.

궁극적으로 나를 위해 가장 잘 작동 한 것은 내가 우연히 발견 한 블로그 게시물을 기반으로했습니다.

두 개의 새로운 이벤트를 추가하도록 프로젝트 파일을 수정했습니다.

난의 FxCop하는 몇 가지 추가 파라미터와 재료가 있지만, 그 요지는 다음과

  1. (트리거 PROCESS 구축) :

    1: <PropertyGroup> 
        2: <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults> 
        3: <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent> 
        4: </PropertyGroup> 
        5: <Target Name="BeforeBuild"> 
        6: <Delete Files="$(FxCopResults)" ContinueOnError="true" /> 
        7: </Target> 
        8: <Target Name="AfterBuild"> 
        9: <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" /> 
        10: </Target> 
    

    일반적인 흐름이 같다

  2. 빌드가 시작되기 전에 이전 FxCop 결과 (있는 경우)가 지워집니다.
  3. 빌드 전 이벤트는
  4. 을 트리거
  5. (BUILD 시작) 마감 포스트 - 빌드 후
  6. 빌드 후 이벤트가 트리거 (FxCopCmd을 실행하는)
  7. ,의 FxCop 결과가있는 경우, 오류 제기된다. 예를 들어 - -의 FxCop 분석이 발생하는 경우
  8. 지금

(BUILD 프로세스가 완료) 4 개 규칙 위반, 빌드 4 경고와 1 오류를 생성합니다.

이 정보가 도움이되기를 바랍니다.

6

연속 통합 환경에서 사용하기 위해 지원되는 code analysis features within Visual Studio을 살펴볼 수 있습니다.

+0

이 기능은 VS의 Premium 또는 Ultimate 버전에만 적용되지 않습니까? –

+0

[... 코드 분석 ... Visual Studio Premium 또는 Visual Studio Ultimate] (http://msdn.microsoft.com/en-us/library/3z0aeatx%28v=vs.100%29.aspx) –

3

MSBuild와 일반 프로젝트/솔루션을 통해 빌드한다고 가정하면 모든 빌드 (클라이언트와 서버 모두)의 일부로 실행되도록 FXCop을 구성 할 수 있습니다. 프로젝트 속성 대화 상자에서 "코드 분석"탭을보십시오. 이 기능은 디버그 및 릴리스 빌드에 대해 별도로 설정할 수 있으므로 개발자가 쉽게 사용할 수있는 경우 릴리스 빌드의 오류로 설정할 수 있습니다.

이러한 FXCop 설정을 사용하면 위반 사항이 빌드에서 경고 대신 오류로 표시되도록 정의 할 수 있습니다. 또한 체크 인이 유효하기 전에 정의 된 규칙 집합을 사용하여 코드 분석을 실행해야하는 TFS 정책을 활성화하여 개발자가 체크인 전에 위반 사항을 수정하도록하여 빨간색 빌드를 절약 할 수 있습니다.

이 모든 것들을 켜는 것이 좋습니다 -이 수준의 품질을 목표로한다면 (좋은 생각은 아닙니다) 미리 체크인 할 수있는만큼 좋은 일을하는 것이 좋습니다.