diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2010-05-25 03:05:15 +0400 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2010-05-25 03:05:15 +0400 |
commit | 82f73ade2ec5d39e7cc3e2e94a3f04ff7bdfcf11 (patch) | |
tree | 8a7f516cfd0cfc1bb797ce8f8f14de830a3fc6a2 | |
parent | f6d237146a3ef020896f52a43e586bb7c3dc52c5 (diff) |
2010-05-24 Sebastien Pouliot <sebastien@ximian.com>
* SuppressMessageEngine.cs: Add partial support for Target= where
FxCop use a different syntax from Cecil
svn path=/trunk/mono-tools/; revision=157811
-rw-r--r-- | gendarme/framework/Gendarme.Framework.Engines/ChangeLog | 5 | ||||
-rw-r--r-- | gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs | 25 |
2 files changed, 26 insertions, 4 deletions
diff --git a/gendarme/framework/Gendarme.Framework.Engines/ChangeLog b/gendarme/framework/Gendarme.Framework.Engines/ChangeLog index f6beb257..2b3e7b0b 100644 --- a/gendarme/framework/Gendarme.Framework.Engines/ChangeLog +++ b/gendarme/framework/Gendarme.Framework.Engines/ChangeLog @@ -1,3 +1,8 @@ +2010-05-24 Sebastien Pouliot <sebastien@ximian.com> + + * SuppressMessageEngine.cs: Add partial support for Target= where + FxCop use a different syntax from Cecil + 2010-05-23 Sebastien Pouliot <sebastien@ximian.com> * SuppressMessageEngine.cs: New. Engine to read [SuppressMessage] diff --git a/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs b/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs index 6d70baae..39006c17 100644 --- a/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs +++ b/gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs @@ -117,6 +117,11 @@ namespace Gendarme.Framework.Engines { if (targets == null) targets = new Dictionary<string,HashSet<string>> (); + // inner types syntax fix + target = target.Replace ('+', '/'); + // method/member syntax fix + target = target.Replace (".#", "::"); + if (!targets.TryGetValue (target, out list)) { list = new HashSet<string> (); targets.Add (target, list); @@ -138,16 +143,28 @@ namespace Gendarme.Framework.Engines { foreach (ModuleDefinition module in assembly.Modules) { // TODO ... foreach (TypeDefinition type in module.Types) { - if (targets.TryGetValue (type.FullName, out rules)) { + if (targets.TryGetValue (type.FullName, out rules)) Add (type, rules); - break; - } - // TODO ... + foreach (MethodDefinition ctor in type.Constructors) + ResolveMethod (ctor, targets); + foreach (MethodDefinition method in type.Methods) + ResolveMethod (method, targets); } } } } + private void ResolveMethod (MethodDefinition method, Dictionary<string, HashSet<string>> targets) + { + HashSet<string> rules; + + string m = method.ToString (); + m = m.Substring (m.IndexOf (' ') + 1); + + if (targets.TryGetValue (m, out rules)) + Add (method, rules); + } + private void Add (IMetadataTokenProvider metadata, HashSet<string> rules) { foreach (string rule in rules) { |