Ben UNIX ortamında C kodlama olduğum bir proje üzerinde çalışıyorum. Benim kaynak kodunu kontrol etmek tiftik aracını kullanıyorum. Lint (1979 yılından bu yana) uzun süre olmuştur, herkes kullanabilir miyim daha yeni kod analiz aracı önerebilir? Tercihen serbest bir araçtır.
Bir statik kod analiz aracı seçme
derleyici kendisi göz ardı etmeyin.
derleyici'nın Belgeleri okuyun ve sağlayabilir tüm uyarıları ve hataları bulmak ve sonra sizin için yapmak anlamda olduğu kadar çok etkinleştirin.
Ayrıca hemen bunları düzeltmek zorunda kadar emin hataları gibi uyarılar tedavi etmek için derleyici anlatmak olun. (Gcc üzerinde "-Werror kullanmamak")
Ayrıca: yok gcc üzerinde "-Wall" değil tüm uyarıları etkinleştirmek, kanmayın.
Ayrıca da: valgrind edin - bu "otomatik olarak [ler] Birçok bellek yönetimi ve parçacığı böcek ve profil [s] ayrıntılı olarak programları algılar." (Ücretsiz!)
Valgrind değil statik bir denetleyicisi, ama harika bir araç! http://valgrind.org
C kodu için kesinlikle kesinlikle kullanmalısınız Flexelint . Neredeyse 15 yıldır kullanmış ve onun tarafından yemin ederim. Sahip olduğu gerçekten büyük özelliklerinden biri uyarılar seçici kodunda yorumlar aracılığıyla ilgili kapalı ve edilebilmesidir ( "/ * tüysüz -e123 * /"). Bu sıradan dışında bir şey istediğinde güçlü bir dokümantasyon aracı olduğu ortaya çıktı. "Ben uyarı X kapatarak am, bu nedenle, ben X yapıyorum bazı iyi bir neden yoktur"
ilginç C / C ++ soruları kimseye için kendi sitesinde kendi örneklerden bazıları bakmak ve ipuçları bakmadan böcek anlamaya görmek.
Ben hakkında iyi şeyler duydum clang statik analizörü Arka sunucunun olduğu gibi IIRC LLVM kullanır. Bu senin platformda hayata geçtiyse, bu iyi bir seçim olabilir.
Anladığım kadarıyla, bu sadece sözdizimi analizi biraz daha yapar. Örneğin "Otomatik Hata Bulma",.
Biz kullanıyorum coverity önleyin C ++ kaynak kodunu kontrol etmek.
(Onlar açık kaynak projeleri için ücretsiz tarama sunuyoruz inanıyoruz rağmen) Bu ücretsiz bir araç değil, ama bu size bulabileceğiniz en iyi statik analiz araçlarından biridir bu. Ben bile C ++ üzerinde daha C'nin üzerinde daha etkileyici olduğunu duydum, ama bize şu ana kadar hataların oldukça çok sayıda önlemek yardımcı oldu.
Sen kullanabilirsiniz cppcheck . Statik kod analiz aracı kullanmak için bir kolaydır.
Örneğin:
cppcheck --enable=all .
Mevcut klasör altındaki tüm C / C ++ dosyaları kontrol edecektir.
PC-tüysüz / Flexelint olsa ne yazık ki özgür değil, çok güçlü ve kullanışlı statik analiz araçları ve son derece yapılandırılabilir.
İlk böyle bir aracı kullanırken, onlar zor büyük ve küçük olanları ayırt etmek yapabilirsiniz uyarıları muazzam sayıda, üretebilir. ortaya çıktıkça yeni uyarılar başa böylece nedenle, olabildiğince sık olarak kod üzerinde çalıştırmak sonra mümkün olduğunca erken projesinde kodunuzu aracını kullanarak başlamak en iyisidir ve.
Böyle sürekli kullanımı ile, yakında araç tarafından uygulanan kurallara onaylayan bir şekilde kod yazmak için öğrenirler.
Bu nedenle, ben nispeten hızlı bir şekilde çalıştırmak Lint gibi araçları tercih ve böylece yerine size hiç değilse, daha az sıklıkla kullanarak sonu olabilir daha hantal araçlar daha sürekli kullanımını teşvik edin.
Lint benzeri aletler genellikle "yanlış alarm" sorunu muzdarip: onlar gerçekten var çok daha fazla sorunları rapor. gerçekten-kullanışlı uyarıları oranı çok düşükse, kullanıcı sadece aracı görmezden öğrenir. Daha modern araçları büyük olasılıkla / ilginç uyarılara odaklanmak için çaba sarf.
Sen bulabilir Uno aracı yararlıdır. Bu birkaç ücretsiz olmayan oyuncak seçeneklerden biri. Bu "anlam" hataları (boş gösterici derefs, dışı sınır dizisi endeksleri ve başlatılmamış değişkenlerin kullanımı), az sayıda odaklanarak vb tiftiği, Flexelint farklıdır. Ayrıca kilit açma disiplin gibi kullanıcı tanımlı kontrolleri, izin verir.
Bir halef aracı, bir kamu tahliye yönünde çalışıyorum
Orion ( ARTIK MEVCUT DEĞİL İÇERİK )
Seyrek Linux çekirdeği mümkün kodlama hataları bulmak için tasarlanmış bir bilgisayar programı aracı, Linux üzerinde zaten mevcuttur vardır.
İki aktif proje bulunmaktadır Linux Doğrulama Merkezi yüklenebilir kernel modülleri kalitesini artırmak amaçlanmıştır.
- Linux Sürücüsü Doğrulaması (LDV) - Linux aygıt sürücüleri statik kaynak kod doğrulama için kapsamlı bir araç seti.
- KEDR Çerçeve - Dinamik analiz ve çekirdek modüllerinin doğrulanması için genişletilebilir bir çerçevedir.
- Başka devam eden proje Linux Linux dosya sistemi uygulamalarının doğrulanması için özel bir araç kümesi geliştirmeyi amaçlamaktadır Sistem Dosya Doğrulama olduğunu.
Ben hata bulmak için birden fazla statik analiz araçları kullanmak genellikle en iyi olduğunu gördük. Her aletin farklı tasarlanmış ve onlar birbirinden çok farklı şeyler bulabilirsiniz.
Bazı görüşmelerde bazı iyi tartışmalar vardır burada . Statik analiz, ABD İç Güvenlik Bakanlığı tarafından düzenlenen bir konferanstan bu.
İyi günler,
Tamamen okumak ve derleyici -Wall ayarladıktan sonra size anlattıklarını sindirmek için önerileri katılıyorum.
Güvenlik için iyi bir statik analiz aracı olan FlawFinder David Wheeler tarafından yazılan. Bu iyi bir iş, çeşitli güvenlik açıkları arayan yok
Ancak, bilgili birisi kodu ile okumak zorunda yerine geçmez. Davut web sayfasında söylediği gibi, "Bir araç ile bir aptal hala bir aptal!"
şerefe,
soymak
tüysüz sürekli güncellenen ... o yüzden neden daha yeni bir tane isteyeyim.
Btw flexelint olan tiftik
Bir "-Weffc ++" gcc için bir seçenek var ki Mac OS X adam sayfasına göre yapacaktır:
Scott Meyer'in Etkili C ++ kitabından aşağıdaki stil kuralları ihlalleri hakkında uyar:
[Kesik]
Sana C hakkında sorulan biliyorum, ama bu benim bildiğim en yakın olan ..