If you’ve ever used reverse-engineering products you’ve probably had the feeling that you’d like to see your code-base represented in some way other than the way it really is. It’s just that you think of your code as a bunch of components that are subtly but annoyingly different than what you see in the Package or Jar hierarchies. In reView you could drag-n-drop things into the shape you want. This felt good, but in practice it’s not very repeatable – you have to keep re-assigning new code.
So in Structure101 we introduced Transformations that let you define hierarchy changes as a sequence of regular expressions. So, if your fred-related code is spread out all over your code-base, you can move *.fred.* to fred.*.fred.* so that you can see it all in one location and see how it relates to the other stuff. We have customers that keep their APIs physically separate to the rest of their code and bring them together in Structure101, or pull application code away from test code, or define how each architectural component is assembled from physical packages. All with a few regular expressions.
Someone just drew my attention to the fact that IntelliJ IDEA let’s you define dependencies you want to avoid in a similar way. Hmm, do I feel an integration comming on? Not sure, I think I’d prefer to just monitor the new dependencies and reverse them out if/when they happen than define all the dependencies I don’t want. But never say never…
Leave a Reply