"While loop has empty body" uyarısı @Keil uVision v5.25.2.0

Başlatan Cemre., 20 Ekim 2018, 17:45:27

Cemre.

Herkese merhaba, iyi hafta sonları :)

Keil'in sinir bozan bir warning'ini deaktif etmek istiyorum, acaba mümkün müdür? Ben ayarlarda bulamadım...

while(hSerialPC.Status != Serial_Ready);
gibi bir while loop yazdığımda (korkmayın, normalde böyle while loop'lar kullanmıyorum, sadece test amaçlı) "while loop has empty body" uyarısı veriyor.

Örneğin;
while(hSerialPC.Status != Serial_Ready)
{

}
şeklinde yazarsam uyarı vermiyor, sanki bunun body'si boş değilmiş gibi :)

foseydon

hocam o warning'lerin bir sebebi var. su asagidaki kitabi bulur okursan veya misra-c standardini okursan, govdesi bos bile olsa if/while vs. gibi yapilarin arkasina block tanimlamanin neden gerekli oldugunu anlarsin. kodun daha guvenilir olur bu sekilde.

https://barrgroup.com/Embedded-Systems/Books/Embedded-C-Coding-Standard


bymrz

Hocam süslü parantezi kesinlikle kullanın. İleride kodun üzerinde geliştirmeler yapıldığında çok ciddi hatalar yapma ihtimaliniz çok yüksek...


Örneğin:
if(cart==curt) şunuyap();

dediniz ve ileride siz veya başkası şu şekilde bi ekleme yaptı:

if(cart==curt) şunuyap(); bunudayap();

Bomba patladı :) kodunuz koşul sağlandığında sadece şunu yapacak, ve bunu her koşulda yapacak.


Bir başka örnek :

#define benim_macrom()    şunuyap();bunuyap()

şeklinde bir makro tanımladı birisi... Siz sanıyorsunuz ki benim_macrom(); yazdığınızda her iki fonksiyon da çağırılacak... Ama durun!


if(koşul==doğruysa) benim_macrom();

yaparsanız yandınız...

if(koşul==doğruysa) {benim_macrom();}


yaparsanız yırttınız...

MrDarK

Ağaç yaşken eğilir deyip alışkanlık yapmanızda fayda var. Anladığım kadarı ile Türkiye'deki yazılımcıların çoğu tek tabanca çalıştığı için yazılım kalitesi uluslar arası standartlar veya kim uğraşacak bunlarla deyip kurallara uymayı düşünmüyor veyahut böyle kuralların varlığından dahi haberi yok.

Cemre; seninle alakalı bir yorum değil üstteki o yüzden lütfen üzerine alınma. Genel bir serzeniş oldu benimkisi :)
Bende dahil bu tarz konulara profesyonel düşünmeye başlayıp, kodda kalite ve sertifikasyon seminerlerine katıldıktan sonra haberim oldu ve iş hayatımda yeni bir pencere açıldı.

Ardından hayatımıza SonarQube, Cpp Check ve Mısra kurallarını dahil ettik ve projelerimize dahil etmeye çalışıyoruz. O yüzden önerim mutlaka bunları alışkanlık haline getirin.

Örneğin bir tanede ben ekleyeyim. Açtığınız if'lerin else durumu söz konusu olmasa bile oluşturun. Mısra kurallarından birisidir :)

if(kosul == true)
{
    islemler();
}
else
{
    /* Herhangi bir işlem yok */
}
Picproje Eğitim Gönüllüleri ~ MrDarK

Cemre.

Alıntı yapılan: foseydon - 20 Ekim 2018, 19:34:54hocam o warning'lerin bir sebebi var. su asagidaki kitabi bulur okursan veya misra-c standardini okursan, govdesi bos bile olsa if/while vs. gibi yapilarin arkasina block tanimlamanin neden gerekli oldugunu anlarsin. kodun daha guvenilir olur bu sekilde.

https://barrgroup.com/Embedded-Systems/Books/Embedded-C-Coding-Standard
Teşekkürler. PDF olarak indirmeye izin veriyor, faydalı oldu.

OptimusPrime

@MrDarK

Hocam sen hic .h dosyasina kod yazan gordun mu? ;D (ben gordum)  ;D Bu arkadaslari sanirim seminer falan kurtarmaz  ;D
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

yldzelektronik

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

MrDarK

Geçtiğimiz yıl IAR semineri vardı sanırım EMPA nin düzenlediği. Takip etmeniz gerekiyor. Örnekleri uçak yazılım sistemleri üzerineydi. Ayrıca aselsan roketsan vb bircok büyük firma katılım yapmıştı.

OptimusPrime,
Chip üreticisi Silabs in EFM32 serisi chiplerini kullanırken benimde adamların driverlarini kullanırken senin verdiğin tepkiyi vermiştim:) chip üreticisi bile yapmış anlayacağın. Bence doğru bir yaklasim değil ama yapacak bise yok aldık kullandık
Picproje Eğitim Gönüllüleri ~ MrDarK