Example #1
0
		protected Rule(AssemblyCache cache, IReportViolations reporter, string checkID)
		{
			DBC.Pre(cache != null, "cache is null");
			DBC.Pre(reporter != null, "reporter is null");
			DBC.Pre(!string.IsNullOrEmpty(checkID), "checkID is null or empty");

			Cache = cache;
			Reporter = reporter;
			CheckID = checkID;
			Runtime = TargetRuntime.NET_1_0;
		}
Example #2
0
        protected Rule(AssemblyCache cache, IReportViolations reporter, string checkID)
        {
            DBC.Pre(cache != null, "cache is null");
            DBC.Pre(reporter != null, "reporter is null");
            DBC.Pre(!string.IsNullOrEmpty(checkID), "checkID is null or empty");

            Cache    = cache;
            Reporter = reporter;
            CheckID  = checkID;
            Runtime  = TargetRuntime.NET_1_0;
        }
Example #3
0
		public UseFlagsAttributeRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "D1019")
		{
			long mask = 1;
			for (int i = 0; i < 63; ++i)
			{
				m_powers.Add(mask);
				mask = mask << 1;
			}
			m_powers.Add(mask);
		}
Example #4
0
        public UseFlagsAttributeRule(AssemblyCache cache, IReportViolations reporter)
            : base(cache, reporter, "D1019")
        {
            long mask = 1;

            for (int i = 0; i < 63; ++i)
            {
                m_powers.Add(mask);
                mask = mask << 1;
            }
            m_powers.Add(mask);
        }
Example #5
0
		public NonLocalizedGuiRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "G1002")
		{
			m_enabled = Settings.Get("*localized*", "true") == "true";
			Log.TraceLine(this, "enabled: {0}", m_enabled);
			
			string custom = Settings.Get("localize", string.Empty);
			foreach (string name in custom.Split(';'))
			{
				Log.TraceLine(this, "using custom: {0}", name);
				m_custom.Add(" " + name + "(");		// add some goo so we match only what we should
			}
		}
Example #6
0
        public NonLocalizedGuiRule(AssemblyCache cache, IReportViolations reporter)
            : base(cache, reporter, "G1002")
        {
            m_enabled = Settings.Get("*localized*", "true") == "true";
            Log.TraceLine(this, "enabled: {0}", m_enabled);

            string custom = Settings.Get("localize", string.Empty);

            foreach (string name in custom.Split(';'))
            {
                Log.TraceLine(this, "using custom: {0}", name);
                m_custom.Add(" " + name + "(");                         // add some goo so we match only what we should
            }
        }
 public OperatorAlternativeRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1033")
 {
     m_table.Add("op_Addition", "Add");
     m_table.Add("op_Subtraction", "Subtract");
     m_table.Add("op_Multiply", "Multiply");
     m_table.Add("op_Division", "Divide");
     m_table.Add("op_Modulus", "Mod");
     m_table.Add("op_GreaterThan", "Compare");
     m_table.Add("op_GreaterThanOrEqual", "Compare");
     m_table.Add("op_LessThan", "Compare");
     m_table.Add("op_LessThanOrEqual", "Compare");
     m_table.Add("op_Inequality", "Equals");
     m_table.Add("op_Equality", "Equals");
 }
		public OperatorAlternativeRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "D1033")
		{
			m_table.Add("op_Addition", "Add");
			m_table.Add("op_Subtraction", "Subtract");
			m_table.Add("op_Multiply", "Multiply");
			m_table.Add("op_Division", "Divide");
			m_table.Add("op_Modulus", "Mod");
			m_table.Add("op_GreaterThan", "Compare");
			m_table.Add("op_GreaterThanOrEqual", "Compare");
			m_table.Add("op_LessThan", "Compare");
			m_table.Add("op_LessThanOrEqual", "Compare");
			m_table.Add("op_Inequality", "Equals");
			m_table.Add("op_Equality", "Equals");
		}
Example #9
0
		public SpecialFolderRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "PO1003")
		{
			string user = Environment.UserName;
			
			Array values = Enum.GetValues(typeof(Environment.SpecialFolder));			
			foreach (object o in values)
			{
				Environment.SpecialFolder name = (Environment.SpecialFolder) o;
				string path = Environment.GetFolderPath(name);
				if (path.Length > 0)
				{
					path = path.Replace(user, "*");
					if (!m_globs.ContainsKey(name))
						m_globs.Add(name, path.Split(Path.DirectorySeparatorChar));
				}
			}
		}
Example #10
0
        public SpecialFolderRule(AssemblyCache cache, IReportViolations reporter)
            : base(cache, reporter, "PO1003")
        {
            string user = Environment.UserName;

            Array values = Enum.GetValues(typeof(Environment.SpecialFolder));

            foreach (object o in values)
            {
                Environment.SpecialFolder name = (Environment.SpecialFolder)o;
                string path = Environment.GetFolderPath(name);
                if (path.Length > 0)
                {
                    path = path.Replace(user, "*");
                    if (!m_globs.ContainsKey(name))
                    {
                        m_globs.Add(name, path.Split(Path.DirectorySeparatorChar));
                    }
                }
            }
        }
