[MonoDevelop] Code analysis soc project

nikhil sarda diff.operator at gmail.com
Mon Mar 22 16:11:40 EDT 2010


Hi,
I am writing this mail to get an opinion on the feasibility of the
on-the-fly code analysis project. This contains information I gleaned
from mhutch and mkrueger in IRC. I had taken the suggestion of mhutch
and was sniffing around the code completion bindings of c# in MD. The
code to underline with red the line of code that is generating a
parser error was straightforward to understand, but trying to
implement some more complicated forms of error detection the way
resharper does is slightly more difficult. Apparently the current
version of NRefactory is not good enough to detect certain types of
semantic errors. Hence detecting errors such as invalid return types,
incorrect parameters and so on are very difficult to do with the
current NRefactory. This is because there is presently no way to go to
the parent of the node you've no way to go to the parent and top-down
analysis is difficult because "<mkrueger>: because you can't go to the
children of the nodes without knowing the type of the node". Some
things that can be implemented however are naming conventions,
spellings in comments and string literals and so on. Given this
backdrop is there any point proceeding with this project? Or should
one wait for the new DOM to be completed?
I had a bunch of other ideas as well that I talked to people about on
IRC and XMPP, but I wanted to get a general opinion as well.

1) Extending the Code metrics addin: The addin i posted on the mailing
list does quite a few things, but a lot is still left to implement,
such as cohesion, coupling and association between classes. Maybe I
can add a few more metrics such as
http://yunus.hacettepe.edu.tr/~sencer/oom.html
But the killer feature would be CQL, which allows one to query the
code base for types, methods and namespaces that satisfy criteria as
specified in a very SQL type language. NDepend implements CQL and I
will be trying to replicate that.

2) Allowing for collaborative editing over XMPP, a la google wave.
This will probably require changes to Mono.Texteditor itself

3) Integration of monodoc (zzz)

Thank you for your time
Nikhil Sarda


More information about the Monodevelop-list mailing list