If any of you are looking for a top-notch repository to contribute to, drop in at our gitter channel and say hi!
Can anyone tell me the rocket science behind this?
How would a library know if a code and its libraries are
performing software development/engineering best practices?
What types of algorithms do you use and are there other libraries that already does this that is language agnostic?
Code Climate does something similar with their Engines specification. Personally I like how they make use of Docker containers to perform the analysis. It is perhaps a bit heavyweight for simple analyses but it makes it really easy to install different language runtimes and tools.
So yes, there are some very simple generic algorithms (line length checking, spacing corrections, we have things like variable name checking in the works which only need a few lines "language definition") and you can combine them with - possibly wrapped or not - language dependent algorithms easily.
This is useful for the user because he doesn't have to learn and configure tons of tools and he has some basic functionality for every language - even the ones he writes tomorrow.
It's also useful for people writing static code analysis because they can just write their algorithm and be done with it - why should everybody rewrite a CLI interface, editor plugins and so on?
I wrote a thesis about code clone detection (another algorithm that is basically generic and would need only a relatively small parsing part per language, coala allows me to modularize meanfully into parsing and language independent AST processing) and it just took me a few functions that actually performed the analysis. People can now use it easily which usually isn't true for research programs and I had even less work than I would have if I had written it without coala.
However, I must say that very critical info for first-time users is still unavailable or very vaguely documented. For example, I still have no clue what sort of analysis can be obtained from this page : https://github.com/coala-analyzer/coala-bears/wiki/Available.... I can see a bunch of Bears but that's your terminology. I would rather prefer a brief summary of the tool's analysis or atleast a link to the static analyzer which a specific bear wraps over. For e.g. "AlexBear" - I honestly have no clue what that or 90% of the other bears end up doing with my source code.
You have put so much effort in the implementation, please improve clarity/coverage of documentation.
Also, installation (pip3 install coala-bears) fails on OSX. Any ideas on how to fix that ? Here is the error message : http://pastebin.com/tP3dZsik
We have a project in planning stage to make a browsable webpage generated from the per bear documentation, we will also look a lot at the configurability and documentation of the individual bears for the next release.
I filed an issue for the missing info at https://github.com/coala-analyzer/website/issues/30 , thank you for your feedback!
I look forward to contributing to coala if I end up incorporating it alongside my (internal) tool and would like an unimplemented functionality. Good luck.