C / C ++ kaynak kodunu bir dizi kodlama standardına karşı kontrol etmek için ücretsiz bir araç mı? [kapalı]


151

Java ( Checkstyle , JCSC ) için böyle bir araç bulmak oldukça kolay görünüyor , ancak C / C ++ için bir tane bulamıyorum. Tüy bırakmayan bir statik kod analizörü aramıyorum, sadece değişken adlandırma, büyük harf kullanımı, boşluk, kimlik, braket yerleştirme ve benzeri gibi kodlama standartlarına karşı kontrol etmek istiyorum.


3
İstediğiniz yanıtı burada bulamazsanız, bu soruyu göz önünde bulundurun: stackoverflow.com/q/10819398/120163
Ira Baxter

Yanıtlar:


57

Bildiğim tek araç Vera . Kullanmadım, ancak, ne kadar uygulanabilir olduğunu yorum yapamam. Demo umut verici görünüyor.


Test ettim ve oldukça basit. Ama işe yarıyor!
Jader Dias

7
Denedim ama hayal kırıklığına uğradım. C ++ kodunu tokenleştirdi, ancak "tanımlayıcılar" için yalnızca tek bir token türüne sahip, bu nedenle söz konusu sınıf adları, üye değişkenler ve yerel değişkenler arasında ayrım yapmıyor. Bu nedenle, farklı tanımlayıcı türlerine farklı adlandırma kurallarını zorlamanın bir yolu yoktur.
John W

Vera'nın çok kapsamlı bir kuralları yoktur - ancak genişletilebilirler (
TCL'de

2
"Genişletilebilir" yalnızca çok basit görevler için. Vera'nın C ++ anlayışı sığ olduğu için, herhangi bir "derin stil kontrolü" (olası bir [iyi önermiyorum] kuralı olduğunu düşünün: her tahsis için aynı işlevde karşılık gelen bir anlaşma vardır) uygun C ++ bilgisini kodlamak zorunda kalacaktır, ve bu gerçekten çok zor, yani olmayacak.
Ira Baxter

Vera bağlantısı düzeltildi: bitbucket.org/verateam/vera
congusbongus

49

4
+1. Bu çok güzel - çok sıkı bir tarzı olsa da. Vera ++ gibi kendi kurallarıyla genişletmek o kadar kolay değil.
fmuecke

Yine de Google'ın C ++ stilini kullanıyorsanız :) +1
jkp

3
Bu şimdi cpplint denir varsayalım github.com/google/styleguide/tree/gh-pages/cpplint adresinde bulunabilir , c ++ lint için yukarıdaki bağlantı kırık.
Zitrax

Sadece referans için, yüklemek için, "pip install cpplint" kullanabilirsiniz. Sonra sadece "cpplint file.cpp" veya "cpplint --recursive" kullanabilirsiniz. "./cpplint.py" yerine IMO tercih edilir. En azından github ile indirmekten daha kolay
Colin D


8

Eminim bu bir dereceye kadar cxx checker yardımcı olabilir . Ayrıca bu araç oldukça iyi görünüyor KWStyle Bu Kitware, Cmake geliştiren çocuklar.


1
cxxchecker şimdi benim için çok ölü gibi görünüyor.
stefanct

cxx denetleyicisi ölü bir bağlantıdır.
Kurt

7

Tam olarak ne istediğini değil, ama sadece bir standart kodlama astyle oluşturmak ve daha sonra süreci otomatikleştirmek üzerinde anlaşmak daha kolay buldum .


1
ArtisticStyle'ın sadece elbette kötü bir şey olmayan biçimlendirmeye odaklandığını açıkça belirtmelisiniz :)
Wolf

6

Nsiqcppstyle'i deneyin . C / C ++ için Python tabanlı bir kodlama stili denetleyicisidir. Kendi kurallarınızı eklemek çok kolay.



2

İşimde bir araç kullandım LDRA araç takımını

C / c ++ kodunu test etmek için kullanılır, ancak MISRA gibi kodlama standartlarına karşı da kontrol edebilir.


1
Bu neden değiştirildi? LDRA da statik bir analizör olsa bile - sorunun aradığı bir şey değil - aynı zamanda bir kodlama standardının ihlali için kodu kontrol edebileceğine inanıyorum.
Vitor Py

4
LDRA'nın maliyeti ortalama arabanız kadar ... ücretsiz fikrim değil.
Lundin

2

Sourceforge.netuniversalindentgui üzerinde kontrol edin .

C için birçok stil dama vardır ve dama özelleştirebilirsiniz.


UniversalIndentGUI Canlı bir önizleme işlevine sahiptir, yapılandırma ve dışa aktarma komut dosyasını dışa aktarabilir. GNU Girintisi, Sanatsal Stil ve Düzeltme gibi farklı "girintileri" denemek için harika.
congusbongus

1

Aynı ismin eklentisi aracılığıyla Hudson tarafından da desteklenen cppcheck var .


4
cppcheck, sorunun ne aradığını değil, statik bir analiz aracıdır.
Vitor Py

Belki bu 2010'dan beri değişti: Bugün Cppcheck stilistik konular için uyarılar da içeriyor. Ancak, OP statik kod analizörlerini açıkça hariç tuttu.
Kurt



-1

Şu anda böyle bir araç yazmak için başka bir proje ile bir proje üzerinde çalışıyorum. Diğer statik kod analiz araçlarına baktım ve daha iyisini yapabileceğime karar verdim.

Ne yazık ki, proje henüz kod hakkında oldukça samimi bir bilgi olmadan kullanılmaya hazır değil ( okuyun: tüm cehennem gibi buggy ). Ancak, oldukça hızlı ilerliyoruz ve önümüzdeki 8 hafta içinde beta sürümümüz olmasını umuyoruz.

Proje açık kaynak kodlu - proje sayfasını ziyaret edebilirsiniz ve katılmak istiyorsanız, biraz daha dış girdi isteriz.

Sizi ayrıntılarla sıkmayacağım - bunun için proje sayfasını ziyaret edebilirsiniz , ancak bir şey söyleyeceğim: Çoğu statik kod analiz aracı, kodunuzu hatalar için kontrol etmeyi amaçlamaktadır ve kodlama yönergelerini kontrol etmekle çok ilgili değildir. Hem "ev kurallarını" hem de olası hataları kontrol etmek için eklentiler yazmamızı sağlayan daha esnek bir yaklaşım izledik.

Daha fazla bilgi istiyorsanız, lütfen benimle iletişime geçmekten çekinmeyin.

Alkış,


4
Son taahhüt Haziran 2009'daydı. Artık gelişmemiş gibi görünüyor.
İsimsiz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.