I just been given a new assignment which looks like its going to be an interesting challenge.
The customer is wanting a code style checking tool to be developed for their internal (soon to be open sourced) programming language which runs on the JVM. The language syntax is very Java like.
The customer basically wants me to produce something like checkstyle.
So my question is this, how would you approach this problem? Given a clean slate what recommendations would you make to the customer?
I think I have 3 options
-
Write something from scratch. Id prefer not to do this as it seems like this sort of code analysis tool problem has been solved so many times that there must be a more “framework” or “platform” orientated approach.
-
Fork an existing code style checking tool and modify the parsing to fit with this new language etc etc
-
Extend or plug into an existing static code analysis tool. (maybe write a plugin for Yasca?)
Such tools basically have to implement a compiler front-end for at least a subset of the language. The easiest starting point is often to adapt an existing compiler front-end, so you should definitely start by looking at your customer’s compiler. If you are lucky it will have a clean separation between the front-end and back-end and will be able to use it as-is and use the AST or whatever IR the front-end produces to do your additional analysis.