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)

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ń
np.:Security Warnings, CA2100: Review SQL queries for security vulnerabilities

Build -> Run Code Analysis
Analyze -> Run Code Analysis

W VS 2015 wyniki wyświetlane
w oknie Error list

Wybór zestawu reguł:
Project -> Propoerties -> Common Properties -> Code Analysis Settings

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")]

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ć grupy reguł

Enable Code Analysis on Build - wymuszenie analizy przy każdej kompilacji lokalnie lub na serwerze buildów (TFS)

Tworzenie zadań z wykrytych błędów

Code Analysis -> Actions -> Create Work Item

Error List -> Create Work Item

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

Opcje aplikacji konsolowej

Fxcop ASP.NET security rules dodatek do FxCop 10 z regułami ASP.NET

Analyse -> Calculate Code Metrics

Maintainability Index - utrzymywalność, wyznaczana za pomocą reguły CA1505: Avoid unmaintainable code
20-100 good, 10-19 moderately, 0-9 low

Cyclomatic Complexity - złożoność struktury kodu, ilość różnych ścieżek. Program z dużą liczbą ścieżek wymaga wielu testów do pokrycia kodu

Depth of Inheritance - głębokość dziedziczenia

Class Coupling - uwikładnie klas, ilość unikatowych obiektów od których zależy badany fragment kodu

Lines of Code

Statyczna analiza bezpieczeństwa kodu aplikacji — FxCop by Adrian “Vizzdoom” Michalczyk

How to use FxCop by Anil_Saran

FxCop MSDN

FxCop 10.0 download

FxCop Wikipedia