JEP 212: Resolve Lint and Doclint Warnings
Устранение предупреждений lint и doclint
| Автор | Joseph D. Darcy |
| Ответственный | Joe Darcy |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 9 |
| Компонент | tools |
| Обсуждение | jdk9 dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | L |
| Рецензенты | Brian Goetz |
| Одобрен | Brian Goetz |
| Создан | 2014/05/09 21:55 |
| Обновлён | 2024/02/05 20:31 |
| Задача | 8042878 |
Аннотация
В кодовой базе JDK много ошибок lint и doclint, о которых сообщает javac. Эти предупреждения следует устранить, по крайней мере в фундаментальных частях платформы.
Цели
На практике цель состоит в том, чтобы как минимум пакеты фундаментальных пакетов платформы (тех, что обсуждаются в рассылках core-libs, awt-dev, swing-dev, 2d-dev и др.) компилировались без предупреждений lint и doclint компилятора javac. Желательно, чтобы и другие пакеты, например входящие в JAXP, JAX-WS и CORBA, тоже компилировались без предупреждений при включённых всех предупреждениях.
Критерии успеха
Успешная сборка соответствующих исходных файлов при использовании параметра -Xlint:all для команды javac. Допустимой может оказаться и несколько более слабая цель: включить все параметры lint, относящиеся к исходному коду, но не параметры lint для свойств, не связанных с исходным кодом. Например, некоторые параметры lint касаются свойств командной строки javac, а не компилируемых исходных файлов.
Описание
Этот JEP предлагает завершить работу по исправлению предупреждений, которая велась в JDK 8 и JDK 9, а также формализовать часть улучшений исходного кода, ранее предложенных в рассылке jdk9-dev. Большинство предупреждений устраняется изменением кода внутри тел методов. Устранение некоторых предупреждений rawtypes требует изменения сигнатур методов, например замены типа параметра с «сырого» java.lang.Class на java.lang.Class<?> или какой-либо более конкретный тип. Любые изменения API останутся в рамках общей политики развития JDK.
Тестирование
Основной проверкой для большинства изменений служит успешная компиляция / сборка, но существующие регрессионные тесты должны по-прежнему проходить. Если у API Java SE меняется сигнатура, соответствующий тест сигнатур JCK нужно будет обновить.
Зависимости
Устранить предупреждения об использовании элементов со статусом Deprecated (устаревший) в JDK было бы проще, если бы импорт типа со статусом Deprecated не вызывал такого предупреждения.