7 Mart 2017 Salı

Kod Kapsamı ve Gcov ile Lcov Araçlarının Kullanımı

Herkese merhaba bu senenin ilk döneminde bitirme projemde Libreoffice'de birim testlerin geliştirilmesi üzerine çalışmalarım oldu. Şimdi ise Libreoffice'de kod kapsamı üzerinde çalışıyorum.

Bu yazımda;
    • Kod kapsamının ne olduğundan
    • Projelerin kod kapsamı açısından nasıl geliştirilebileceğinden
    • Kod kapsamıyla ilgili kullanılan araçlardan bahsedeceğim.

Kod Kapsamı: Tam olarak bir orandır. Projede var olan testlerin kontrol ettiği kodun, yazılan bütün koda oranına denir. Sonuç olarak bize bir % vermektedir ve bu oranın 100'e yakın olması amaçlanmaktadır. Projelerde kod kapsamını geliştirirken farklı parametreler değerlendirilir. Bunlara bakacak olursak;

• Yazdığımız testler bütün kod için yetersiz olabilir. Projede test edilmeyen kısımlar için ek olarak birim testler yazılmalıdır.

• Projede ölü kodlar bulunabilir bunlar projeden kaldırılmalıdır.

Gcov ve Lcov: Gcov projelerimizi kod kapsamı bakımından test edebileceğimiz bir araçtır, lcov ise bu test sonuçlarını tarayıcıda görmemizi sağlayan bir araçtır. Şimdi bir dosya üzerinde bu araçların kullanımına bakalım.

hello.cpp isimli dosyamızı kod kapsamı testini gcov ile yapalım.

$ g++ -fprofile-arcs -ftest-coverage hello.cpp -o hello 

komutunu çalıştırarak hello.gcno dosyasını oluşturmuş oluruz. Daha sonra

$ ./hello

komutunu çalıştırıp hello.gcda dosyasını oluştururuz. Şimdi

$ gcov hello.cpp

komutu ile dosyamızda kod kapsamı testi yapmış oluruz ve

çıktısını almış oluruz. Şimdi lcov kullanımına bakalım.

$ lcov --capture --directory . --output-file hello.info

komutunu çalıştırarak hello.info dosyasını oluşturduk.

$ genhtml hello.info --output-directory .

komutunu çalıştırdıktan sonra klasörümüzde index.html dosyası oluşacaktır. Bu dosyayı tarayıcımızda çalıştırdığımızda;


arayüzü karşımıza çıkacaktır buradan dosyaların kod kapsam oranlarına nerelerde hatalar olduğuna bakabiliriz.

Bir sonraki yazımda Libreoffice'de kod kapsamından, nasıl geliştirlebileceğinden ve benim katkılarımdan bahsedeceğim iyi çalışmalar.

15 Ocak 2017 Pazar

LibreOffice Çalışmalarım - 1

Herkese merhaba bu sene bitirme projemi LibreOffice ile ilgili yapıyorum. Bu yazımda ilk dönemde nasıl işler yaptığımdan bahsedeceğim.

Geçen senenin başından itibaren LibreOffice ile ilgili çalışıyorum. Geçen sene çalışmalarım projenin farklı kısımlarıyla ilgili oldu. Öncelikle süreci öğreten hata kayıtlarına kod göndermekle başladım daha sonra LibreOffice veritabanı aracı olan Base üzerinde çalıştım senenin sonunda 6 tane yama gönderdim.

Bu sene bitirme projemde ise LibreOffice'de birim testler üzerine çalışıyorum. Projede Java ile yazılmış birim testlerin Python ve C++ ortamlarına geçirilmesi isteniyor. Var olan testlerin ise yeni getirilen özellikler ile değiştirilmesi isteniyor.

Python testlerinde değiştirilmesi istenen özellikler vardı. 2 farklı modüldeki python testlerin büyük bir kısmına bu özellikleri kazandırdım ve 10 tane yama gönderdim.

C++ testlerinde ise kod kapsamayı olumsuz yönde etkileyen kod kapsama oranını düşüren kısımların düzeltilmesi ile ilgili çalıştım. LibreOffice'de yazılmış olan kodlardaki kod kapsama oranlarına şuradan ulaşabilirsiniz. Bu konuyla ilgili de 6 tane yama gönderdim.

Bu çalışmalarıma ek olarak LibreOffice projesinde Almanca kullanılan kelimelerin İngilizce'ye çevirilmesi isteniyor. Bu hata kaydını seviyorum doğrusu, çalışmaya ara verdiğim zamanlarda bununla ilgili çalışıyorum :) Bu konuyla ilgili de 3 tane yama gönderdim.

LibreOffice deposuna gönderdiğim yamaların linklerine şuradan ulaşabilirsiniz.
 
İyi çalışmalar.