Giriş
Konuyla ilgili olarak Parasoft C/C++ Test Statik Analiz başlıklı yazıya göz atabilirsiniz.
Eğer Parasoft pahalı geliyorsa Visual Studio ile de Code Metric alınabiliyor. Ancak bu araç sadece managed code için çalışıyor.
Builtin Metrics Konfigürasyonu
Builtin > Static Analysis > Metrics konfigürasyonu kullanılarak metrikler ölçülebilir. Esasında bu konfigürasyon herşey için yeterli. Kendi statik analiz projemiz ile metrik ölçümünü aynı konfigürasyon içine koyabiliriz ancak bence bu tercih edilmemeli.
Kendi Konfigürasyonumuz İçin Metrik Ayarlaması
Metrikler Number of Fields/Methods etrafında yoğunlaşıyor.
Coupling Between Objects <30
Inheritance Depth <5
Lack of Cohesion < 0.9
Number of private fields < 20
Number of private methods < 20
Number of protected fields < 20
Number of protected methods < 20
Number of constructors <6
Number of fields < 30
Number of instance fields < 10
Number of instance methods < 30
Number of methods < 50
İlginç metrikler "Coupling Between Objects" (çok fazla bağımlılık) ve "Lack of Cohesion" (sınıfın birden fazla iş yapması)
Functionally Cohesive ve Sequentially Cohesive arasındaki farkı anlatan bir yazı burada.
Konuyla ilgili olarak Parasoft C/C++ Test Statik Analiz başlıklı yazıya göz atabilirsiniz.
Eğer Parasoft pahalı geliyorsa Visual Studio ile de Code Metric alınabiliyor. Ancak bu araç sadece managed code için çalışıyor.
Builtin Metrics Konfigürasyonu
Builtin > Static Analysis > Metrics konfigürasyonu kullanılarak metrikler ölçülebilir. Esasında bu konfigürasyon herşey için yeterli. Kendi statik analiz projemiz ile metrik ölçümünü aynı konfigürasyon içine koyabiliriz ancak bence bu tercih edilmemeli.
Kendi Konfigürasyonumuz İçin Metrik Ayarlaması
Metrikler Number of Fields/Methods etrafında yoğunlaşıyor.
Coupling Between Objects <30
Inheritance Depth <5
Lack of Cohesion < 0.9
Number of private fields < 20
Number of private methods < 20
Number of protected fields < 20
Number of protected methods < 20
Number of public fields < 20
Number of public methods < 20
Number of public methods < 20
Number of fields < 30
Number of instance fields < 10
Number of instance methods < 30
Number of methods < 50
Number of static fields < 20
Number of static methods < 20
Number of static methods < 20
İlginç metrikler "Coupling Between Objects" (çok fazla bağımlılık) ve "Lack of Cohesion" (sınıfın birden fazla iş yapması)
Functionally Cohesive ve Sequentially Cohesive arasındaki farkı anlatan bir yazı burada.
Metrik Sonuçları
Metrik sonuçları Parasoft > Show View > Metrics veya Parasoft > Show View > Quality Tasks altında görülebilir. İlk pencere okuması daha kolay bir sunum sağlıyor.
Olmayan metrikler
Kodlama standartlarına konmasına rağmen olmayan bazı metrikler var. Demek ki bu metrikler aslında çok önemli değil.
Length of Method
Metodların uzunluğu konusunda bir çok fikir öne sürülüyor. 20, 65 veya 100 satırı geçmemeli diyenler var.
Clean Code: A Handbook of Agile Software Craftsmanship, Robert Martin:
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long.
Olmayan metrikler
Kodlama standartlarına konmasına rağmen olmayan bazı metrikler var. Demek ki bu metrikler aslında çok önemli değil.
Length of Method
Metodların uzunluğu konusunda bir çok fikir öne sürülüyor. 20, 65 veya 100 satırı geçmemeli diyenler var.
Clean Code: A Handbook of Agile Software Craftsmanship, Robert Martin:
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long.