มีลินเตอร์ CLI Java แบบธรรมดาหรือไม่? [ปิด]


88

ฉันพยายามค้นหา Java linter ที่สามารถทำงานบน CLI ที่แยกจาก Eclipse ที่ฉันสามารถเรียกเป็น hook การกระทำสำหรับ git หรือจากสคริปต์บิลด์อัตโนมัติของเรา สิ่งนั้นมีอยู่จริงหรือไม่?

ตามหลักการแล้วจำเป็นต้องตรวจสอบการนำเข้าและตัวแปรที่ไม่ได้ใช้ตามหลักเกณฑ์ของสไตล์นั้นข้อยกเว้นใช้อย่างถูกต้อง ฯลฯ แม้ว่าคุณสมบัติบางส่วนจะดีกว่าว่าสิ่งที่เรามีอยู่ตอนนี้ - ไม่มีอะไรเลย!


2
// นี่ไม่ใช่คำขอคำแนะนำซอฟต์แวร์ใช่ไหม
Nathan Basanese

3
ฉันไม่รู้ว่าควรถามที่นี่หรือในเมตา แต่มีอะไรผิดปกติกับคำถามเช่นนี้ที่ขอคำแนะนำ? แน่นอนว่าไม่มีคำตอบที่ตรงประเด็นสำหรับคำถามนี้ แต่ก็มีคำถามทางเทคนิคมากมายเช่นกัน คำถามนี้สามารถเปลี่ยนเป็นวลีได้ว่า "ฉันไม่มีเศษกระดาษและฉันไม่รู้ว่ามีเครื่องมือใดบ้างเป็นปัจจุบันและใช้กันอย่างแพร่หลาย" ที่จะช่วย? ฉันอยากจะพบ Q / A ที่ได้รับการดูแลจัดอันดับและบันทึกวันที่บน StackOverflow มากกว่าที่อื่น คนที่มีคำถามแบบนี้ควรไปที่ไหนถ้าไม่ใช่ที่นี่?
Kyle Krull

คำตอบ:


81
  • SpotBugs (ก่อนหน้านี้FindBugs ) ในการหาข้อบกพร่องที่มีอยู่ ดีมาก!
  • PMDสำหรับค้นหารูปแบบที่อาจนำไปสู่จุดบกพร่อง (เช่นตัวแปรที่ไม่ได้ใช้)
  • ตรวจสอบสไตล์เพื่อบังคับใช้มาตรฐานการเข้ารหัสและอนุสัญญา (เช่นช่องว่าง Javadoc)
  • Error Prone hooks ลงในขั้นตอนการคอมไพล์ของแอปพลิเคชันของคุณ

เครื่องมือทั้งหมดนี้มีกฎบางอย่างที่ทับซ้อนกัน มีเครื่องมืออื่น ๆ ที่คล้ายกัน แต่เป็นที่นิยมและได้รับการสนับสนุนมากที่สุด


คุณจะบอกว่า Findbugs และ PMD ต่างกันไหม? ครั้งที่แล้วที่ฉันตรวจสอบสิ่งนี้ฉันสรุปได้ว่ามันคล้ายกันมากพอที่เราต้องการเพียงอันเดียว (และเลือก PMD) นอกจากนี้เรายังใช้ Checkstyle และใช่พบว่าแม้ PMD และ Checkstyle จะทับซ้อนกัน
Tom Anderson

@ TomAnderson - ฉันจะบอกว่าพวกเขาทำสิ่งที่แตกต่างกันแน่นอน มีค่าสำหรับทั้งคู่ (เห็นได้ชัดว่ามีการทับซ้อนกันเช่นกัน)
jtahlborn

ใช่เป้าหมายที่แตกต่างกันมาก Findbugs พยายามค้นหาจุดบกพร่องที่เกิดขึ้นจริงบางครั้งโดยทำการวิเคราะห์เชิงลึก PMD เพียงแค่มองหารูปแบบที่ทราบว่าบางครั้งอาจนำไปสู่จุดบกพร่อง โดยส่วนตัวแล้วฉันใช้ FindBugs และ Checkstyle เนื่องจากมีการทับซ้อนกันน้อยลง
mikeslattery

คุณอาจต้องการพูดถึงว่า pmd มีเช็ค 2 ประเภทคือ pmd และ cpd
jtahlborn

4
Findbugs ตอนนี้SpotBugs (บนGitHub )
Matruskan

12

นอกจากนี้ตรวจสอบSonarซึ่งรวมเครื่องมืออื่น ๆ ไว้มากมายและให้มุมมองที่ดีด้วย

กฎจาก Checkstyle, FindBugs, PMD, Clirr, fb-Contrib


ไม่แน่ใจว่าจะเพิ่มลงในโพสต์คอมมิต hook ได้อย่างไร แต่http://docs.codehaus.org/display/SONAR/Analyzing+with+Mavenอาจเป็นจุดเริ่มต้นที่ดี (โดยเฉพาะถ้าคุณใช้ maven)

อาจลองใช้วิธีใดวิธีหนึ่งที่ระบุไว้ในhttp://docs.codehaus.org/display/SONAR/Continuous+Integrationเนื่องจากดูเหมือนว่าคุณอาจพยายามมองหาเครื่องมือที่ดีกว่าสำหรับทั้งทีม ("แม้ว่าบางส่วนของ คุณสมบัติเหล่านั้นจะดีกว่าว่าสิ่งที่เรามีอยู่ตอนนี้ - ไม่มีอะไร! "


2
+1 สี่ปีหลังจากคำถามถูกถาม SonarQube ดูเหมือนจะมีความกระตือรือร้นทันสมัยและสมบูรณ์มากขึ้น มันเคยรวมเครื่องมือที่กล่าวมาข้างต้น แต่ตอนนี้มันใช้พวกมันโดยหลีกเลี่ยงการทับซ้อนblog.sonarsource.com/…
user2518618

-1

นี่คือสิ่งที่ฉันกำลังทำอยู่อย่างแน่นอน: เครื่องมือที่เป็นมิตรกับ CLI เพื่อใช้ในการตรวจสอบคุณภาพของโค้ด Java นอกจากนี้ยังมีรูปแบบการโต้ตอบ คุณสามารถเรียกใช้แบบสอบถามเดี่ยว (เพื่อตรวจสอบคำเตือนเดียว) หรือแบบสอบถามทั้งหมดพร้อมกัน

เครื่องมืออยู่ในช่วงเริ่มต้น แต่ฉันกำลังดำเนินการอยู่เกือบทุกวัน มีให้ที่นี่:

https://github.com/ftomassetti/effectivejava

โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับเรื่องนี้และอย่าลังเลที่จะถามคำถาม


3
การกระทำครั้งสุดท้ายของโครงการนี้เมื่อ 2 ปีที่แล้ว ไม่แน่ใจว่ากำลังมีการพัฒนาอีกต่อไปหรือไม่
Daniel Eagle

ไม่มันไม่ใช่. แต่แล้วฉันก็เริ่มทำงานกับ JavaParser โครงการนั้นไม่ได้ให้ CLI ma แก่คุณซึ่งสามารถสร้างขึ้นมาได้
Federico Tomassetti
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.