Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ~~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) * wtyczka [[.:resharper|Resharper]] również przeprowadza analizę kodu automatycznie w trakcie edycji programu (ponad 1400 reguł!) ===== Wykrywane wady ===== * wytyczne [[http://msdn.microsoft.com/en-us/library/ms229042%28v=vs.110%29.aspx|.NET Framework Design Guidelines]] * konwencja nazewnicza * zwalnianie zasobów * konstrukcja bibliotek * lokalizacja (GlobalizationRules) * wydajność * bezpieczeństwo, np. SQL Injection * DataFlow (przepływ danych) * MSDN [[https://msdn.microsoft.com/en-us/library/ee1hzekz.aspx|Lista ostrzeżeń]] * np.:[[http://msdn.microsoft.com/en-us/library/ms182296.aspx|Security Warnings]] * np. [[https://msdn.microsoft.com/en-us/library/ms182310.aspx|CA2100: Review SQL queries for security vulnerabilities]] ===== FxCop w VS ===== * **Build -> Run Code Analysis** {{ :zajecia:znd_2014_1:fxcop_window.png?350 |}} ===== Wybór reguł ===== * Wybór zestawu reguł: **Project -> Propoerties -> Common Properties -> Code Analysis Settings** {{ :zajecia:znd_2014_1:fxcop_config.png?500 |}} ===== 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'' <code csharp> [SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")] public class MyClass { } </code> <code csharp> [module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")] </code> ===== TFS i analiza kodu ===== * Check-in Policies * Wymuszenie analizy przed zatwierdzeniem zmian: **Team Project Settings -> Source Control -> Check-in Policy -> Add** {{https://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?600}} ===== ===== * 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 * [[http://msdn.microsoft.com/en-us/library/bb429449%28v=vs.80%29.aspx|Opcje aplikacji konsolowej]] * [[http://fxcopaspnetsecurity.codeplex.com/|Fxcop ASP.NET security rules]] dodatek do FxCop 10 z regułami ASP.NET ===== Więcej informacji ===== * [[http://sekurak.pl/statyczna-analiza-bezpieczenstwa-kodu-aplikacji-czesc-3-fxcop/|Statyczna analiza bezpieczeństwa kodu aplikacji — FxCop]] by Adrian “Vizzdoom” Michalczyk * [[http://www.codeproject.com/Articles/78599/How-to-Use-FxCop|How to use FxCop]] by Anil_Saran * [[http://msdn.microsoft.com/en-us/library/bb429476%28v=vs.80%29.aspx|FxCop MSDN]] * [[http://www.microsoft.com/en-us/download/details.aspx?id=6544|FxCop 10.0 download]] * [[wp>FxCop]] Wikipedia