Мені цікаво дізнатись про доступні варіанти якісних самостійних форматувальників вихідного коду для Java.
Форматор повинен бути автономним, тобто він повинен підтримувати "пакетний" режим, який відокремлений від будь-якого конкретного середовища розробки . В ідеалі вона також повинна бути незалежною від будь-якої конкретної операційної системи . Отже, вбудований форматор для IDE du jour тут мало цікавий (якщо тільки IDE не підтримує виклик форматування в пакетному режимі, можливо, з командного рядка). Форматор, написаний на закритому коді C / C ++, який працює лише на, скажімо, Windows, не є ідеальним, але дещо цікавим.
Щоб бути зрозумілим, "форматор" (або "прикрасник") - це не те саме, що "перевірка стилю". Форматор приймає вихідний код як вхід, застосовує правила стилізації та створює стилізований вихідний код, який семантично еквівалентний вихідному коду. Синтаксичні модифікації обмежуються такими речами, як зміна макета коду, як, наприклад, при зміні пробілів або організація import
операторів. Іншого рефакторингу проводиться дуже мало, якщо він є. Засіб перевірки стилів також застосовує правила стилізації, але він просто повідомляє про порушення правил, не створюючи модифікований вихідний код як вихід. Тож картина виглядає так:
Formatter (створює змінений вихідний код, який відповідає правилам стилізації)
Прочитайте вихідний код → Застосувати правила стилізації → Написати стилізований вихідний код
Перевірка стилів (не створює змінений вихідний код)
Прочитайте вихідний код → Застосувати правила стилізації → Написати порушення правил
Подальші роз’яснення
Рішення повинні бути конфігурованими. Я хочу мати можливість вказати свій власний стиль, а не просто вибрати із попередньо встановленого списку.
Крім того, я не шукаю симпатичний принтер загального призначення, написаний на Java, який може досить друкувати багато речей. Я хочу стилізувати код Java.
Мене також не обов’язково цікавить уніфікований форматор для багатьох мов. Я вважаю, що для рішення може бути приємно мати підтримку інших мов, крім Java, але це не є вимогою.
Крім того, інструменти , які тільки виконують підсвічування коду є прямо з .
Мене також не цікавить веб-сервіс. Я хочу інструмент, який я можу запускати локально.
Нарешті, рішення не повинні обмежуватися відкритим кодом, загальнодоступним, умовно-безкоштовним, вільним програмним забезпеченням, комерційним продуктом чи будь-чим іншим. Усі форми ліцензування є прийнятними .