Soru:
C ++ 11 özelliklerini iyi bir şekilde kapsayan çok platformlu proje için statik kod analiz aracı
gsf
2016-01-02 01:34:45 UTC
view on stackexchange narkive permalink

Eski usul bir C ++ geliştiricisiyim ve bugün bile profesyonel C ++ 11 deneyimim yok. C ++ komitesine dilin doğru yönde ilerlediğine güveniyorum, ancak çalıştığım projelerde şüpheciliğin baskın olduğu ve C ++ 11 özelliklerinin çoğu anlaşılmadan ve keşfedilmeden önce bile yasaklanmış gibi görünüyor.

Her neyse, şimdi yeni bir kod tabanı üzerinde çalışma şansım var ve tüm C ++ 11 gücünü uygulamak istiyorum, ancak kendimi ayağımdan vurmak istemiyorum.

Geçmişte, statik kod analiz araçlarından bazılarının bana dilin tüm bu ince yönlerini gösterecek son derece güçlü bir öğretim aracı olduğunu gördüm.

Projem için clang ve taşınabilir kitaplıklar kullanıyorum Windows, Linux, Mac ve daha fazlasına dayanan STL ve Boost olarak.
clang-tidy, clang- modernize etme, vb. davranışlarımı C ++ 11 özelliğine göre ayarlamama izin verecek iyi araçlar olacak, ancak bunlar çok sınırlı yardım sağlıyor gibi görünüyor - tüm önerilere uyum sağlamam tam anlamıyla 2-3 gün sürdü yapıyorlar ... ve eminim ki benim olduğum pek çok olasılık var rvalue referanslarına göre eksiktir.

Sahip olmasını istediğim bazı özellikler:

  • Kopya seçimi olmadığında yeterli ve yönlendirme arayüzü optimizasyon sağlayacaktır.

  • Sınıf üyelerinden bazıları hareketli olmadığında ve otomatik olarak oluşturulmuş hareket oluşturucu ve taşıma atama operatörü mümkün olmadığında.

  • Kapsamındaki son referans buysa yerel değişken ne zaman taşınabilir?

  • const auto& olduğunda auto 'dan daha iyi.

Fiyat limitim yok.

