Is there any tool that you can point to a set of Java classes and it produces output showing the transit import of each class?
I understand that import is not "transitional" from the point of view of the language itself, i.e. if com.acme.X imports com.acme.Y and com.acme.Y imports com.acme.Z, this does not mean that you can access com.acme.Z in com.acme.X. But this is not what I mean:
Rather, I mean that com.acme.X nonetheless depends on com.acme.Z (at least with the current implementations of X and Y), and I want to know this fact. In fact, I want to know this for a large number of classes, and therefore I hope that there the tool will automatically detect it.
Either a stand-alone tool, or an Eclipse plugin or feature will be great.
Thanks in advance.
EDIT to hopefully show what I want for this:
I have a huge monolithic jug that contains many functions that are (essentially) completely unrelated. I would like to break it down into several smaller, more manageable and more self-consistent cans.
Unfortunately, I cannot do this simply by breaking it down on the basis of packages, because many of the packages themselves are also not self-consistent. That is, for example, there is a package "com.acme.utils". Perhaps the two things in this package have nothing in common except for the fact that they are both, in a sense, "utilities." One of them can be useful for any particular business function, the other can be TCP / IP utilities, the other can be a set of string utilities, the other can be some completely unrelated business function.
And there are many such packages. Therefore, when you look at the transitivity of imports from the point of view of packages, they do not lose snowball without restrictions, and therefore more or less everything in a monolithic bank depends on everything else in a monolithic bank.
Therefore, I would like to start by looking at the transitivity of imports from the point of view of the class, not from the point of view of the package. Thus, I should be able to more easily determine which classes need to be reorganized from existing packages to new, more consistent packages, and then after that I can break the monolithic piece into packages / package sets.