[MonoDevelop] Getting the Smokey addin working.

Oliver Stieber oliver.stieber at ukplc.net
Fri Feb 13 05:45:11 EST 2009

Some of the things I would like to try and implement are:
standard compiler warnings and errors.
variables that are assigned a value that are never used.
private members / methods that are never used.
variables that could be declared in an inner scope.
missing elements for string.Format would be good.
null reference checking would also be nice.
checks for missing disposes.
checks for uncaught exceptions.
enum member not checked in a select statement using an enum.
some naming convention checker would also be good.
and a feature to clean up the code automatically. (assuming I've nailed
all the bugs!)

additional checks performed by Gendarme/Smokey.

a few refactoring features like extract interface, extract method, (but
their really a separate project)

I would want to use the DOM so I can do the stuff in real time, but will
probably need to put something on top of it to enable some of the checks
and improve performance. Looking at the model Gendarme/Smokey use for
their tests would probably be a good starting point to see what needed
compared to what the DOM can provide and it may be a good idea to
provide a model that's not too different from Gendarme so that rules can
easily be ported.

-----Original Message-----
From: Michael Hutchinson [mailto:m.j.hutchinson at gmail.com] 
Sent: 12 February 2009 19:22
To: Oliver Stieber
Cc: monodevelop-list at lists.ximian.com
Subject: Re: [MonoDevelop] Getting the Smokey addin working.

On Thu, Feb 12, 2009 at 1:58 PM, Oliver Stieber
<oliver.stieber at ukplc.net> wrote:
> Ok, I'm happy to maintain the addin as soon as I know how it works!.
> intention is to eventually use a real time parser and write something
> like ReSharper for MonoDevelop. I thought smokey / Gendarme would be a
> good place to start to get this kind of framework into MonoDevelop.

That would be an interesting challenge :)

I imagine the way to do it would be to do live builds using gmcs (like
VS2008sp1 does with csc) to get live error and warning information,
and whenever these live builds are successful, then pass them through

Another approach would be to implement some gendarme-like rules on top
of MD's existing live code DOM.

> If you can help me with understanding exactly what has to go into a
> addin and maybe a little about how the interfaces between different
> addins work I'm quite happy to write some documentation (or extend the
> existing documentation that currently shows the binding points) so
> other people can write addins more easily, it would also make my job
> finding out what to do a little less painful and more productive.

Unfortunately we don't have much in the way of docs on writing addins.
This will improve after 2.0. However, we are happy to answer any
questions people have.

You can find a few docs here: http://monodevelop.com/Developers

> If I can get something like ReSharper working in MonoDevelop then I
> switch a lot of my at work development over to it, so I can quite
> actively maintain it whilst I'm still employed at my company (I'm not
> planning on leaving anytime soon and I very much doubt they will ever
> want to get rid of me) and put a few hours a week into development and
> generally improving monodevelop.

What are the particular ReSharper features you'd like to see in MD?

Michael Hutchinson

More information about the Monodevelop-list mailing list