Как делают я узнаю, какие файлы банки на самом деле используются при компиляции проекта Java

Если сайты Вашего NPO будут относительно большими или сложными (наличие динамических страниц, то это эффективно создаст 'черную дыру' как календарь с 'следующим днем' ссылка), Вы лучше использовали бы реальный поисковый робот, как Heritrix.

, Если общее количество сайтов некоторые нумеруют страниц, можно сойти с рук просто использование завихрения или wget или собственного. Просто помните, начинают ли они становиться крупными, или Вы начинаете делать свой сценарий более сложным, чтобы просто использовать реальный поисковый робот или по крайней мере посмотреть на его источник для наблюдения то, что является ими выполнение и почему.

Некоторые проблемы (существуют больше):

  • Черные дыры (как описано)
  • Повторения (что, если Вы получаете 500?)
  • Перенаправления
  • Управление потоком (еще можно быть нагрузкой на сайтах)
  • реализация robots.txt

15
задан tomdee 19 November 2009 в 14:36
поделиться

5 ответов

Вам понадобится инструмент Анализатор зависимостей классов . Процитируем введение:

Цель этого инструмента - анализ файлов классов Java ™, чтобы узнать больше о зависимостях между этими классами.

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

Если вы ожидаете зависимости времени выполнения, вам следует использовать CDA в качестве первого прохода, затем проведите исчерпывающее тестирование полученного приложения, чтобы убедиться, что нет файлов jar, на которые ссылались только через зависимости времени выполнения.

11
ответ дан 1 December 2019 в 02:19
поделиться

Здесь есть три проблемы:

  • Строки
  • Другие ресурсы (включая NIB)
  • Системные сообщения

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

Остальные два разрешимы, но вам нужно будет сделать больше вручную. Для строк вместо создания одного Localizable.strings и его последующей локализации создайте полностью отдельные таблицы (English.strings, French.strings и т. Д.). Затем используйте NSLocalizedStringFromTable () , передав язык в качестве таблица.

Для NIB есть два подхода. Вы можете поместить каждый набор локализованных NIB в отдельный пакет, а затем передать этот пакет вместо nil в -initWithNibName: bundle: . Альтернативно, не имеют никакого отношения к вашему коду, удалите их и их детей. В нашей папке libs я обнаружил, что около 20% из 150 файлов JAR в нашей папке libs не использовались во время компиляции, и это были потенциальные JAR-файлы, которые следовало удалить.

Большой абер в том, что вы не получаете ни одного. подсказка о том, какие JAR-файлы используются только во время выполнения посредством обнаружения и отражения. И именно здесь начинается настоящая работа.

Единственный способ узнать, используется ли JAR-файл во время выполнения, - это просто извлечь его, запустить приложение и протестировать все функции. Если у вас есть приложение среднего размера, выполнение 100% регрессионного теста займет много часов. Так что на практике я провел много догадок, быстрых и грязных тестов и расспрашивал окружающих, чтобы узнать, какие из зависимостей времени выполнения действительно использовались.

Это кажется довольно простым в использовании: загрузите, распакуйте и запустите инструмент в каталоге, содержащем все jar-файлы. Или используйте предоставленную задачу Ant.)

8
ответ дан 1 December 2019 в 02:19
поделиться

Последняя сборка eclipse предупредит вас о неиспользуемом импорте в исходном коде

2
ответ дан 1 December 2019 в 02:19
поделиться

В компиляторе есть параметр -verbose , и он довольно подробный. Он информирует о каждом загружаемом классе и о том, откуда он загружается!

Хотя он не совсем удобен для пользователя и не обеспечивает высокоуровневого анализа, я нашел его очень полезным для отладки конфликтов путей к классам. Это сообщает вам о банках, которые используются (с помощью grep ), а не о тех, которые не используются.

2
ответ дан 1 December 2019 в 02:19
поделиться
1
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: