Ślad: • fxcop

Statyczna analiza kodu - FXCop

Writing /home/grochu/public_html/wiki/data/cache/0/0c9a1882a9848cc17fe57bd5d2f0b82f.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/meta/zajecia/znd_2016_1/fxcop.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.
Action unknown: siteexport_addpage
Writing /home/grochu/public_html/wiki/data/cache/1/14dee2afbf194b05460d3bf8f9b7b546.i failed
Writing /home/grochu/public_html/wiki/data/meta/zajecia/znd_2016_1/sidebar.meta failed

REVEAL

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)

Wykrywane wady

FxCop w VS 2013

Build → Run Code Analysis
Analyze → Run Code Analysis

W VS 2015 wyniki wyświetlane
w oknie Error list

Wybór reguł

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

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

msdnshared.blob.core.windows.net_media_msdnblogsfs_prod.evol.blogs.msdn.com_communityserver.blogs.components.weblogfiles_00_00_00_88_99_metablogapi_4188.clip_image002_666e2e8b.jpg

  • 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''

Metryki kodu

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

Więcej informacji