VsCode ile Cake Dosyasında Hata Ayıklama — Cake Debugging

Adem Catamak
4 min readAug 2, 2020

--

Bu yazıda Vs Code kullanarak CakeCore ile hazırlanan Cake dosyasının nasıl debug edilebileceğini adım adım inceleyeceğiz.

Cake Build Nedir”, “.Net Core Uygulamaları için Örnek Cake Dosyası Nasıl Hazırlanır”, “CI Platformlarında Cake Script’i Nasıl Tetiklenir” gibi bilgilere erişebileceğiniz yazının önceki kısımlarına göz atabilirsiniz.

Bu makalenin sonunda oluşmuş olan kodların son haline bu link üzerinden erişebilirsiniz.

İlk olarak Cake dosyamıza bir nuget paketi eklememiz gerekiyor. Bu paketin eklenmesi için Cake dosyamıza şu satırı eklememiz yeterli olacaktır.

#tool nuget:?package=Cake.CoreCLR

Yukarıdaki satıra alternatif olarak şu şekilde de kullanım senaryosu da mevcuttur.

#tool nuget:?package=Cake.CoreCLR&version=0.35.0

İkinci kullanım senaryosunda kullanılacak versiyon belirtilmiştir. İlk kullanım senaryosunda ise son versiyon otomatik olarak seçilerek yüklenecektir. Ben versiyonun da kontrol altında olması ve olası geriye uyumlu olmayan (breaking change) geliştirmelerden etkilenmemek adına ikinci versiyonun kullanılmasını öneririm.

Yukarıdaki adımı tamamladığımız durumda ikinci adıma geçebiliriz. Bu adımda Vs Code üzerine Cake için geliştirilmiş olan eklentiyi kuracağız. Bunun için Vs Code üzerinde eklentiler sekmesine giderek “Cake” yazmamız ve çıkan eklentiyi edinmemiz yeterlidir.

Bir de aynı sekmede “C#” yazdığımız zaman karşımıza çıkan eklentiyi edinmemiz gerekiyor. Not: Eklentilerin aktifleşmesi için Vs Code uygulamanızı yeniden başlatmanız gerekebilir.

Bu işlemleri tamamladığınız zaman isterseniz elle ayarlayabileceğiniz gibi, isterseniz Vs Code üzerinde bulunan “Hata Ayıklama” (Debug) sekmesi üzerinden “launch.json” dosyası üzerinde manipülasyon yapmamız gerekecektir.

Ayar ekleme (Add Configuration) seçeneğine tıkladıktan sonra “Cake CoreCLR” seçeneğini seçerek devam ediyoruz.

Bu noktada aşağıdaki ekran görüntüsünde görebileceğiniz gibi bir dosya ile karşılaşacaksınız.

Şimdi Cake dosyamıza bir break point koyarak debug işlemini başlatalım. Debug işlemi çalışmayacaktır :)

Uyarıdan da anlayacağınız üzere henüz bağımlılıklar indirilmediği için, tool isimli bir dizin ve içerisinde Cake ile alakalı bağımlılıklar olmadığı için hata ayıklama işlemi başlatılamadı. Bu sebeple başlangıç scriptini bir kere tetiklenmesini sağlıyorum.

bash ./build.sh

veya

./build.ps1

Bu çalışma Cake dosyamın ilk adımına koyduğum branchName alanının boş olması durumunda hata fırlatılmasına sebep olacak kısım sebebiyle başarısızlıkla sonlanacak. Ama biz amacımıza ulaşmış, gereken bağımlılıkların indirilmesini sağlamış olacağız.

Bu adımdan sonra “Hata Ayıklama”yı tekrar deneseniz dahi maalesef yine bir sonuca ulaşamayacaksınız. Bunun sebebi ise launch.json içerisinde belirtilen dizin ile, nuget üzerinden Cake.CoreCLR paketini indirdiğiniz kütüphanelerin saklandığı dizinlerin isimlerinin farklı oluşudur. Aşağıdaki ekran görüntüsünde görebileceğiniz üzere, launch.json içerisinde işaret edilen dizin versiyon bilgisine sahip değilken, indirilen kütüphanelerin saklandığı dizin versiyon bilgisine sahip olarak oluşturulmuştur.

Bu durumu gidermek için launch.json içerisindeki veriyi, aşağıdaki gibi değiştirebiliriz.

"program": "${workspaceRoot}/tools/Cake.CoreCLR.0.35.0/Cake.dll",

Bu adımdan sonra tekrar hata ayıklama işlemini tetiklersek, aşağıdaki ekran görüntüsünde görebileceğiniz gibi başarıya ulaşmış oluruz.

Lanch.json dosyasındaki Argümanları Cake Script’ine Parametre Olarak İletmek

Hata ayıklama işlemini yürütmüş olsak da branchName isimli argümanın içerisine bir değer yerleştirmediğimiz için çok fazla ilerleyemeden işlemimiz sona eriyor. Bu durumun önüne geçebilmek adına, launch.json dosyası üzerine ufak bir müdahale daha yaparak, launch.json üzerinden tetiklenen süreçlere nasıl argüman geçebileceğimizi de göstermek istiyorum.

Bunun için yapmamız gereken şey çok basit ve ufak bir değişikliktir. launch.json dosyasını açarak, args isimli alana aşağıdaki gibi bir ekleme yapmak yeterli olacaktır.

"args": [
"${workspaceRoot}/build.cake",
"--debug",
"--verbosity=diagnostic",
"--branchName=cake_debug"
]

Bu adımı da tamamladığımız zaman artık istediğimiz gibi Cake dosyası üzerinde adım adım ilerleyebilir ve süreci daha kolay bir şekilde gözlemleyebiliriz.

Diğer yazılarıma göz atmak için bu linke tıklayabilirsiniz.

--

--