Sonarlint ile iyi kodlama pratiği yapın ve daha güvenli kod yazın

Kaptan Yosun

Moderatör
Moderatör
Geliştirici
Yardımsever Üye
Mesaj
953
Çözümler
31
Beğeni
930
Puan
939
Ticaret Puanı
0
1526525676820.webp

:mmt-hakkinda:
Ben yazılımcı değilim, bu yüzden Metin2 kodu düzenlerken zorlanabiliyorum veya bazen bazı hataların neden kaynaklandığını anlayamayabiliyorum. Metin2 kodlarının 20 sene kadar önce C dilinde uzman olan yazılımcılar tarafından C++ dilinde yazıldığı malum. Bu yüzden projenin kod güvenliği ve okunabilirliği konusuda büyük problemleri var. Sonarlint adlı bu Visual Studio eklentisi ise size güvenli ve okunaklı kod yazmanız için sayısız öneri sunuyor. Bu sayede hem daha iyi kod pratikleri kullanıyor hem de daha güvenli kod yazabiliyorsunuz.


:mmt-resimler:

Mesela burada beni C-tipi vektör kullanmamam, C++ standart kütüphanesinin array fonksiyonunu kullanmam için uyarıyor:
1728046180246.webp

Düzenledikten sonra:
1728046340750.webp


Burada ise type adı kullanmanın lüzumsuz olduğunu ve bunun yerine auto kullanabileceğimi söylüyor:
1728046467026.webp


Burada da contains fonksiyonunu kullanarak kodu daha basit yazabileceğimi söylüyor:
1728046760789.webp

Ve fonksiyonu benim yerime otomatik düzenleyebiliyor:
1728046804606.webp


Linkleri görebilmek için giriş yap veya kayıt ol.
 
oyun bozulduktan sonra nerde hata yaptım diye düşünürken bu konu aklına gelsin karşim :D
 
oyun bozulduktan sonra nerde hata yaptım diye düşünürken bu konu aklına gelsin karşim :D
Eklentinin önerdiği beş yüzden fazla değişikliği uyguladım, değişen dosyalarla ilgili oyun içi işlemleri test ettim, hiçbir hatayla karşılaşmadım. Bu eklentiyi bana trendyol'da mid "developer in test" olan arkadaşım önerdi, onların takımı da bunu kullanıyormuş, temiz ve güvenli kod yazmalarına çok yardımcı oluyor dedi.
 
Aslında bunu visual studioda yapıyor. Biraz daha uğraştırıyor ama bu daha güzelmiş hem daha modernize yapıyor kodları hemde veri olarak düşürüyor. Örnekte mesela 12 byte olan veriyi 4byte çevirmiş. Gayet başarılı ve kullanılabilir. Çok teşekkürler paylaşım için, ilerleyen projelerimde mutlaka kullanıcam.
 
Eklentinin önerdiği beş yüzden fazla değişikliği uyguladım, değişen dosyalarla ilgili oyun içi işlemleri test ettim, hiçbir hatayla karşılaşmadım. Bu eklentiyi bana trendyol'da mid "developer in test" olan arkadaşım önerdi, onların takımı da bunu kullanıyormuş, temiz ve güvenli kod yazmalarına çok yardımcı oluyor dedi.
Şimdi:
giphy.gif

3-5 ay sonra:
tense1983.gif
 
SonarQube/Lint, Valgrind, ReSharper C++ vs. gibi üçüncü parti kod analizi araçları pek çok durumda yazılımcıların işini kolaylaştırıyor Sonar'da en iyilerinden biri hatta bunlara GPT gibi yapay zekaları, Github Copilot gibi projeleri de ekleyebiliriz, hepsi çok güzel, hepsi çok kullanışlı buraya kadar hemfikiriz, konuda yol göstermek için güzel olmuş fakat burada dikkatli olmak gereken bir durum var ki @pasha37 zaten gerekeni söylemiş, yine de bir ufak yorum yapmak istedim.

Bu oyun 2002-2004 arasında donanım olarak ne kadar nitelikli olduğu tartışılabilecek (C++ konusunda, yoksa tecrübeli bir ekip) bir dev ekibinin yaptığı açıkçası oldukça kötü kodlama teknikleri içeren bir iş, dolayısıyla birbirine bağımlı ve çoğunlukla sabit kodlanmış bir domino taşı destesi var elimizde, sadece bir taşı içlerinden alıp parlatıp cilalayıp yerine geri koyarsanız ne olur, diğer taşlar yıkılır. Demek istediğim şey şu, bu oyunun yapısında bir kod modernleştirme işlemi yapacaksanız bunu baştan aşağı yapmak ve tüm elemanları, yapıları, kodları yenilemek gerekir sadece Sonar'ın önerdiği 100 dosyada bunu yapıp kalan 200 dosyaya dokunmamak şuan değilse bile ileride, oyun canlıya çıktığında ve onlarca, yüzlerce oyuncu girdiğinde sıkıntı yaratmaya müsaittir, ayrıca @pasha37 'nın değindiği çok önemli bir konu daha var, bu yardımcı analiz programlarının önerdiği öneriyi ne önerdiğini bilmeden, o verdiği öneriyi kullanırsanız mevcut yapıdan farklı olarak performans veya güvenlik açısından nasıl tepki alacağınızı bilmeden uygulamak bana göre büyük kumar (o uygulamanın neyi etkliyeceğini GPT'ye sormakta işe yaramayacaktır çünkü bunu kullandığınız oyunun dinamiklerini ve oyuncular oyuna girdiğinde nasıl tepki vereceğini bilmiyor, o yüzden dikkat), kod yenileme işlemi her zaman iyi etkiler bırakmaz, temiz kod, az kod veya modern kod her zaman daha iyidir anlamına gelmez, Metin2 gibi karmaşık ve eski kod yapısına sahip oyunlarda bu kod modernleştirme işlemleri bilinçsiz olursa ciddi performans kaybına veya farklı hatalara sebebiyet verebilir.

Bu yüzden sözün özü şu ki, eğer ne yaptığınızdan ve etkilerinden tam olarak emin değilseniz bunu yapmayın, eğer tüm oyunu internal/external tüm eklentileriyle beraber modernleştirmeyecekseniz bu işi parça parça yapmayın, kişisel olarak sana ve konuyu okuyan diğer arkadaşlara bir fikir vermesi için bu yorumu yaptım, eğer bu tarz modernleştirme işlerine meraklıysanız @Adalet 'in paylaştığı altyapıyı da incelemeniz fikir verecektir, sevgiler.
 
Üst