Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2010-05-25 03:05:15 +0400
committerSebastien Pouliot <sebastien@ximian.com>2010-05-25 03:05:15 +0400
commit82f73ade2ec5d39e7cc3e2e94a3f04ff7bdfcf11 (patch)
tree8a7f516cfd0cfc1bb797ce8f8f14de830a3fc6a2
parentf6d237146a3ef020896f52a43e586bb7c3dc52c5 (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/ChangeLog5
-rw-r--r--gendarme/framework/Gendarme.Framework.Engines/SuppressMessageEngine.cs25
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) {