Planned
[stuff here should be assigned to someone]
Milestone M4 - Mono:: 2.2 release (started)
- Next version of the framework [all]
- [done] Rule TearDown [spouliot]
- [in-progress] Shared Engines [spouliot]
- [in-progress] Support for System.Diagnostics.CodeAnalysis.SuppressMessage
https://bugzilla.novell.com/show_bug.cgi?id=340931
- [in progress] NAnt task [nestor]
- Integrate into Mono build farm and publish the results (just like the API status pages)
Milestone M5 - Mono:: 2.4 release (in planning)
- Moonlight/Silverlight platform/application code rules [spouliot]
Unplanned, untasked & unsorted
[feel free to add your ideas here]
Runner-related
- New GUI-based runners, like
- standalone (Gtk#, Cocoa#...)
- Also can be interesting think about a plugin for Visual Studio
- see GSoC work by Ed Ropple
- Add SourceText support.
- Gendarme now report files and line numbers, if debugging information is available (for both Mono and MS.NET). However the debugging information isn't precise enough for most of the example cited here.
- The Console Runner should
display the coresspondening source lines to a message. There are 3
types of message need to be take care of. IMHO an example output should
look like
- Method and Instruction based messages.
Source Text (regarding UseStringEmptyRule)
File: C:\Development\mono\gendarme\console\ConsoleRunner.cs
005 public void Foo () {
006 Console.WriteLine ("");
-------------------------^^
007 }
That's pretty easy, Instruction has a ServicePoint which
points to a Start/End-Line/Column.
- Member based messages.
Source Text
File: C:\Development\mono\gendarme\console\ConsoleRunner.cs
007 /// </summary>
008 public void Foo (out bar) {
---------------------^^^
009 bar = null
010 }
I've yet to find a way to get a ServicePoint out of a Method-
declaration so that's pretty hard to display. A solution might
be taking the first instruction of a method, but what offset shall
we calculate? 1 line above the instruction?
- Type/Module or Assembly based message
Source Text
File: C:\Development\mono\gendarme\console\ConsoleRunner.cs
007 /// </summary>
008 public class Foo {
009
010
What to display if a type/module or assembly rule is hit and no member is specified?
The class header? How to identify it (Cecil has no TypeDefinition::ServicePoint
property).
References:
Framework-related
- Change localization support (from XML). I8N: References
- Statistics
Rules
- more rules! So many they got their own page ;-)
- some rules could start to work on "the set of assemblies" being analyzed instead of the current one
- add some/more "default" profiles (collection of rules) to [nestor]
- default: where most rules applies (e.g. new or existing application/library code);
- Mono BCL: better serve Mono, where the assemblies public API is out of our control
- Moonlight platform: again, public API out of our control but also include specific rules wrt the CoreCLR security model
- Moonlight applications: add some specific rules (not applicable to default) and remove inapplicable rules
Others
- Gendarme Integration with other applications, perhaps we could achieve more users if we can perform some integration tasks as examples:
- Msbuild / Xbuild a candidate, as NAnt one.
- Perhaps integrate with CruiseControl.NET?