Example #11
0
		public NoStaticRemoveRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "C1026")
		{
			// Collections.Generic
			m_adders.Add  ("System.Collections.Generic.Dictionary`", new List<string>{"Add", "set_Item"});
			m_removers.Add("System.Collections.Generic.Dictionary`", new List<string>{"Clear", "Remove"});
			
			m_adders.Add  ("System.Collections.Generic.HashSet`", new List<string>{"Add", "UnionWith"});
			m_removers.Add("System.Collections.Generic.HashSet`", new List<string>{"Clear", "ExceptWith", "IntersectWith", "Remove", "RemoveWhere", "SymmetricExceptWith"});
			
			m_adders.Add  ("System.Collections.Generic.List`", new List<string>{"Add", "AddRange", "Insert", "InsertRange"});
			m_removers.Add("System.Collections.Generic.List`", new List<string>{"Clear", "Remove", "RemoveAll", "RemoveAt", "RemoveRange"});
			
			m_adders.Add  ("System.Collections.Generic.Queue`", new List<string>{"Enqueue"});
			m_removers.Add("System.Collections.Generic.Queue`", new List<string>{"Clear", "Dequeue"});
			
			m_adders.Add  ("System.Collections.Generic.SortedDictionary`", new List<string>{"Add", "set_Item"});
			m_removers.Add("System.Collections.Generic.SortedDictionary`", new List<string>{"Clear", "Remove"});
			
			m_adders.Add  ("System.Collections.Generic.Stack`", new List<string>{"Push"});
			m_removers.Add("System.Collections.Generic.Stack`", new List<string>{"Clear", "Pop"});
			
			// Collections
			m_adders.Add  ("System.Collections.ArrayList", new List<string>{"Add", "AddRange", "Insert", "InsertRange"});
			m_removers.Add("System.Collections.ArrayList", new List<string>{"Clear", "Remove", "RemoveAt", "RemoveRange"});
			
			m_adders.Add  ("System.Collections.Hashtable", new List<string>{"Add", "set_Item"});
			m_removers.Add("System.Collections.Hashtable", new List<string>{"Clear", "Remove"});
			
			m_adders.Add  ("System.Collections.Queue", new List<string>{"Enqueue"});
			m_removers.Add("System.Collections.Queue", new List<string>{"Clear", "Dequeue"});
			
			m_adders.Add  ("System.Collections.SortedList", new List<string>{"Add", "set_Item"});
			m_removers.Add("System.Collections.SortedList", new List<string>{"Clear", "Remove", "RemoveAt"});
			
		}
Example #12
0
		// The checkID must match the id in the xml. Note that multiple classes can
		// share the same checkID.
		public PrivateNeedsDoRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "CU1000 - example custom rules")
		{
		}
Example #13
0
        public NoStaticRemoveRule(AssemblyCache cache, IReportViolations reporter)
            : base(cache, reporter, "C1026")
        {
            // Collections.Generic
            m_adders.Add("System.Collections.Generic.Dictionary`", new List <string> {
                "Add", "set_Item"
            });
            m_removers.Add("System.Collections.Generic.Dictionary`", new List <string> {
                "Clear", "Remove"
            });

            m_adders.Add("System.Collections.Generic.HashSet`", new List <string> {
                "Add", "UnionWith"
            });
            m_removers.Add("System.Collections.Generic.HashSet`", new List <string> {
                "Clear", "ExceptWith", "IntersectWith", "Remove", "RemoveWhere", "SymmetricExceptWith"
            });

            m_adders.Add("System.Collections.Generic.List`", new List <string> {
                "Add", "AddRange", "Insert", "InsertRange"
            });
            m_removers.Add("System.Collections.Generic.List`", new List <string> {
                "Clear", "Remove", "RemoveAll", "RemoveAt", "RemoveRange"
            });

            m_adders.Add("System.Collections.Generic.Queue`", new List <string> {
                "Enqueue"
            });
            m_removers.Add("System.Collections.Generic.Queue`", new List <string> {
                "Clear", "Dequeue"
            });

            m_adders.Add("System.Collections.Generic.SortedDictionary`", new List <string> {
                "Add", "set_Item"
            });
            m_removers.Add("System.Collections.Generic.SortedDictionary`", new List <string> {
                "Clear", "Remove"
            });

            m_adders.Add("System.Collections.Generic.Stack`", new List <string> {
                "Push"
            });
            m_removers.Add("System.Collections.Generic.Stack`", new List <string> {
                "Clear", "Pop"
            });

            // Collections
            m_adders.Add("System.Collections.ArrayList", new List <string> {
                "Add", "AddRange", "Insert", "InsertRange"
            });
            m_removers.Add("System.Collections.ArrayList", new List <string> {
                "Clear", "Remove", "RemoveAt", "RemoveRange"
            });

            m_adders.Add("System.Collections.Hashtable", new List <string> {
                "Add", "set_Item"
            });
            m_removers.Add("System.Collections.Hashtable", new List <string> {
                "Clear", "Remove"
            });

            m_adders.Add("System.Collections.Queue", new List <string> {
                "Enqueue"
            });
            m_removers.Add("System.Collections.Queue", new List <string> {
                "Clear", "Dequeue"
            });

            m_adders.Add("System.Collections.SortedList", new List <string> {
                "Add", "set_Item"
            });
            m_removers.Add("System.Collections.SortedList", new List <string> {
                "Clear", "Remove", "RemoveAt"
            });
        }
