2010-08-24 14 views
5

Şu anda kaynak kontrolü ve sürekli entegrasyon için TFS 2008 kullanıyoruz.FXCop uyarısına dayanan TFS yapısı nasıl başarısız olur

Performans ve güvenlik uyarılarını kontrol etmek için FXCop kullanıyoruz. Mimar veya üst düzey geliştirici, bir sprintin sonunda veya teslimattan önce FX Cop'u çalıştırır.

Bunun için CI'nin bir parçası olarak çalışmayı ve bir uyarı varsa derleme yapmamayı isteriz, bunu yapmanın en iyi yolu nedir?

cevap

5

Benzer bir şey üzerinde çalışıyorum. Bu soru biraz eski olsa da, size yardımcı olacağını umuyorum.

Çoğu gibi, FxCopCmd'yi çağıran bir post-build olayı yaparak başladım. Benim durumumda

, ben

Bunun için bir .fxcop proje dosyasını kullanılan yerleşik kuralları ve (bir .dll) ayrıca bazı özel bazı kurallar kod sadece küçük bir alt kümesini, istediği - GUI aracılığıyla nasıl istediğimi yapılandırarak ve sonra FxCopCmd'yi post-build olayındaki proje dosyasına işaret ederek.

Çoğunlukla, harika çalıştı, ancak kural ihlalleri yalnızca uyarı olarak ortaya çıktı. "Uyarıları hata olarak kabul et" seçeneği bunun için geçerli görünmüyor, bu yüzden farklı bir çözüm bulmam gerekiyordu.

Nihayetinde benim için en iyi sonuç ne oldu tökezledim bir blog yazısı dayanıyordu.

İki yeni olaya eklemek için proje dosyasını değiştirdim.

Ben FxCop için fazladan birkaç parametre ve şeyler var, ama bunun özü şudur:

  1. (tetiklenir SÜRECİNİ İNŞA):

    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> 
    

    genel akışı bu gibi

  2. Bir yapı başlamadan önce, önceki FxCop sonuçları (varsa) silinir.
  3. Öncesi Yapı Olay
  4. tetiklenir
  5. (YAP BAŞLIYOR) bitirir Sonrası İnşa sonra
  6. Sonrası Yapı Olay tetiklenir (FxCopCmd çalıştığı)
  7. , FxCop sonuçlarını varsa, bir hata yükseltildi. - örneğin - FxCop analizi oluşturulan eğer
  8. , Şimdi

(YAP SÜRECİ TAMAMLANDI IS) 4 kural ihlallerini, Yapınızın 4 uyarıları ve 1 hatası oluşturuyor.

Umarım bu yardımcı olur.

6

Sürekli bir bütünleştirme ortamında kullanılmak üzere desteklenen code analysis features within Visual Studio'a bakabilirsiniz.

+0

Bu yalnızca VS'nin Premium veya Ultimate sürümleri için geçerli olmaz mı? –

+0

[... Visual Studio Premium veya Visual Studio Ultimate kod çözümlemesi] (http://msdn.microsoft.com/en-us/library/3z0aeatx%28v=vs.100%29.aspx) –

3

MSBuild ve düzenli projeler/çözümler aracılığıyla yaptığınızı varsayarak, her yapının (istemci ve sunucu) bir parçası olarak çalışacak şekilde FXCop'i yapılandırabilirsiniz. Projenizin özellikler diyaloğunda "Kod Analizi" sekmesine bakın. Bunun hata ayıklama ve yayın sürümleri için ayrı ayrı ayarlanabileceğini unutmayın. Böylece, geliştiricilerinizin hayatını kolaylaştırırsa bunları Sürümler için hatalara atayabilirsiniz.

Bu FXCop ayarları, ihlallerin yapıda uyarılar yerine hatalar şeklinde göründüğünü tanımlamanıza izin verir. Ayrıca, kod çözümlemesinin, checkin geçerli olmadan önce tanımlanmış bir kurallar kümesiyle çalıştırılmasını gerektiren TFS politikasını etkinleştirmek istersiniz. Bu, geliştiricilerin, kontrol etmeden önce ihlalleri düzeltmeye zorlayarak bazı kırmızı yapılardan tasarruf etmelerini sağlar.

Tüm bu şeyleri açmanızı öneririm - bu seviyede bir kaliteyi hedefliyorsanız (ki bu hiç de kötü bir fikir değil), ön denetleme yapabileceğiniz kadar iyi olmakta fayda var.

İlgili konular