Есть ли инструмент для анализа уровня доступа классов и методов Java? - PullRequest
0 голосов
/ 27 мая 2009

В коде Java для нашего приложения я почти уверен, что есть много классов и методов, которые имеют доступ public, но, вероятно, нуждаются только в доступе на уровне пакета.

Что я хотел бы сделать, так это привести в порядок наш код для каждого уровня пакета, создавая только те вещи, которые действительно должны отображаться вне каждого пакета public, поскольку это должно упростить другой рефакторинг, который я хочу сделать. 1005 *

Мне было интересно, есть ли инструмент, который мог бы помочь мне в этом. В идеале он анализирует весь код и создает отчет о том, какие классы и методы имеют открытый доступ, но вызываются только из одного пакета.

Опция Find Usages в Netbeans может помочь мне в этом, но запуск ее вручную для каждого класса и метода и построчный анализ выходных данных займет вечность.

Ответы [ 3 ]

3 голосов
/ 27 мая 2009

Я использовал ProGuard , инструмент манипулирования байтовым кодом, чтобы найти мертвый код в прошлом. В руководстве ProGuard есть пример того, как его использовать. Обратите внимание, что этот инструмент также выполняет много других функций, и его использование не является типичным, но я знаю только об одном, что может сканировать все приложение на наличие мертвого кода.

Редактировать: Итак, я неправильно понял вопрос. Возможно UCDetector - это то, что вы хотите. Он заявляет, что может «обнаруживать» код, в котором видимость может быть изменена на защищенную, по умолчанию или частную. Тем не менее, он привязан к Eclipse. Я только что попробовал UCDetector на своей базе кода, и, похоже, он справился. Определенно обнаружил некоторые методы и классы, видимость которых может быть уменьшена.

1 голос
/ 27 мая 2009

Дешевый (и, скорее всего, более быстрый, чем установка инструмента за один проход) поиск и замена public class на class и аналогично abstract, final и interface Перекомпилируйте. Исправьте то, что ломается, пока не скомпилируется.

0 голосов
/ 27 мая 2009

Плагин NetBeans SQE может помочь.

Он интегрирует FindBugs, PMD, CheckStyle и Lint4j в сетевые компоненты. Это должно обеспечить предупреждение о том, что общедоступные методы могут быть сделаны частным пакетом и т. П.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...