Yazılım Önerilerine Hoş Geldiniz! Ne istediğiniz oldukça belirsiz. Lütfen [Bir sorunun "yeterli bilgi" içermesi için ne gereklidir?] (Http://meta.softwarerecs.stackexchange.com/q/336/185) konusuna bakın. O zaman lütfen sorunuzu [düzenleyin] ve olup olmadığına bakın bu iyileştirmelerden bazılarını birleştirebilir.
@lzzy Aradığım: "c ++ 11 özelliklerini iyi bir şekilde kapsayan statik kod analiz aracı"
Korkarım bu biraz "çok geniş". Son yorumumun bağlantısını kontrol ettiniz mi? Sorunuzda eksik olan birçok ayrıntı var, ör. hangi işletim sistemi üzerinde çalışması gerektiği, bütçenizin ne olduğu. Muhtemelen daha fazla, ancak özellikler söz konusu olduğunda geçmem gerekiyor, çünkü bu benim uzmanlık alanım değil.
@lzzy - soru beklemede çünkü "belirsiz", ancak yorumunuzda çok geniş - ki öyle. Daha spesifik bir şey verirsem, yanıtı kendim vermem gerektiğini hissediyorum.
@gsf Lütfen hangi işletim sisteminde çalışması gerektiğini açıkça belirtin. Bir "_tool for multiplatform project_" yanlış yorumlanabilir. Windows üzerinde mi geliştiriyorsunuz? Sorularınız artık "beklemeye alın" durumunda olmadığında önerebileceğim bir şey olabilir.
@mguassa Clang ve taşınabilir kitaplıkları stl olarak kullanıyorum ve pencereler, linux, mac ve daha fazlası üzerine yapılanları güçlendiriyorum.
Sorunuzu gerçekten beğendim ve bir yanıt görmeyi umuyorum. Lütfen bize daha fazla bilgi vermeye çalışır mısınız ve yeniden açılması için oy vereceğiz. Bir özellik listesi ne olacak? Ve hangi o / s umrunda mı?
@Mawg Aracın tam olarak hangi özellikleri sağlaması gerektiğini bilmiyorum, nedenini açıklayan 3 paragraf veriyorum. Bir soru sormak için bu alanda uzman olmam gerekirse - web sitesinin amacı nedir - burada bir şeyler tamamen yanlış.
Lütfen soruyu tekrar açmak için oy kullanabilir mi? İnsanların bazı cevaplar vermesi için yeterince açık olduğunu düşünüyorum.
Iki yanıtlar:
mguassa
2016-01-06 00:06:10 UTC
view on stackexchange narkive permalink

Geçmişte, eski usul C / C ++ kodu için, Gimpel Software tarafından geliştirilen ticari bir yazılım olan PC-lint 'i kullandım.

Şirket aslında bir çift geliştiriyor Statik analiz araçları için: PC-lint ve FlexeLint.
Pc-lint Windows sistemleri içindir, FlexeLint ise VMS, OS-9 ve hemen hemen tümü dahil olmak üzere C'yi destekleyen hemen hemen tüm sistemlerde çalışır Unix sistemleri.

PC-lint ve FlexeLint, C / C ++ kaynak kodunuzu kontrol edecek ve hataları, aksaklıkları, tutarsızlıkları, taşınabilir olmayan yapıları, yedek kodları ve daha fazlasını bulacak güçlü statik analiz araçlarıdır. Daha. Birden çok modüle bakar ve bu nedenle derleyicinizin sahip olmadığı bir perspektife sahiptir.

C ++ 11 desteğiyle ilgili olarak, bunun için özel bir sayfaları vardır:
C ++ 11 için PC-lint / FlexeLint Desteği

C ++ 11 ve C ++ 1y için tam destek birincil odak noktamızdır. tam destek için bir tarih veremiyoruz, geri kalan özellikler için destek sunduğumuz için daha hızlı bir sürüm döngüsü bekliyoruz.

Bu nedenle, şu anda yazının tamamını desteklemiyorlar C ++ 11 özellikleri, ancak çoğu orada görünüyor. Sevdiğim şey, özelliklerin geliştirme durumunun bir önceliğin yanı sıra açıkça ve şeffaf bir şekilde bu sayfada rapor edilmesidir (diğer araçlar için bu tür bilgiler o kadar açık veya kolay erişilebilir görünmüyor).
Örneğin, Sorunuzda desteklenen görünen rvalue 'dan bahsettiniz:

  • Dil özelliği: Rvalue referansları
  • C ++ 11 Teklif: N2118
  • PC-Lint / FlexeLint'de mevcut mu ?: Lint 9.00c

Web sitesinde ve o sayfada bulabileceğiniz bilgilere, ilgili maliyete ve projenize dayanarak, ihtiyaçlarınıza uygun bir araç olup olmadığını değerlendirebilirsiniz. Başkaları başka araçlar biliyor olabilir, bu size bir göz atmanızı önerdiğim araç.

Son olarak, C / C ++ statik kod analizi için diğer araçların bir listesi Wikipedia 'da bulunabilir. Hepsi C ++ 11'i desteklemez.

Teşekkürler, bu daha çok "bu özelliklerle ilgili derleme sorunlarımız yok" gibi görünüyor, "bu sorunlar için iyi bir dizi tavsiyemiz var". Bu açıdan kişisel gözleminiz var mı?
@gsf Dürüst olmak gerekirse, C ++ 11 özelliklerinden hiçbirini hiç kullanmadım, bu ürünü sadece geçmişte eski C / C ++ kodu için kullandım ve tavsiye edebileceğimi düşünüyorum. Bildiğim kadarıyla, son zamanlarda gördüklerim ve sahip olduğunuz özel istek için, etrafta pek bir şey yok gibi görünüyor. Ürünü daha önce kullandıktan ve şimdi C ++ 11 desteğine harcadıkları çabaya baktığımda, önerdiğim şey mevcut en iyi seçeneklerden biri gibi görünüyor. Bu şirketle hiçbir ilişkim olmadığını unutmayın.
John
2016-01-13 16:29:55 UTC
view on stackexchange narkive permalink

Çok çeşitli özellikleri entegre eden ve Visual Studio ile% 100 entegre olan oldukça eksiksiz bir statik analiz aracı olan CppDepend 'i deneyebilirsiniz.

Görünüşe göre CppDepend, OP'nin zaten denediği bir şey olan clang-modernize kullanıyor. Bkz. [CppDepend modernizer] (http://cppdepend.com/modernizer).


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...