Мне интересно узнать о доступных вариантах высококачественных автономных форматировщиков исходного кода для Java.
Форматер должен быть автономным, то есть он должен поддерживать "пакетный" режим, который отделен от любой конкретной среды разработки. В идеале он должен быть независимым от какой-либо конкретной операционной системы. Таким образом, встроенный модуль форматирования для IDE du jour здесь не представляет большого интереса (если только IDE не поддерживает вызов средства форматирования в пакетном режиме, возможно, из командной строки). Форматер, написанный на C/C++ с закрытым исходным кодом, который работает только на, скажем, Windows, не идеален, но несколько интересен.
Чтобы было ясно, "форматтер" (или "beautifier") не то же самое, что "проверка стиля". Средство форматирования принимает исходный код в качестве входных данных, применяет правила стиля и создает стилизованный исходный код, который семантически эквивалентен исходному исходному коду. Синтаксические изменения ограничиваются такими вещами, как изменение макета кода, например, изменение пробелов или организация операторов import
. Очень мало, если таковые имеются, другой рефакторинг выполняется. Средство проверки стиля также применяет правила стиля, но оно просто сообщает о нарушениях правил, не выводя модифицированный исходный код в качестве вывода. Итак, картина выглядит так:
Formatter (создает модифицированный исходный код, соответствующий правилам стиля)
Прочитать Исходный код → Применить правила стиля → Написать стилизованный исходный код
Проверка стиля (не производит измененный исходный код)
Прочитайте Исходный код → Применить правила стиля → Нарушение правил записи
Дальнейшие разъяснения
Решения должны быть легко настраиваемыми. Я хочу иметь возможность указать свой собственный стиль, а не просто выбрать из списка предустановок.
Кроме того, я не ищу симпатичный принтер общего назначения, написанный на Java, который может печатать много вещей. Я хочу стилизовать код Java.
Я также не обязательно интересуюсь великим унифицированным форматером для многих языков. Я полагаю, что для решения было бы неплохо иметь поддержку языков, отличных от Java, но это не является обязательным требованием.
Кроме того, инструменты, которые выполняют только подсветку кода, прямо не нужны.
Я также не заинтересован в веб-сервисе. Я хочу инструмент, который я могу запустить локально.
Наконец, решения не должны ограничиваться открытым исходным кодом, общественным достоянием, условно-бесплатным программным обеспечением, свободным программным обеспечением, коммерческим или чем-либо еще. Все формы лицензирования являются приемлемыми.