[MonoDevelop] making some progress with code analysis fetures.

Oliver Stieber oliver.stieber at ukplc.net
Tue Feb 17 11:29:50 EST 2009


> Extend the DOM in monodevelop so that it can be used to populate my
> code structure. (Is there any reason why your not using CodeDom with
> some enhancements?)

"The existing DOM is optimized for supporting Code Completion. CodeDom
would not be flexible enough for our needs."

Ok, the existing DOM is good for code completion but it's not rich
enough to do much analysis, I think I'll start by populating a small
subset DOM (which should be quite quick) I don't want anything that's
going to slow things down. I didn't think that CodeDom looked that great
but I did think that it gives you a complete DOM that can be built on
top of to have faster structures for things like code completion and
analysis.



-----Original Message-----
From: Lluis Sanchez Gual [mailto:lluis at novell.com] 
Sent: 17 February 2009 16:05
To: Oliver Stieber
Cc: monodevelop-list at lists.ximian.com
Subject: Re: [MonoDevelop] making some progress with code analysis
fetures.

El dt 17 de 02 de 2009 a les 11:22 +0000, en/na Oliver Stieber va
escriure:
> Hi,
> 
>             I've made some progress with doing near dynamic code
> analysis a.k.a. resharper. I've worked out how the plugin system hangs
> together (It would be really usefull if the ExtensionPoint told you
> which interface / class you had to implement so that it would be easy
> to write something to parse all the ExtensionPoints and tell you what
> you need to know).

The required type is usually documented in the extension point, although
not always. There is also an attribute which can be used for specifying
the type name, but that's not used right now.

> 
>  
> 
> There are a few things I've noticed about MonoDevelop SVN that I would
> like to fix so that I can develop using MonoDevelop.
> 
>  
> 
> 1: For some reason not all the members of a compiled assembly are
> getting parsed (and sometimes they don't even show in the class
> browser). This stops code completion from working properly which is
> really annoying especially as I only know my way around MonoDevelop a
> little.
>  
> 
> 2: MonoDevelop changes the projects and make files for MonoDevelop
> when you load them in a solution, removes the toolset to use and
> changes the location of the version number (3.5) in the csproj, in one
> of the projects it adds dependency,dependency when it should only be
> dependency, this causes the make file to choak.

As discussed in IRC, you should not add projects belonging to one
solution to another solution. Projects can only belong to one solution
and depend on it in different ways (for example, build configurations
are defined at solution level). Just open MonoDevelop.mdw or
main/Main.sln.

> 
> It doesn't load up referenced projects when you add the project to the
> solution and then removes the references from the make and csproj
> files, is there some reason for this? if not I'll fix it.
>  
> 
> Has anyone got any objections to fixing these or some pointers in the
> right direction, I know my way around monodevelop a little now so it
> shouldn't take me too long.
> 
>  
> 
>  
> 
> My plan for dynamic code analysis is.
> 
>  
> 
> Create some base structures for doing common analysis tasks so I know
> what I'm aiming for (Done, but not mapped from the dom yet)
> 
> Write a simple plugin to put in a using statement by searching for the
> class name in the references and project. This is just something to
> show and something so I get used to writing plugins, it will also help
> with my development work too.

Nice, that should be easy to do with the existing Dom api.

> 
> Improve the c# parser so that it doesn't choak on the first error.
> 
> Extend the DOM in monodevelop so that it can be used to populate my
> code structure. (Is there any reason why your not using CodeDom with
> some enhancements?)

The existing DOM is optimized for supporting Code Completion. CodeDom
would not be flexible enough for our needs.

> 
> Populate the code structure and start to write a code analysis addin.
> including enhancements to the source editor etc....
> 
> Look at making the parser, the editor and the dom work in a
> incremental way to improve the speed of things (if there are lots of
> rules I can see reloading all the structures to process them taking
> quite a bit of time if were doing the whole lot every time. Making
> everything incremental will give us a huge speed boost.)
> 
> Add more code analysis features / look at merging some the the rules
> from the assembly analysis tools out there.
> 
>  
> 
>  
> 
> anyone else think of anything else I should be doing?

Looks like you'll be quite busy with your current work queue ;)

Lluis.





More information about the Monodevelop-list mailing list