AUS (API Usage Scanner) is a J2EE tool that helps developers detect fragile APIs in Java applications to avoid binary compatibility and toleration problems. AUS, a pure Java utility, identifies references to APIs of one product by another product to create a set of detailed reports showing where references to the APIs are found and how those APIs are used.

From the AUS home page:

The API Usage Scanner (AUS) tool can help quickly locate these internal API usages so that compatibility problems can be avoided or remedied. AUS is a pure Java utility that scans Java bytecode for references to targeted APIs. In other words, AUS can be used to scan one product to detect the use of another product's internal APIs. Once these usages are identified, the situation can be remedied by replacing those internal APIs with published ones. If a suitable published API is not available, the product team can alert the API developers of the existence of fragile interfaces between the two products and request an agreement to hold that API stable until a suitable replacement can be provided. Several IBM flagship software products have already done this with great success.

At my previous company we were making a framework - big one. From time to time we wanted to know which part of the API we were supplying was most used by clients, in order to spend our time optimizing and debugging code that was used the most. This kind of information was a pain to collect and it rarely proved to be accurate. If this tool can provide such information, it would be more then useful.

I realy needed a tool like this a while back. I had just started a job and was asked to modify the code base to avoid using a certain method in an API. Unfortunately for me, the codebase was apparently the result of one of those 'a million monkeys with typewriters' experiements. The usage of the AbstractFactory pattern was great and greatly misguided. It took me quite a while chasing references to realize I was in an API loop.

Not having used this tool I can't say that it would have worked for me unless it can follow reflection through classnames stored in a database.

TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations technology projects - with its network of technology-specific websites, events and online magazines.