Example #14
0
 protected abstract Rule OnCreate(AssemblyCache cache, IReportViolations reporter);
Example #15
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new CollectionToStringRule(cache, reporter));
 }
Example #16
0
 public TemplateMethodRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1043")
 {
 }
Example #17
0
 public BadExitRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1039")
 {
 }
Example #18
0
 public UnusedMethodRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1032")
 {
 }
Example #19
0
 public FinalizeableRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1066")
 {
 }
Example #20
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new NativeMethodsRule(cache, reporter));
 }
Example #21
0
		public NullFieldRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "C1017")
		{
		}
Example #22
0
 public CastOpAlternativeRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1034")
 {
 }
Example #23
0
		public StringSpellingRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "C1000")
		{
		}
Example #24
0
		public ThrowDerivedRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "MS1012")
		{
		}
		public SynchronizedAttributeRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "MS1015")
		{
		}
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new OperatorAlternativeRule(cache, reporter));
 }
Example #27
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new EventHandlerRule(cache, reporter);
 }
Example #28
0
		public DestroyStackTraceRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "MS1003")
		{
		}
Example #29
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new ObjectDisposedExceptionRule(cache, reporter));
 }
Example #30
0
		public BaseSerializable1Rule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "R1017")
		{
		}
Example #31
0
		// This is inspired by the Gendarme rule authored by Lukasz Knop
		// although the code is completely different.
		public CompareFloatsRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "R1009")
		{
		}
Example #32
0
 public PropertyReturnsCollectionRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "P1022")
 {
 }
Example #33
0
 public RandomUsedOnceRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "R1021")
 {
 }
Example #34
0
		[DisableRule("C1000", "StringSpelling")]	// ignore the weird hungarian strings
		public HungarianRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "MS1030")
		{
		}
Example #35
0
 public PreferredTermRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "MS1027")
 {
 }
Example #36
0
 public DerivedDisposeableRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "D1064")
 {
 }
Example #37
0
 public InvalidEnumFlagsRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "C1034")
 {
 }
Example #38
0
		public DllImportExtensionRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "PO1002")
		{
		}
Example #39
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new BoolMarshalingRule(cache, reporter));
 }
Example #40
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new PublicAbstractCtorRule(cache, reporter);
 }
Example #41
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new ThreadNameRule(cache, reporter));
 }
		public MalformedFormatStringRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "C1002")
		{
		}
Example #43
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new EqualsRequiresNullCheckRule(cache, reporter));
 }
Example #44
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new NetNamingRule(cache, reporter);
 }
Example #45
0
 public TempDirRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "PO1004")
 {
 }
Example #46
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new PreferMonitor1Rule(cache, reporter);
 }
Example #47
0
 public AvoidIsAliveRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "R1026")
 {
 }
Example #48
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new BaseDisposeableRule(cache, reporter);
 }
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new SealedInheritanceDemandRule(cache, reporter);
 }
 public AssemblyAttributeSpellingRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "C1020")
 {
 }
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new OptionalSerializationRule(cache, reporter);
 }
Example #52
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new ImplementGenericCollectionRule(cache, reporter));
 }
Example #53
0
		public TooManyArgsRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "D1047")
		{
		}
Example #54
0
		public AvoidUnboxingRule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "P1004")
		{
		}
Example #55
0
 protected abstract Rule OnCreate(AssemblyCache cache, IReportViolations reporter);
Example #56
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new GodClassRule(cache, reporter, 5);
 }
Example #57
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return new IntegerOverflowRule(cache, reporter);
 }
Example #58
0
		public RecursiveLock2Rule(AssemblyCache cache, IReportViolations reporter) 
			: base(cache, reporter, "R1038")
		{
		}
Example #59
0
 protected override Rule OnCreate(AssemblyCache cache, IReportViolations reporter)
 {
     return(new TypedEnumeratorRule(cache, reporter));
 }
Example #60
0
 public StringCompareRule(AssemblyCache cache, IReportViolations reporter)
     : base(cache, reporter, "P1015")
 {
 }