poniedziałek, 23 stycznia 2012

FxCop żeby programować lepiej...

Tworzenie kodu programu nie jest rzeczą trudną. Tworzenie poprawnej architektury oraz poprawnego kodu stwarza więcej problemów.
Aby ułatwić programistom pisanie lepszego kodu, który z pewnością będzie bardziej czytelny dla innych programistów powstało wiele narzędzi sprawdzających poprawność tworzonego kodu.
Jednym z takich narzędzi jest FxCope. Jest to darmowe narzędzie - obecnie w wersji 10.0 dla Visual Studio 2010. Jeżeli posiadamy wersję Ultimatum lub Premium program zintegruje się idealnie ze środowiskiem. Jako iż nie dysponuję taką wersją a tylko Profesional, najlepiej z FxCopa korzystać jako aplikacji zewnętrznej.

Główne okno aplikacji prezentuje się następująco:


Okno składa się z 3 części:
  • część wyświetlająca jakie moduły są załadowane
  • prawa część w której wyświetlają się znalezione problemy
  • dolna część wyświetla szczegółowe informacje nt. wybranego problemu
 Zobaczmy na przykładowy scenariusz użytkowania narzędzia:
  1. Wczytujemy przykładową aplikację poprzez naciśnięcie klawisza Add Target for Analize:




  1. Następnie klikamy na przycisk Analyze. Po analizie kodu zostanie wyświetlony raport w którym możemy sprawdzić i oczywiście poprawić znalezione błędy:


Aby ułatwić sobie pracę i móc używać FxCop-a w wersji Profesional Visual Studio 2010 można skorzystać z możliwości dodawania zewnętrznych narzędzi. W tym celu wybieramy w VS opcję External Tools... :


W nowym oknie:


klikamy w przycisk Add i wprowadzamy następujące dane:
  • Title - nazwa narzędzia
  • Command - ścieżka gdzie znajduje się konsolowa wersja narzędzia FxCop (w moim przypadku jest to: C:\Program Files (x86)\Microsoft Fxcop 10.0\FxCopCmd.exe)
  • Arguments - argumenty przesłane do narzędzia oraz ścieżka gdzie znajdują się zestawy zasad którymi kieruje się FxCop podczas sprawdzania kodu: /c /f:$(TargetPath) /d:$(BinDir) /r:"C:\Program Files (x86)\Microsoft Fxcop 10.0\Rules"
  • Initial directory - startowy katalog - C:\Program Files (x86)\Microsoft Fxcop 10.0
  • Zaznaczamy koniecznie opcję Use Output Window
 Po prawidłowej konfiguracji możemy rozpocząć pracę z narzędziem:
Wybieramy z menu Tools -> FxCope, następnie rezultat analizy zostanie wyświetlony w okienku Output:




W zależności od naszych preferencji możemy korzystać z wersji stand-alone lub też tej w VS.

sobota, 21 stycznia 2012

Firebird utworzenie bazy i połączenie w .NET

Dzisiaj walczyłem z połączeniem w Firebirdzie. Okazało się że dokładne czytanie dokumentacji popłaca i potrafi czasami zaoszczędzić mnóstwo czasu.

Na początek tworzenie bazy. Tworzyć bazę możemy albo za pomocą któregoś z dostępnych narzędzi graficznych (większość odpłatna) lub za pomocą konsoli: Firebird ISQL Tool.
Wybrałem drugie rozwiązanie z powodu mniejszej czasochłonności (jak mi się wydawało wcześniej).

Komendy które są potrzebne aby utworzyć nową bazę:

SQL>CREATE DATABASE 'D:\data\test.fdb' page_size 8192#
CON>user 'SYSDBA' password 'masterkey';#

Uwaga! Znaczek # oznacza klawisz Enter. W dokumentacji jest to zawarte parę zdań wcześniej niż samo użycie skryptu co może być trochę lekko mylące dla osób które nie czytają całościowo ich.

Jeżeli poprawnie zostanie utworzona baza danych otrzymamy komunikat:


Teraz mamy już gotową bazę danych. Czas utworzyć połączenie w aplikacji Windows Forms.
Na początek potrzebujemy providera dla .NET który możemy pobrać ze strony:
http://www.firebirdsql.org/en/net-provider/
Po zainstalowaniu, w projekcie dodajemy referencję do providera (DLL znajduje się w folderze który podaliśmy podczas instalacji).
Teraz wystarczy już tylko odpowiedni ConnectionString (bazuję na tym co znajduje się powyżej):


Code:
        public const string ConnectionString = @"User=SYSDBA;Password=masterkey;Database=C:\Towary.FDB;" +
                                               "DataSource=localhost; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true;" +
                                               "MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;";


Samo otworzenie połączenia jest już sprawą banalną:


Code:
            using(var conn = new FbConnection(ConnectionString))
            {
                conn.Open();
            }