Atomiq is a simple text comparison program (so it appears so far). It was created for use with .Net code but works fine with Java, which is what I used as a quick and simple test.
I pointed it my company’s Java codebase and let it analyse the .java files. It analyzes files, line-by-line, ignoring whitespace, comments and anything that is really ambiguous in source files like comment lines.
The Atomiq window is very busy, showing a directory tree of “found” result files that has duplicate code in them. There is also a panel showing the different matches to potentially multiple files of the currently selected “file”, then when a match is selected another pane showing the source code of the file selected, with added bands of colour coded bars added to the left of the line number display indicating code matches then a split panel showing the matched code totally separated out from the original source and its match. Its not until you find a file that has multiple matches of duplicated code with many instances of it contained not only within itself but other files and other parts of other files that you appreciate the busy display.
The first file I chose indicated that about 10 lines of import declarations were duplicated between two files. “Big Wooop” I thought, who cares about duplicated imports? Okay that was a poor example of what this tool does for you although I did find lots of examples that were equally useless.
I started going through some more examples and started finding some interesting results. It was pointing out the obvious “duplicate code that should be refactored” cases and that was good, but what I found really interesting was that it was showing code that was duplicated in varied places that I might not have necessarily known were or needed to be doing the same things. For me this highlights insight into the code that may be necessary to know at some point while refactoring is being done. I found this very useful.
I clicked on the “Wheel” menu item. Perhaps not a good idea considering the number of files in our code base and that it had analyzed. Its a graphical display of a wheel showing all of the “interconnections” between the duplicated code that it found. Its just a fancy navigation display. Clicking on any of the shown items simply activates those files in the main display. Because there was so much to display in this wheel, moving the window around the screen (like moving it to my main window in my dual monitor setup) was quite painful and took awhile to redraw.
The full product is available as a free download that expires after 7 days of usage. Seems rather lightweight as it comes as an executable that you download and simply run (uncompressed). Its 4.5 Mb size is rather small and its memory footprint I assume would be dictated by the number of files analyzed didn’t seem that bad at 250Mb considering it opened and analyzed the thousands of files that make up our product base. The Wheel display added an additional 100Mb of memory usage.
Nice little tool, well worth the $30 they are asking for. If you’re a developer, it would be well worth it for you to have a look at it.