6 Mart 2017 Pazartesi

Parasoft C/C++ Test Statik Analiz Notlarım

Parasoft C++ Test Nedir?
Parasoft'un C++test, Jtest gibi farklı dillere hitap eden araçları var.  C++ test için söyle bir tanım yapılmış.
C++ Test improves C++ developer and team productivity by automating a number of  high impact techniques for error prevention and detection at early stages of development process.
Parasoft Statik Analiz Notlarım
Aşağıda Parasoft'un statik analiz aracıyla ilgili notlarım var. Parasoft'un Metrics aracı da statik analizle ilgili. Ancak Metrics konusunu farklı bir yazıda ele almayı uygun gördüm. Konuyla ilgili Parasoft C/C++ Test Metrics başlıklı yazıya göz atabilirsiniz.

Kurulum - Parasoft ve Lisans Sunucusu (Network License)
Desktop Edition için iki versiyon var. Node-locked veya Floating. Node-locked pek kullanışlı değil.

1. Floating kurulumunda lisans sunucusunu tanıtmak için Parasoft/Preferences menüsü seçilir. License nesnesi tıklanır. Host name ve Port number alanları doldurulur.

2. Daha sonra Edition = Custom Edition seçilir, tüm checkbox'lar tıklanır. Bu adımı yapmadan çalıştırmayı başaramadım. Niçin seçmek gerekiyor emin değilim.

3. Parasoft/Licenses/Deactivate C++ Test ve Parasoft/Licenses/Activate C++ Test menüleri ile lisans alınıp geri verilebilir.

Eğer lisansımız "Command Line Feature" özelliğini sağlamıyorsa, komut satırından kullanmaya çalışırsak "Command Line Feature is not licensed" mesajını alırız.

Builtin Configuration
Parasoft ile hazır bir sürü konfigürasyon geliyor. Bunlar Builtin ağacı altında görülebilirler.

Kendi Konfigürasyonumuzun Ayarlanması
Visual Studio içinden Parasoft/Test Configurations menüsü seçilir. Builtin ağacı altındaki bir hazır kural kataloğuna sağ tıklanarak "Duplicate" menüsü seçilir ve üzerinden deneme yapacağımız bir konfigürasyon yaratılır.

Statik Analiz Nedir?
Statik Analiz, derleyicinin yapmadığı derinlikte analiz yaptığı için gerekli bir faaliyet. Statik Analiz yazılımın sağlamlığını (robustnessispatlamaz. Sağlamlık sadece test ile ispatlanabilir.

Statik analiz C++'ta 1000 satırda 100-130 arası bulgu veriyor.

Eğer Parasoft pahalı geliyorsa, Visual Studio 2012'de gelen araçlar da kısıtlı statik analiz imkanı sunuyor.  

Statik analiz her derlemede (Projeye sağ tıkla Properties menüsünden etkinleştir) yapılabileceği gibi bir seferlik te (Build > Run Code Analysis menüsü) yapılabilir. 

Ayrıca statik analiz tüm çözüme yapılabileceği gibi sadece seçilmiş projelere de yapılabilir. Statik kod analizi için verilen kural seti fazla değil . En işe yarayanı Microsoft Native Recommended Rules. O da çok fazla şey bulmuyor ancak hiç yoktan iyidir.

Parasoft'u kullanmadan önce derleyicinin ürettiği tüm uyarıların (warning) temizlendiğinden emin olunmalı.

Statik Analiz Çeşitleri
1. Pattern Based : Rule Editor ile girilen kurallara dayanarak belli örüntüleri yakalamaya çalışır. Rules Tree sekmesi altında kurallar görülebilir.
2. Flow Based : Uygulamayı çalıştırmadan, çalışıyormuşçasına üzerinden geçerek hataları bulmaya çalışır. Parasoft'taki BugDetective aracı bu işe yarıyor. BugDetective'de Terminators sekmesinde "terminating functions" tanımlanabilir

Screenshot of the window

Kendi Konfigürasyonumuz İçin Static Kod Analizinin Ayarlanması

Statik analizin ne olduğunu öğrendikten sonra kendi konfigürasyonumuz için nasıl static kod analizi yapacağımıza bakalım. 

Öncelikle Static sekmesi seçilerek, Rules Tree sekmesinden tanımlı kurallardan işimize yarayanlar etkinleştirilir. Örneğin MISRA, JSF büyük olanlar arasında. Bunlar arasında "Find Duplicated Code" çok faydalı.

Çalışmayı kolaylaştırmak için sağdaki "Hide Disabled" düğmesi tıklanabilir. Maalesef gizleme işlemi bir seferlik. Ekranı yeniden açınca tekrar herşey görünür hale geliyor.

Statik Analiz Sonuçları
Analiz sonuçları Show / Details altındaki Quality Tasks penceresinde kurallara göre gruplanmış olarak görülebilir.

Kod İçinde Supress
Eğer kod içinde bazı satırlar için supress etmek istersek satıra
/* parasoft-suppress ...*/ yazılır.

Konfigürasyon Export/Import İşlemi
Herhangi bir konfigürasyon nesnesine sağ tıklanarak kuralları Export etme imkanı var.

Komut Satırından Çalıştırmak
cpptestcli -solution My.sln -config "user://MyConfig" -report filename.xml

Bu komut sonucunda xml dışında iki html daha üretiliyor. parasoft.html özet bir tablo. parasoft_dev.html ise kaynak kod dosyalarındaki hataları gösterir.

GUI'den başlatmak
Eğer sadece belli bir kod parçası için statik analiz çalıştırılmak istenirse, Solution Explorer'a sağ tıklanır. Açılan menüden Parasoft/Test Using / User Defined / "Example Configuration" seçilir.  Veya Built-in konfigürasyonlarda birisi de seçilebilir. Ancak MISRA gibi konfigürasyonlar çok ağır olabiliyorlar.

Zor MISRA Kuralları
MISRA yazısına taşıdım

Hiç yorum yok:

Yorum Gönder