Инструмент, который перечисляет все устаревшие классы / методы, которые больше нигде не используются? - PullRequest
3 голосов
/ 23 ноября 2010

Мне нужно очистить какой-то устаревший код.Удаление неиспользуемого кода - важный шаг.

Существует ли инструмент, который находит весь устаревший код, удаляет все элементы, которые еще где-то используются, и выдает список неиспользованного устаревшего кода?

Для бонусабаллы: Есть ли инструмент, который может найти неиспользуемый код не осуждаемый код?

Я знаю, что это никогда не идеально, но я знаю, для каких случаев мне нужна специальная обработка (как в драйверах БД или классах, которыессылка через DI).

Ответы [ 4 ]

3 голосов
/ 30 ноября 2010

Я не совсем уверен, что понимаю ваш вопрос. Вы хотите инструмент, который отменяет устаревший код, на который все еще ссылаются? Любая IDE поможет вам в этом. Не автоматически, но удаление аннотации @Deprecated легко выполняется с помощью глобального запроса и замены. Конечно, после удаления неиспользуемого кода:

Если все, что вам нужно, это удалить неиспользуемый код, я использовал плагин eclipse ucdetector для этой цели в предыдущем проекте. Хотя он на самом деле не удаляет неиспользуемый код, он дает вам список методов, классов и констант, которые не имеют ссылок, так что вы можете удалить их самостоятельно. Это хорошая вещь.

Как вы указываете себе, есть некоторые классы / методы, которые могут показаться неиспользованными при использовании статического анализа. На мой взгляд, это делает невозможным автоматизировать эту задачу. Вам, кодировщику, придется анализировать каждый блок кода, который, как сообщается, не используется.

Если вам посчастливилось иметь отличное тестовое покрытие, другой вариант - использовать инструмент анализа покрытия кода, такой как cobertura, clover или emma.

0 голосов
/ 01 мая 2018

не уверен, что ваш Q немного сложен для понимания ... StackOverflow для меня это в основном проблема кода, поэтому я предполагаю, что вам нужен способ получить все методы с аннотацией @Deprecated ...

так что в основном вам нужно взглянуть на Java Reflection ..

Итак, например, допустим, вы хотите, чтобы все устаревшие методы в классе даты (Java.util.Date) это то, что вы можете сделать ...

Class<?> clazz = Date.class; //Getting Class Obj of the Date Class

    Method[] methods = clazz.getDeclaredMethods(); //Getting methods


    for (Method m : methods) { //Inhanced For-Loop To get them-all 
        for (Annotation a : m.getAnnotations()) {
            if (a instanceof Deprecated) {
                System.out.println(m.getName()); // gitting the Methods Names
            }
        }

    }
0 голосов
/ 23 ноября 2010

IntelliJ идентифицирует их, когда я пишу их.Я не уверен, есть ли возможность удалить их автоматически.

0 голосов
/ 23 ноября 2010

Я думаю, это делает то, что вы хотите, но игнорирует @Deprecated. Кажется, я помню, что в контекстном меню проекта добавлена ​​опция для поиска неиспользуемых методов.

http://eclipse -tools.sourceforge.net /

...