Убедитесь, что в проектах есть предупреждения как ошибки - PullRequest
0 голосов
/ 08 марта 2012

Я автоматизировал все свои сборки с помощью PSake и нашел действительно полезным сделать мою сборку TeamCity более мощной.

Одна вещь, которую я хотел бы представить, это шаг, чтобы убедиться, что все проекты в решении имеют предупреждения как ошибки, установленные на true. Не часто я замечаю проект, в котором его нет, но сейчас я также работаю над устаревшей базой кода, где он не так распространен.

Я надеялся, что смогу быстро проверить, включена ли настройка. Я предполагаю, что был бы способ проверить правильный текст (

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

) в файлах. * Proj, но я надеялся, что может быть более чистый или более эффективный способ.

Есть идеи?

1 Ответ

1 голос
/ 09 марта 2012

Я не понимаю, что не так с проверкой файлов. * Proj, поэтому я предполагаю, что вы не захотите просто искать весь строковый литерал.

Файлы проекта основаны на XML, поэтомуВот фрагмент кода Linq to 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.

...