Зависит от инструмента извлечения исходного кода, предназначенный для вывода синтаксических отношений между объектами исходного кода, такими как файлы и методы, из различных языков программирования. Наша цель состоит в том, чтобы предоставить структуру, которая легко расширяется для поддержки извлечения зависимостей из различных языков программирования и файлов конфигурации, чтобы на нее можно было бы построить другие высокоуровневые инструменты анализа, независимо от языка. Примеры приложений включают визуализацию кода, понимание программы, обнаружение запаха кода, анализ архитектуры, рефакторинг дизайна и т. Д.
Наше создание зависит , мотивировано наблюдениями, которые различные поставщики, такие как Inpect ™, Structure 101 ™ и Lattix ™, создали свои собственные инструменты извлечения зависимости, которые упакованы с другими функциями анализа. Чтобы провести новый анализ, поставщики и исследователи должны создавать свои собственные инструменты извлечения зависимости или использовать выходные данные других инструментов, которые обычно не предназначены для повторного использования.
Мы считаем, что анализ зависимостей исходного кода программного обеспечения является одной из наиболее важных оснований для разработки программного обеспечения. Учитывая растущее число систем, построенных на новых языках и многоязычных, необходимость гибкой, расширяемой структуры извлечения мультизловой зависимости, с простыми и едиными интерфейсами широко признаны.
Зависит от открытого исходного кода и свободного, для содействия сотрудничеству сообщества, чтобы избежать повторяющейся работы и улучшить качество аналитических инструментов.
Вы можете скачать последнюю версию « Зависит от https://github.com/multilang-depends/depends/releases/»,
а затем распаковать depends-*version*.tgz
файл в любом каталоге вашего компьютера.
Зависит от Java, поэтому его можно запустить на любой ОС с средой JRE или JDK (например, Windows, Linux или Mac OS).
Следуя принципу единой ответственности, зависит только для извлечения зависимостей. Он предоставляет только интерфейс CLI, без графического интерфейса. Но вы можете преобразовать выходной сигнал в зависимости от графического интерфейса других инструментов, таких как graphviz (http://graphviz.org/), plantuml (http://plantuml.com/) и dv8 (https: // www. archdia.com).
Вы можете запустить, зависит следующим образом: depends.sh
от Linux/Mac, depends.bat
от Microsoft Windows, или java -jar depends.jar
.
ПРИМЕЧАНИЕ. Если вы столкнулись с ошибкой памяти, например, GC overhead limt exceed
, пожалуйста, разверните память JVM, как следующий за java -Xmx4g -jar depends.jar <args>
.
Использование инструмента CLI может быть перечислено depends --help
, как следующее:
Usage: depends [-hms] [--auto-include] [-d=<dir>] [-g=<granularity>]
[-p=<namePathPattern>] [-f=<format>[,<format>...]]...
[-i=<includes>[,<includes>...]]... <lang> <src> <output>
<lang> The language of project files: [cpp, java, ruby, python,
pom]
<src> The directory to be analyzed
<output> The output file name
--auto-include auto include all paths under the source path (please
notice the potential side effect)
-i, --includes=<includes>[,<includes>...]
The files of searching path
-d, --dir=<dir> The output directory
-f, --format=<format>[,<format>...]
The output format: [json(default),xml,excel,dot,
plantuml]
-g, --granularity=<granularity>
Granularity of dependency.[file(default),method,L#(the level of folder. e.g. L1=1st level folder) ]
-h, --help Display this help and exit
-s, --strip-leading-path Strip the leading path.
-m, --n-map-files Output DV8 dependency map file.
-p, --namepattern=<namePathPattern>
The name path separators.[default(/),dot(.)
Для запуска зависит , вам необходимо указать 3 наиболее важных параметров: lang
, src
, output
, как объяснено выше.
Обратите внимание, что для большинства языков программирования, таких как C/C++, Ruby, Maven/Gradle
, путь --includes
важен для зависимости , чтобы найти правильные файлы при проведении анализа зависимостей кода, аналогично MakeFile/IDE. В противном случае извлеченные зависимости могут быть не точными.
Не указывайте, включайте пути за пределами каталога SRC (например, уровень системы включает пути или внешние зависимости), потому что зависимости не будут их обрабатывать.
--auto-include
является полезным параметром для упрощения ввода включения Dirs: с этим параметром зависит от всех подзадаж src
.
Для программ Java
вам не нужно указывать, что включают пути, потому что отображение между путями файлов Java явно указано в операторах импорта.
Выход зависимости может быть экспортирован в 5 форматов: JSON, XML, Excel, Dot и Plintuml. Из -за ограничения MS Excel вы можете экспортировать в файл Excel, только если количество элементов составляет менее 256.)
DOT -файлы могут использоваться для генерации графиков с использованием GraphViz (http://graphviz.org/).
Файлы Plantuml могут использоваться для генерации диаграммы UML с использованием Plantuml (http://plantuml.com/).
Файлы JSON и XML могут использоваться для генерации матриц структуры проектирования (DSM) с использованием DV8 (https://www.archdia.net).
Деталь формата JSON/XML можно найти здесь.
Зависит от поддержки основных типов зависимостей, включая:
import
Java, C/C ++ #include
, Ruby require
.Для получения подробной информации о поддерживаемых типах, пожалуйста, обратитесь к
Есть много способов внести свой вклад в зависимость . Например:
Зависит от изящного ядра для анализа зависимостей, который может быть расширен для размещения различных языков программирования. До сих пор это поддерживает только Java, C/C ++, Ruby и Maven. Пожалуйста, не стесняйтесь использовать эту структуру, чтобы добавить свой собственный экстрактор зависимости.
Усилия, необходимые для каждого языка, сильно различается. Мы провели 24 часа, чтобы поддержать Maven, но потратили недели, чтобы извлечь зависимости от Ruby
Исходные файлы анализа не тривиальны. Существует множество особенностей, специфичных для языка, которые необходимо принять во внимание. Сообщение о неподдерживаемых языковых функциях или исправление существующих вопросов будет чем -то, зависит лучше.
Вы можете использовать в зависимости от строительных блоков для создания различных инструментов, либо с открытым исходным кодом, либо коммерческими, для производства или исследований, таких как инструменты GUI, инструменты визуализации кода и т. Д.
Это очень поможет нам, если ваша компания или институт станут спонсором нашего проекта. Ваше пожертвование может помочь быть независимым , устойчивым и поддержать больше участников.
Вы можете использовать «зависит» в ваших проектах, как с открытым исходным кодом, так и в коммерческих исследованиях, а также исследования программного обеспечения. Ваши отзывы высоко ценится. Мы также будем благодарны, если вы сможете помочь нам распространять слова и побудить больше людей использовать их.
Этот проект построен на отличной работе других исследователей, в том числе Framework (https://github.com/jinwuxia/enre), предложенную Джин Уьюсией и др., И исследование архитектуры от команды профессора Юанфанга CAI ( https://www.cs.drexel.edu/~yfcai/) об анализе зависимостей.
Языковой фронт зависит от нескольких превосходных проектов с открытым исходным кодом, в том числе antlr/antlr Grammar V4 (https://github.com/antlr), Eclipse CDT (www.eclipse.org/cdt) и Jruby ( https://github.com/jruby/jruby).