Чи є простий ліннер Java CLI? [зачинено]


86

Я намагався знайти лінтер Java, здатний працювати на CLI, який окремо від Eclipse, який я можу викликати як гачок коміту для git або від нашого автоматизованого сценарію збірки. Чи існує така річ?

В ідеалі йому потрібно перевірити наявність невикористаних імпортів та змінних, дотримання вказівок щодо стилю, правильне використання винятків тощо. Хоча деякі підмножини цих функцій були б кращими, ніж те, що ми маємо зараз - нічого!


2
//, це не запит на рекомендацію програмного забезпечення?
Натан Басанес

3
Я не знаю, чи слід мені запитувати тут чи на мета, але що поганого в таких питаннях, які вимагають рекомендацій? Звичайно, немає єдиної об’єктивної відповіді на це питання, але знову ж таки це стосується і багатьох технічних питань. Це питання можна переформулювати так: "У мене немає лінтера, і я не знаю, які інструменти доступні, чинні та широко використовуються". Це допомогло б? Я набагато волію знайти куратори, ранжировані та записані за датою запитання / відповіді на StackOverflow, ніж деінде. Куди слід звертатися людям із подібним запитанням, як не сюди?
Kyle Krull

Відповіді:


78
  • SpotBugs (попередні Findbugs ) для пошуку існуючих помилок. ДУЖЕ ДОБРЕ!
  • PMD для пошуку шаблонів, які можуть призвести до помилок (наприклад, невикористані змінні)
  • Контрольний стиль для забезпечення стандартів кодування (наприклад, пробіли, Javadoc)
  • Помилка, схильна до переходу, безпосередньо на етапі компіляції вашої програми

Усі ці інструменти мають деякі правила, що перекриваються. Існує багато інших подібних інструментів, але вони є найбільш популярними та підтримуваними.


Чи могли б ви сказати, що Findbugs та PMD роблять різні речі? Останній раз, коли я вивчав це, я дійшов висновку, що вони були досить подібними, що нам потрібен був лише один (і вибрав PMD). Ми також запустили Checkstyle, і так, виявили, що навіть PMD і Checkstyle перекриваються.
Том Андерсон,

@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.


Не впевнений, як саме додати його до гачка після фіксації, але 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 роки тому. Не впевнений, чи активно це вже розробляється.
Даніел Ігл,

Ні, це не так. Але потім я почав працювати над JavaParser. Цей проект не дає вам CLI ма, він може бути побудований поверх нього.
Федеріко Томассетті,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.