Нужны инструменты анализа зависимости пакета Java
В любом случае можно ли выполнить анализ зависимостей пакетов с помощью jDepend, задачи проверки contrib contrib или любого другого аналогичного инструмента, в котором вместо белых списков используются черные списки?
То есть я хочу быть гораздо менее строгим (по крайней мере, на начальном этапе). Вместо указания пакета А должны зависеть только от В, С и К; пакет B должен зависеть только от Q, W и R; и т.д. для каждого пакета в системе, я хотел бы начать с того, что пакет А абсолютно не может иметь никакого контакта с W и Y, и все остальное, что он делает, мне хорошо. Затем я мог бы постепенно добавить в полный список ожидаемых зависимостей (A зависит только от B, C, K) для каждого пакета с течением времени, так как все подвергается рефакторингу.
Так существует ли инструмент для этого?
3 ответа
Это можно сделать с помощью диаграмм архитектуры Structure101, поскольку диаграммы могут содержать подмножество вашей кодовой базы. В вашем примере вы могли бы создать 3 ячейки на диаграмме для A, W и Y, поместив W и Y над A на диаграмме (зависимости могут течь только вниз или, по крайней мере, восходящая зависимость считается "нарушением" диаграммы). Размещение W и Y рядом друг с другом говорит о том, что между W и Y не должно быть никаких зависимостей. Если вы не хотите ограничивать зависимости между W и Y (пока), вы можете объединить их в одну ячейку и -зависимости не будут проверены. Правила автоматически проверяются, и вы можете генерировать предупреждения и / или ошибки (прервать сборку, если хотите). И вы можете постепенно добавлять к диаграмме по мере продвижения ваших усилий по рефакторингу...
Я могу сделать лучше: вы можете выражать такие вещи в AspectJ AOP, чтобы это можно было применять во время выполнения. "AspectJ в действии" показывает вам, как.
verifydesign может быть менее строгим в том смысле, что вы можете, так сказать, определить "пачку" и сделать ее более строгой. Ссылка на статью, в которой есть статья о устаревших системах (которые обычно нарушают тонны задуманного дизайна).