2012-03-08 2 views
0

저는 PSake를 통해 모든 빌드를 자동화했으며 TeamCity 빌드를 더욱 강력하게 만드는 데 정말 유용합니다.프로젝트에 경고라는 오류가 있는지 확인하십시오.

내가 소개하고자하는 한 가지 방법은 솔루션의 모든 프로젝트에 경고가 true로 설정된 경고가 있는지 확인하는 것입니다. 이 작업을 수행하지 않는 프로젝트를 발견하는 것은 그리 자주 아니지만 현재 널리 퍼지지 않은 레거시 코드베이스에서도 작업하고 있습니다.

설정이 적용되었다는 것을 빠르게 확인할 수 있기를 희망했습니다. 내가 거기 추측하고 *이 PROJ 파일.에서 올바른 텍스트 (

<TreatWarningsAsErrors>true</TreatWarningsAsErrors> 

) 검사에 의한 방법이 될 것입니다하지만 난 청소기 이상 효과적인 방법이있을 수 있습니다 희망했다.

아이디어가 있으십니까?

답변

1

. * proj 파일을 탐색 할 때 잘못된 점을 이해하지 못하기 때문에 전체 문자열 리터럴을 검색하는 것을 원하지 않는다고 가정합니다.

프로젝트 파일에는 여기에 당신은 당신이 원하는 정보를 찾을 수 있도록하는 Linq를 XML로 코드의 기반 XML 있습니다 : 문제 영역에서 조금 꺼져

void VerifyTreatWarningsAsErrorsIsOn(string projFilename) 
{ 
    XNamespace xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"; 
    var twaeList = XDocument.Load(projFilename).Descendants(xmlns + "TreatWarningsAsErrors").ToList(); 

    if (twaeList.Count() > 0) 
    { 
     var falseValues = twaeList.Where(x => x.Value == "true"); 
     if (falseValues.Count() > 0) 
     { 
       // Not good.. 
     } 
    } 
    else 
    { 
     // None exist.. not good either.. 
    } 
} 

한 가지는 당신이 하나의 구성 (예 : 디버그)에 대해 플래그가 켜져있는 프로젝트 파일이있을 수 있지만 다른 구성에서도이 파일이 있는지 여부를 알 수 없습니다.

실제로 위의 코드를 확장하여 모든 구성을 트래버스하고 구성 당 플래그를 찾을 수 있습니다. 또한 구성이 존재하지 않거나 '거짓'으로 설정된 경우 - XML ​​문서를 조작하고 이러한 모든 문제를 즉시 삽입/수정할 수 있습니다.

HTH.

+0

코드에 감사드립니다. 좋은 접근 방법 일 수 있습니다. 도구 나 무언가를 통해 알려진 기법이 있기를 바랬던 것 같습니다. 아마 여기에 코드를 사용하여 내 자신을 생성 할 것입니다. 귀하의 다른 구성 지점에 대한 응답으로, 나는 모든 구성 섹션에서 설정을 확인하고 그것이 다른 곳이 아닌지 확인하실 수 있습니다. – ArtificialGold

관련 문제