https://bugzilla.novell.com/show_bug.cgi?id=676722
https://bugzilla.novell.com/show_bug.cgi?id=676722#c0 Summary: New Rule - Validate (non Flag) Enum parameters before using Classification: Mono Product: Mono: Tools Version: 2.10.x Platform: All OS/Version: All Status: NEW Severity: Enhancement Priority: P5 - None Component: Gendarme AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.1 Safari/534.23 Enums can break type safety without too much trouble, since they're basically implemented as const ints. For instance, consider the code below where enum Test is passed as a parameter. The compiler allows the value 3, which is not defined in the enum, to be passed to a method. Consider a situation where this value was written to a database or similar. Enums decorated with [Flags] should be ignored. Performing a switch (value) { case Test.One: break; case Test.Two: break; default: throw ... ; } would be sufficient to not cause a violation. Calling Enum.IsDefined and throwing would also not cause a violation. Consider the quick code snippet below: using System; using System.Collections.Generic; public class MyClass { public enum Test { One = 1, Two = 2 } public static void UseEnum(Test test) { //consider doing something dangerous with the enum Console.WriteLine("Enum is defined? {0}", Enum.IsDefined(typeof(Test), test)); } public static void Main() { try { UseEnum((Test)3); } finally { Console.Write("Press any key to continue..."); Console.ReadKey(); } } } Reproducible: Always Steps to Reproduce: 1. 2. 3. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
