Basit bir CLI Java linter var mı? [kapalı]


88

Eclipse'den ayrı CLI üzerinde çalışabilen bir Java linter bulmaya çalışıyorum, git için bir commit kancası veya otomatik derleme betiğimizden diyebilirim. Böyle bir şey var mı?

İdeal olarak, kullanılmayan içe aktarımları ve değişkenleri, stil kurallarının takip edildiğini, istisnaların doğru kullanıldığını vb. Kontrol etmesi gerekir. Bu özelliklerin bazı alt kümeleri şu anda sahip olduğumuzdan daha iyi olsa da - hiçbir şey!


2
//, Bu bir yazılım önerisi isteği değil mi?
Nathan Basanese

3
Burada mı yoksa meta olarak mı sormalıyım bilmiyorum ama tavsiye isteyen böyle soruların nesi var? Elbette bu sorunun tek ve objektif bir cevabı yoktur, ancak yine de birçok teknik soru için durum böyledir. Bu soru, "Bir linterim yok ve hangi araçların mevcut, güncel ve yaygın olarak kullanıldığını bilmiyorum" şeklinde yeniden ifade edilebilir. Bu yardımcı olur mu? Başka bir yerden ziyade StackOverflow'da küratörlü, sıralı ve tarihe kaydedilmiş bir Q / A bulmayı tercih ederim. Bu tür soruları olan insanlar burada değilse nereye gitmeli?
Kyle Krull

Yanıtlar:


81
  • Mevcut hataları bulmak için SpotBugs (önceki Findbugs ). ÇOK İYİ!
  • Hatalara yol açabilecek kalıpları bulmak için PMD (örneğin, kullanılmayan değişkenler)
  • Kodlama standartlarını ve kurallarını uygulamak için kontrol stili (ör. Beyaz boşluk, Javadoc)
  • Hata Prone , uygulamanızın derleme adımına doğrudan bağlanır

Tüm bu araçların bazı çakışan kuralları vardır. Diğer birçok benzer araç var, ancak bunlar en popüler ve desteklenenler.


Findbugs ve PMD'nin farklı şeyler yaptığını söyleyebilir misiniz? Buna en son baktığımda, sadece bir tanesine ihtiyacımız olacak kadar benzer olduklarına karar verdim (ve PMD'yi seçtik). Ayrıca Checkstyle'ı çalıştırdık ve evet, PMD ile Checkstyle'ın bile çakıştığını gördük.
Tom Anderson

@TomAnderson - Kesinlikle farklı şeyler yaptıklarını söyleyebilirim, evet. her ikisi için de bir değer vardır (tabii ki örtüşme de vardır).
jtahlborn

Evet, çok farklı hedefler. Findbugs, bazen derin analizler yaparak GERÇEK hataları bulmaya çalışır. PMD sadece bazen hatalara yol açtığı bilinen kalıpları arar. Şahsen, daha az örtüşme olduğu için FindBugs ve Checkstyle kullanıyorum.
mikeslattery

pmd'nin 2 farklı denetim türü olduğunu belirtmek isteyebilirsiniz: pmd ve cpd.
jtahlborn

4
Findbugs artık SpotBugs ( GitHub'da )
Matruskan

12

Ayrıca, diğer araçların çoğunu birleştiren ve bunun için de güzel bir görünüm sağlayan Sonar'a göz atın .

Checkstyle, FindBugs, PMD, Clirr, fb-Contributor'dan kurallar.


Bunu bir post-commit kancasına nasıl ekleyeceğinizden tam olarak emin değilim, ancak http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven iyi bir başlangıç ​​noktası olabilir (özellikle maven kullanıyorsanız).

Belki de http://docs.codehaus.org/display/SONAR/Continuous+Integration'da listelenen yaklaşımlardan birini kullanmayı düşünebilirsiniz, çünkü tüm ekibiniz için daha iyi araçlar aramaya çalışıyor olabilirsiniz (" bu özellikler şimdi sahip olduğumuzdan daha iyi olurdu - hiçbir şey! "


2
+1 Sorunun sorulmasından dört yıl sonra, SonarQube daha aktif, modern ve eksiksiz görünüyor. Eskiden yukarıda belirtilen araçları birleştiriyordu, ancak şimdi bunları çakışmalardan kaçınarak doğal olarak uyguluyor blog.sonarsource.com/…
user2518618

-1

Tam olarak üzerinde çalıştığım şey bu: Java kodunun kalitesini kontrol etmek için kullanılacak CLI dostu bir araç. Aynı zamanda interaktif bir modaliteye sahiptir. Tek tek sorguları (tek uyarıları kontrol etmek için) veya tüm sorguları birlikte çalıştırabilirsiniz.

Araçlar erken aşamasındadır ancak neredeyse her gün üzerinde çalışıyorum. Burada mevcuttur:

https://github.com/ftomassetti/effectivejava

Lütfen bu konuda ne düşündüğünüzü bana bildirin ve soru sormaktan çekinmeyin.


3
Bu projenin son taahhüdü 2 yıl önceydi. Bunun artık aktif olarak geliştirilip geliştirilmediğinden emin değilim.
Daniel Kartal

Hayır öyle değil. Ama sonra JavaParser üzerinde çalışmaya başladım. Bu proje size bir CLI ma vermez, bunun üzerine inşa edilebilir.
Federico Tomassetti
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.