* Makefile.am:
[monodevelop.git] / extras / MonoDevelop.CodeAnalysis / MonoDevelop.CodeAnalysis.Gendarme / GendarmeRunner.cs
blob835eab2dad08c714c20687e7377702002f21a361
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
5 using CA = MonoDevelop.CodeAnalysis;
6 using GF = Gendarme.Framework;
7 using Mono.Cecil;
9 namespace MonoDevelop.CodeAnalysis.Gendarme {
11 public class GendarmeRunner : GF.Runner, CA.IRunner {
13 public string Id {
14 get { return "GendarmeRunner"; }
17 public string Name {
18 get { return "Gendarme"; }
21 public GendarmeRunner ()
23 base.IgnoreList = new GF.BasicIgnoreList (this);
26 public IEnumerable<IViolation> Run (string inspectedFile, IEnumerable<CA.IRule> ruleSet)
28 if (!File.Exists (inspectedFile))
29 throw new ArgumentException (AddinCatalog.GetString ("File does not exist: '{0}'.", inspectedFile),
30 "inspectedFile");
32 // assemblies
33 base.Assemblies.Clear ();
34 AssemblyDefinition ad = AssemblyFactory.GetAssembly (inspectedFile);
35 base.Assemblies.Add (ad);
37 // rules
38 base.Rules.Clear ();
39 foreach (CA.IRule rule in ruleSet)
40 base.Rules.Add (((GendarmeRule) rule).InternalRule);
42 // defects
43 base.Reset ();
45 base.Initialize ();
46 base.Run ();
48 foreach (GF.Defect def in base.Defects)
49 yield return new GendarmeViolation (def);