Statyczna analiza kodu - FXCop
FxCop
- darmowe narzędzie firmy Microsoft do statycznej analizy kodu .Net.
- wbudowane w VS Premium/Ultimate, dostępne w Windows SDK
- analizuje kod pośredni, a nie kod źródłowy
- wykrywa ponad 200 różnych defektów
- możliwość definiowania własnych reguł
- narzędzie konsolowe oraz GUI (w starszych wersjach)
- wtyczka Resharper również przeprowadza analizę kodu automatycznie w trakcie edycji programu (ponad 1400 reguł!)
Wykrywane wady
- wytyczne .NET Framework Design Guidelines
- konwencja nazewnicza
- zwalnianie zasobów
- konstrukcja bibliotek
- lokalizacja (GlobalizationRules)
- wydajność
- bezpieczeństwo, np. SQL Injection
- DataFlow (przepływ danych)
- MSDN Lista ostrzeżeń
Wyłączanie ostrzeżeń
- Wyłączanie ostrzeżeń danego typu Actions → Suppress Message → In Source / In Project Suppression File
- w pliku (In Source)
- dla całego projektu (In Project Suppression File)
- Atrybut
SuppressMessage
[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")] public class MyClass { }
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")]
TFS i analiza kodu
- Check-in Policies
- Wymuszenie analizy przed zatwierdzeniem zmian: Team Project Settings → Source Control → Check-in Policy → Add
- Check-in Policies
- Enforce check-in to only contain files that are part of current solution.
- Enforce C/C++ Code Analysis (/analyze)
- Enforce Code Analysis for Managed Code
- Można wybrać wybrane grupy reguł
- Enable Code Analysis on Build - można wymusić też analizę przy każdej kompilacji lokalnie lub na serwerze buildów (TFS)
- Tworzenie zadań z wykrytych błedów
- Code Analysis → Actions → Create Work Item
- Error List → Create Work Item
Aplikacja konsolowa
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop\
- silniki wyszukiwania:
FxCop\Engines
- reguły:
FxCop\Rules
Rule Sets
pliki XML z regułami dla projektów- Fxcop ASP.NET security rules dodatek do FxCop 10 z regułami ASP.NET
Więcej informacji
- Statyczna analiza bezpieczeństwa kodu aplikacji — FxCop by Adrian “Vizzdoom” Michalczyk
- How to use FxCop by Anil_Saran
- FxCop Wikipedia