2015-08-31 2 views
3

Я пытаюсь создать индекс неиспользуемых методов Java в виде json-файла.Как проверить мертвые методы java во время выполнения

Существует несколько способов, которыми можно ссылаться на методы. Я уже проверял все остальные способы и имею относительно небольшой список, возможно, неиспользуемых java-методов.

Последний способ использования метода в других java-файлах. Они будут вызываться с базовым классом class.method (args, args2 и т. Д.), Где-то в исходном коде java.

Мой вопрос в том, есть ли простой способ просто проверить список возможных неиспользуемых методов, чтобы увидеть, не используется ли какой-либо из них в java-коде. Было бы идеально, если бы это можно было сделать во время выполнения, но это также сработает, если я смогу создать файл, который я мог бы прочитать во время выполнения.

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

+1

ваш IDE должен сказать вам, если метод не используется. – StackFlowed

+2

Что пытаются решить? –

+1

Это так, и это моя резервная копия ... Но мне действительно хотелось бы иметь определенный список всех полностью неиспользуемых методов вместо возможного списка, который мне тогда нужно проверить, чтобы увидеть, что на самом деле используется. Этот сценарий, скорее всего, будет запущен довольно часто, и было бы здорово, если бы он мог быть полностью автономным @StackFlowed – pythonHelpRequired

ответ

2

Вы должны использовать IDE (eclipse, intelliJ) или какой-либо инструмент для анализа статического кода, такой как findbugs, pmd, checkstyle.

Кажется, вы пытаетесь изобрести колесо.

+0

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

0

Одним из вариантов может быть использование инструментов анализа покрытия, чтобы увидеть, что не используется (https://en.m.wikipedia.org/wiki/Java_Code_Coverage_Tools). Если у вас есть хорошее распределение филиалов с вашими модульными тестами, просто запуск тестов с охватом даст результат, который вы ищете. Если у вас нет хорошего покрытия тестов, вы можете запустить само приложение с кодом, предназначенным для расчета покрытия, но, как и в случае модульных тестов, качество результата будет зависеть от количества кода, выполняемого с тестом unit или вручную.

Некоторые примеры инструментов покрытия, которые вы можете использовать: JaCoCo (http://www.eclemma.org/jacoco/) и Cobertura (http://cobertura.github.io/cobertura).

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

Этот SO вопрос имеет аналогичные решения: How to find unused/dead code in java projects

Смежные вопросы