C# Scan rules
Contrast Scan supports these rules for C#.
Severity | Contrast rule | Engine rule ID | Description |
---|---|---|---|
Critical | Too Much Origins Allowed | OPT.CSHARP.TooMuchOriginsAllowed | TooMuchOriginsAllowed: CORS policy (Cross-origin resource sharing) too broad |
Critical | Avoid Exception Throwing In Binary Operators | OPT.CSHARP.Csharp.AvoidExceptionThrowingInBinaryOperators | AvoidExceptionThrowingInBinaryOperators: The override of the Equality binary operator should not throw an exception |
Critical | Avoid Exception Throwing In Dispose Method | OPT.CSHARP.Csharp.AvoidExceptionThrowingInDisposeMethod | AvoidExceptionThrowingInDisposeMethod: The Dispose method shoud not throw exceptions |
Critical | Avoid Exception Throwing In Equals Clause | OPT.CSHARP.Csharp.AvoidExceptionThrowingInEqualsClause | AvoidExceptionThrowingInEqualsClause: The override of Equals method should not thrown an exception |
Critical | Avoid Exception Throwing In Get Hash Code | OPT.CSHARP.Csharp.AvoidExceptionThrowingInGetHashCode | AvoidExceptionThrowingInGetHashCode: The override of the GetHashCode method should not throw an exception |
Critical | Dispose Objects Before Losing Scope | OPT.CSHARP.Csharp.DisposeObjectsBeforeLosingScope | DisposeObjectsBeforeLosingScope: Dispose objects before losing scope |
Critical | Do Not Dispose Objects Multiple Times | OPT.CSHARP.Csharp.DoNotDisposeObjectsMultipleTimes | DoNotDisposeObjectsMultipleTimes: Possible multiple calls to Dispose over an object |
Critical | Do Not Use Idle Process Priority | OPT.CSHARP.Csharp.DoNotUseIdleProcessPriority | DoNotUseIdleProcessPriority: Do not use idle process priority |
Critical | Mark I Serializable Types With Serializable | OPT.CSHARP.Csharp.MarkISerializableTypesWithSerializable | MarkISerializableTypesWithSerializable: Specify the Serializable attribute in ISerializable classes |
Critical | Mark Windows Forms Entry Points With Sta Thread | OPT.CSHARP.Csharp.MarkWindowsFormsEntryPointsWithStaThread | MarkWindowsFormsEntryPointsWithStaThread: Mark Windows Forms entry points with STAThread |
Critical | Overriding Equal And Distinct Operators | OPT.CSHARP.Csharp.OverridingEqualAndDistinctOperators | OverridingEqualAndDistinctOperators: Any type that overloads operator Code Quality [] {} |
Critical | Overriding Equals And Get Hash Code | OPT.CSHARP.Csharp.OverridingEqualsAndGetHashCode | OverridingEqualsAndGetHashCode: Any type that overrides GetHashCode method should also override Equals method |
Critical | Null Dereference | OPT.CSHARP.NullDereference | NullDereference: NULL Pointer Dereference |
Critical | Path Traversal | OPT.CSHARP.PathTraversal | PathTraversal: Avoid non-neutralized user-controlled input composed in a pathname to a resource |
Critical | Reference Self Assigned | OPT.CSHARP.ReferenceSelfAssigned | ReferenceSelfAssigned: Reference is self assigned in assignment statement |
Critical | Same Conditional In If Else If | OPT.CSHARP.SameConditionalInIfElseIf | SameConditionalInIfElseIf: Duplicated condition in if-else if statements |
Critical | Same Implementation In Conditional | OPT.CSHARP.SameImplementationInConditional | SameImplementationInConditional: Same implementation for different branches in a conditional statement |
Critical | Same Subexpression In Logical Expression | OPT.CSHARP.SameSubexpressionInLogicalExpression | SameSubexpressionInLogicalExpression: Duplicated subexpression in logical expression |
Critical | Accessibility Subversion Rule | OPT.CSHARP.SEC.AccessibilitySubversionRule | AccessibilitySubversionRule: .Net access restriction subverted (Reflection) |
Critical | Anonymous Ldap Bind | OPT.CSHARP.SEC.AnonymousLdapBind | AnonymousLdapBind: Access Control - Anonymous LDAP Bind |
Critical | Dangerous File Upload | OPT.CSHARP.SEC.DangerousFileUpload | DangerousFileUpload: Unrestricted Upload of File with Dangerous Type |
Critical | Code Injection | OPT.CSHARP.CodeInjection | CodeInjection: Improper Control of Generation of Code ('Code Injection') |
Critical | Code Injection With Deserialization | OPT.CSHARP.CodeInjectionWithDeserialization | CodeInjectionWithDeserialization: Dynamic code injection during object deserialization |
Critical | Command Injection | OPT.CSHARP.CommandInjection | CommandInjection: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') |
Critical | Static Database Connection | OPT.CSHARP.SEC.StaticDatabaseConnection | StaticDatabaseConnection: Static database connection / session |
Critical | Temporary Files Left | OPT.CSHARP.SEC.TemporaryFilesLeft | TemporaryFilesLeft: Temporary files not deleted |
Critical | Cross Site Scripting | OPT.CSHARP.CrossSiteScripting | CrossSiteScripting: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') |
Critical | DoS Regexp | OPT.CSHARP.DoSRegexp | DoSRegexp: Prevent denial of service attack through malicious regular expression |
Critical | Ldap Injection | OPT.CSHARP.LdapInjection | LdapInjection: Avoid non-neutralized user-controlled input in LDAP search filters |
Critical | Connection String Parameter Pollution | OPT.CSHARP.SEC.ConnectionStringParameterPollution | ConnectionStringParameterPollution: Connection string polluted with untrusted input |
Critical | Http Parameter Pollution | OPT.CSHARP.SEC.HttpParameterPollution | HttpParameterPollution: HTTP parameter pollution (HPP) |
Critical | Http Splitting Rule | OPT.CSHARP.SEC.HttpSplittingRule | HttpSplittingRule: Improper neutralization of CR/LF Sequences in HTTP headers |
Critical | Mail Command Injection | OPT.CSHARP.SEC.MailCommandInjection | MailCommandInjection: Mail Command Injection |
Critical | No SQL Injection | OPT.CSHARP.SEC.NoSQLInjection | NoSQLInjection: Improper neutralization of special elements in data query logic (NoSQL injection) |
Critical | Wrong Lock Usage | OPT.CSHARP.WrongLockUsage | WrongLockUsage: Wrong lock acquisition/release |
Critical | Process Control | OPT.CSHARP.SEC.ProcessControl | ProcessControl: Do not load executables or libraries from untrusted sources |
Critical | Registry Manipulation | OPT.CSHARP.SEC.RegistryManipulation | RegistryManipulation: Registry manipulation |
Critical | Server Side Request Forgery | OPT.CSHARP.ServerSideRequestForgery | ServerSideRequestForgery: Server-Side Request Forgery (SSRF) |
Critical | SQL Injection | OPT.CSHARP.SqlInjection | SqlInjection: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') |
Critical | Stored Cross Site Scripting | OPT.CSHARP.StoredCrossSiteScripting | StoredCrossSiteScripting: Web content generation from improper sanitized database data and escaped output (Stored Cross-site Scripting, XSS) |
Critical | MVC Non Action Public Methods | OPT.CSHARP.MVCNonActionPublicMethods | MVCNonActionPublicMethods: Protect public methods that are not action methods in controllers |
Critical | Weak Cryptographic Hash | OPT.CSHARP.WeakCryptographicHash | WeakCryptographicHash: Weak cryptographic hash |
Critical | Weak Key Size | OPT.CSHARP.WeakKeySize | WeakKeySize: Weak cryptography, insufficient key length |
Critical | Weak Symmetric Encryption Algorithm | OPT.CSHARP.WeakSymmetricEncryptionAlgorithm | WeakSymmetricEncryptionAlgorithm: Weak symmetric encryption algorithm |
Critical | Weak Symmetric Encryption Mode Of Operation | OPT.CSHARP.WeakSymmetricEncryptionModeOfOperation | WeakSymmetricEncryptionModeOfOperation: Do not use weak modes of operation with symmetric encryption |
High | Plaintext Storage In A Cookie | OPT.CSHARP.PlaintextStorageInACookie | PlaintextStorageInACookie: Cleartext Storage of Sensitive Information in a Cookie |
High | Abstract Types Should Not Have Constructors | OPT.CSHARP.Csharp.AbstractTypesShouldNotHaveConstructors | AbstractTypesShouldNotHaveConstructors: Public abstract class with public constructor |
High | Avoid Com Parameterized Constructors | OPT.CSHARP.Csharp.AvoidComParameterizedConstructors | AvoidComParameterizedConstructors: COM does not support parameterized constructors |
High | Avoid Com Static Methods | OPT.CSHARP.Csharp.AvoidComStaticMethods | AvoidComStaticMethods: COM does not support static methods |
High | Avoid Empty Catch Block | OPT.CSHARP.Csharp.AvoidEmptyCatchBlock | AvoidEmptyCatchBlock: Avoid empty catch blocks |
High | Avoid Excessive Complexity | OPT.CSHARP.Csharp.AvoidExcessiveComplexity | AvoidExcessiveComplexity: A method has an excessive cyclomatic complexity |
High | Avoid Excessive Locals | OPT.CSHARP.Csharp.AvoidExcessiveLocals | AvoidExcessiveLocals: To avoid to declare excessive local variables |
High | Avoid Floating Point Equality | OPT.CSHARP.Csharp.AvoidFloatingPointEquality | AvoidFloatingPointEquality: Do not perform (in)equality operations over floating point variables |
High | Avoid Inconditional Recursive Invocation | OPT.CSHARP.Csharp.AvoidInconditionalRecursiveInvocation | AvoidInconditionalRecursiveInvocation: Avoid recursive calls without a precondition |
High | Avoid Out Parameters | OPT.CSHARP.Csharp.AvoidOutParameters | AvoidOutParameters: Public or protected methods must avoid ref/out parameters |
High | Avoid Overloads In Com Visible Interfaces | OPT.CSHARP.Csharp.AvoidOverloadsInComVisibleInterfaces | AvoidOverloadsInComVisibleInterfaces: COM visible interface declares overloaded methods |
High | Avoid Uncalled Private Code | OPT.CSHARP.Csharp.AvoidUncalledPrivateCode | AvoidUncalledPrivateCode: Avoid uncalled private code |
High | Avoid Unused Private Fields | OPT.CSHARP.Csharp.AvoidUnusedPrivateFields | AvoidUnusedPrivateFields: Avoid unused private fields |
High | Declare Event Handlers Correctly | OPT.CSHARP.Csharp.DeclareEventHandlersCorrectly | DeclareEventHandlersCorrectly: Declare Event Handlers Correctly |
High | Do Not Assume Int Ptr Size Rule | OPT.CSHARP.Csharp.DoNotAssumeIntPtrSizeRule | DoNotAssumeIntPtrSizeRule: Do not downcast IntPtr or UIntPtr into a 32-bit or smaller value |
High | Do Not Declare Static Members On Generic Types | OPT.CSHARP.Csharp.DoNotDeclareStaticMembersOnGenericTypes | DoNotDeclareStaticMembersOnGenericTypes: Do not declare static members on generic types |
High | Do Not Declare Visible Instance Fields | OPT.CSHARP.Csharp.DoNotDeclareVisibleInstanceFields | DoNotDeclareVisibleInstanceFields: Avoid externally visible instance fields |
High | Do Not Lock On This Or Types | OPT.CSHARP.Csharp.DoNotLockOnThisOrTypes | DoNotLockOnThisOrTypes: Do not lock on this, types, or string literals |
High | Do Not Pass Types By Reference | OPT.CSHARP.Csharp.DoNotPassTypesByReference | DoNotPassTypesByReference: Do not pass types by reference |
High | Exceptions Should Be Public | OPT.CSHARP.Csharp.ExceptionsShouldBePublic | ExceptionsShouldBePublic: Exceptions should be public |
High | I Comparable Overriding Methods | OPT.CSHARP.Csharp.IComparableOverridingMethods | IComparableOverridingMethods: Override methods on comparable types |
High | Identifiers Should Not Match Keywords | OPT.CSHARP.Csharp.IdentifiersShouldNotMatchKeywords | IdentifiersShouldNotMatchKeywords: The identifiers must not be reserved words |
High | Initialize Reference Type Static Fields Inline | OPT.CSHARP.Csharp.InitializeReferenceTypeStaticFieldsInline | InitializeReferenceTypeStaticFieldsInline: Initialize reference type static fields inline |
High | Mark Boolean P Invoke Arguments With Marshal As | OPT.CSHARP.Csharp.MarkBooleanPInvokeArgumentsWithMarshalAs | MarkBooleanPInvokeArgumentsWithMarshalAs: Mark boolean P/Invoke arguments with MarshalAs attribute |
High | Max Methods | OPT.CSHARP.Csharp.MaxMethods | MaxMethods: Maximum allowed number of methods |
High | Move P Invokes To Native Methods Class | OPT.CSHARP.Csharp.MovePInvokesToNativeMethodsClass | MovePInvokesToNativeMethodsClass: Move P/Invokes to NativeMethods class |
High | Nested Namespace Dependency | OPT.CSHARP.Csharp.NestedNamespaceDependency | NestedNamespaceDependency: Type dependency in nested namespace |
High | Non Constant Fields Should Not Be Visible | OPT.CSHARP.Csharp.NonConstantFieldsShouldNotBeVisible | NonConstantFieldsShouldNotBeVisible: A public or protected static field is not constant nor is it read-only |
High | Overloading Equals Value Types | OPT.CSHARP.Csharp.OverloadingEqualsValueTypes | OverloadingEqualsValueTypes: Overload Equals() method on value types |
High | Remove Unused Locals | OPT.CSHARP.Csharp.RemoveUnusedLocals | RemoveUnusedLocals: Unused local variable |
High | Review Useless Control Flow Rule | OPT.CSHARP.Csharp.ReviewUselessControlFlowRule | ReviewUselessControlFlowRule: Avoid empty code blocks |
High | Specify Attribute Usage | OPT.CSHARP.Csharp.SpecifyAttributeUsage | SpecifyAttributeUsage: Specify AttributeUsage on your attributes |
High | Suppress Finalize Correctly | OPT.CSHARP.Csharp.SuppressFinalizeCorrectly | SuppressFinalizeCorrectly: Call GC.SuppressFinalize correctly |
High | Variable Names Should Not Match Field Names | OPT.CSHARP.Csharp.VariableNamesShouldNotMatchFieldNames | VariableNamesShouldNotMatchFieldNames: Variable names should not match field names |
High | Hardcoded Absolute Path | OPT.CSHARP.HardcodedAbsolutePath | HardcodedAbsolutePath: Do not hardcode absolute paths |
High | Null Arg In Equals | OPT.CSHARP.NullArgInEquals | NullArgInEquals: Null argument to object.Equals() |
High | Resource Leak Database | OPT.CSHARP.ResourceLeakDatabase | ResourceLeakDatabase: Unreleased database resource |
High | Resource Leak Ldap | OPT.CSHARP.ResourceLeakLdap | ResourceLeakLdap: Unreleased LDAP resource |
High | Resource Leak Stream | OPT.CSHARP.ResourceLeakStream | ResourceLeakStream: Unreleased stream resource |
High | Resource Leak Unmanaged | OPT.CSHARP.ResourceLeakUnmanaged | ResourceLeakUnmanaged: Unreleased unmanaged resource |
High | Avoid Certificate Equals | OPT.CSHARP.SEC.AvoidCertificateEquals | AvoidCertificateEquals: Never use X509Certificate.Equals() in a security context |
High | Buffer Overflow | OPT.CSHARP.SEC.BufferOverflow | BufferOverflow: Potential memory corruption |
High | Cookies In Security Decision | OPT.CSHARP.SEC.CookiesInSecurityDecision | CookiesInSecurityDecision: Reliance on Cookies without Validation and Integrity Checking in a Security Decision |
High | Improper Authentication | OPT.CSHARP.SEC.ImproperAuthentication | ImproperAuthentication: Avoid that a user can perform actions to which he does not have access |
High | Missing Standard Error Handling | OPT.CSHARP.SEC.MissingStandardErrorHandling | MissingStandardErrorHandling: Missing Standardized Error Handling Mechanism in ASP.Net |
High | Cross Site Request Forgery | OPT.CSHARP.CrossSiteRequestForgery | CrossSiteRequestForgery: Cross-Site Request Forgery (CSRF) |
High | Setting Manipulation | OPT.CSHARP.SEC.SettingManipulation | SettingManipulation: Setting Manipulation |
High | JSON Injection | OPT.CSHARP.JSONInjection | JSONInjection: Avoid using non-neutralized user-controlled input in JSON entities |
High | Unvalidated Asp Net Model | OPT.CSHARP.SEC.UnvalidatedAspNetModel | UnvalidatedAspNetModel: Unvalidated model in MVC controller |
High | User Controlled SQL Primary Key | OPT.CSHARP.SEC.UserControlledSQLPrimaryKey | UserControlledSQLPrimaryKey: Avoid using an user controlled Primary Key into a query |
High | MVC Prevent Overposting Model Definition | OPT.CSHARP.MVCPreventOverpostingModelDefinition | MVCPreventOverpostingModelDefinition: Prevent over-posting attacks in model definition |
High | MVC Prevent Underposting Model Composition | OPT.CSHARP.MVCPreventUnderpostingModelComposition | MVCPreventUnderpostingModelComposition: Prevent under-posting attacks in model composition |
High | MVC Prevent Underposting Model Definition | OPT.CSHARP.MVCPreventUnderpostingModelDefinition | MVCPreventUnderpostingModelDefinition: Prevent under-posting attacks in model definition |
High | Open Redirect | OPT.CSHARP.OpenRedirect | OpenRedirect: URL Redirection to Untrusted Site ('Open Redirect') |
High | Test For Na N Correctly | OPT.CSHARP.TestForNaNCorrectly | TestForNaNCorrectly: Test for NaN correctly |
High | Cross Site History Manipulation | OPT.CSHARP.SEC.CrossSiteHistoryManipulation | CrossSiteHistoryManipulation: Cross-Site History Manipulation (XSHM) |
High | Transparent Methods Should Not Use Suppress Unmanaged Code Security | OPT.CSHARP.TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity | TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity: A transparent method should not have the attribute SuppressUnmanagedCodeSecurity |
High | Use Params For Variable Arguments | OPT.CSHARP.UseParamsForVariableArguments | UseParamsForVariableArguments: A public or protected type contains a public or protected method that uses the VarArgs calling convention |
High | Log Forging | OPT.CSHARP.SEC.LogForging | LogForging: Improper Output Neutralization for Logs |
High | Resource Injection | OPT.CSHARP.SEC.ResourceInjection | ResourceInjection: Improper control of resource identifiers ("Resource Injection") |
High | Trust Boundary Violation | OPT.CSHARP.SEC.TrustBoundaryViolation | TrustBoundaryViolation: Trust boundary violation |
High | Unsafe Reflection | OPT.CSHARP.SEC.UnsafeReflection | UnsafeReflection: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') |
High | XML Entity Injection | OPT.CSHARP.SEC.XMLEntityInjection | XMLEntityInjection: XML entity injection |
High | XML Injection | OPT.CSHARP.XMLInjection | XMLInjection: XML Injection (aka Blind XPath Injection) |
High | XPath Injection | OPT.CSHARP.XPathInjection | XPathInjection: Improper Neutralization of Data within XPath Expressions ('XPath Injection') |
High | XQuery Injection | OPT.CSHARP.XQueryInjection | XQueryInjection: Improper Neutralization of Data within XQuery Expressions ('XQuery Injection') |
High | XSLT Injection | OPT.CSHARP.XSLTInjection | XSLTInjection: Avoid using non-neutralized user-controlled input when creating XSL stylesheets |
High | Review Visible Event Handlers | OPT.CSHARP.Csharp.ReviewVisibleEventHandlers | ReviewVisibleEventHandlers: A public or protected event-handling method was detected |
High | Information Exposure Through Error Message | OPT.CSHARP.SEC.InformationExposureThroughErrorMessage | InformationExposureThroughErrorMessage: Avoid sensitive information exposure through error messages |
High | Insecure Email Transport | OPT.CSHARP.SEC.InsecureEmailTransport | InsecureEmailTransport: Insecure Mail Transport |
High | Insecure Randomness | OPT.CSHARP.InsecureRandomness | InsecureRandomness: Standard pseudo-random number generators cannot withstand cryptographic attacks |
High | Hardcoded Crypto Key | OPT.CSHARP.SEC.HardcodedCryptoKey | HardcodedCryptoKey: Use of Hard-coded Cryptographic Key |
High | Hardcoded Salt | OPT.CSHARP.SEC.HardcodedSalt | HardcodedSalt: A hardcoded salt can compromise system security |
High | Insecure Transport | OPT.CSHARP.SEC.InsecureTransport | InsecureTransport: Insecure transport |
High | Proper Padding With Public Key Crypto | OPT.CSHARP.SEC.ProperPaddingWithPublicKeyCrypto | ProperPaddingWithPublicKeyCrypto: Use of RSA Algorithm without Optimal Asymmetric Encryption Padding (OAEP) |
High | Server Insecure Transport | OPT.CSHARP.SEC.ServerInsecureTransport | ServerInsecureTransport: Insecure transport in HTTP servers] |
High | Weak Encryption | OPT.CSHARP.WeakEncryption | WeakEncryption: Insufficient RSA key length |
Info | Avoid Unneeded Calls On String | OPT.CSHARP.Csharp.AvoidUnneededCallsOnString | AvoidUnneededCallsOnString: Avoid unneeded calls on string objects |
Info | Identifiers Should Have Correct Suffix | OPT.CSHARP.Csharp.IdentifiersShouldHaveCorrectSuffix | IdentifiersShouldHaveCorrectSuffix: An identifier does not have the correct suffix |
Info | Identifiers Should Not Contain Underscores | OPT.CSHARP.Csharp.IdentifiersShouldNotContainUnderscores | IdentifiersShouldNotContainUnderscores: An identifier contains the underscore character |
Info | Identifiers Should Not Have Incorrect Suffix | OPT.CSHARP.Csharp.IdentifiersShouldNotHaveIncorrectSuffix | IdentifiersShouldNotHaveIncorrectSuffix: An identifier has an incorrect suffix |
Info | Normalize Strings To Uppercase | OPT.CSHARP.Csharp.NormalizeStringsToUppercase | NormalizeStringsToUppercase: Do not convert strings to lower-case |
Info | Parameter Names Should Not Match Member Names | OPT.CSHARP.Csharp.ParameterNamesShouldNotMatchMemberNames | ParameterNamesShouldNotMatchMemberNames: Parameter names should not match member names |
Info | Property Type | OPT.CSHARP.Csharp.PropertyType | PropertyType: A property must have a name similar to its type |
Info | Use Exception Constructor | OPT.CSHARP.Csharp.UseExceptionConstructor | UseExceptionConstructor: Illegal exception throw: Exceptions must be created in separate methods |
Info | Do Not Initialize Unnecessarily | OPT.CSHARP.DoNotInitializeUnnecessarily | DoNotInitializeUnnecessarily: Do not initialize variables unnecessarily |
Info | Use Literals Where Appropriate | OPT.CSHARP.UseLiteralsWhereAppropriate | UseLiteralsWhereAppropriate: Do not declare static and readonly fields, that are initialized with a value |
Low | Avoid Language Specific Type Names In Parameters | OPT.CSHARP.AvoidLanguageSpecificTypeNamesInParameters | AvoidLanguageSpecificTypeNamesInParameters: Avoid names of parameters that contains language-specific type name, in public methods |
Low | Avoid System Output Stream | OPT.CSHARP.AvoidSystemOutputStream | AvoidSystemOutputStream: Using Console.Out or Console.Error rather than a dedicated log interface, makes it more difficult to monitor the behavior of the software |
Low | Avoid Type Names In Parameters | OPT.CSHARP.AvoidTypeNamesInParameters | AvoidTypeNamesInParameters: Avoid names of parameters that contains type's names, in public methods |
Low | Avoid Unnecessary String Creation | OPT.CSHARP.AvoidUnnecessaryStringCreation | AvoidUnnecessaryStringCreation: Avoid create unnecessary strings through a call to System.String.ToLower or System.String.ToUpper |
Low | Collection Properties Should Be Read Only | OPT.CSHARP.CollectionPropertiesShouldBeReadOnly | CollectionPropertiesShouldBeReadOnly: Collection properties should be read-only |
Low | Consider Converting Method To Property | OPT.CSHARP.ConsiderConvertingMethodToProperty | ConsiderConvertingMethodToProperty: Consider converting getter/setter methods into properties |
Low | Attribute String Literals Should Parse Correctly | OPT.CSHARP.Csharp.AttributeStringLiteralsShouldParseCorrectly | AttributeStringLiteralsShouldParseCorrectly: Attribute's literal value should be correctly written |
Low | Avoid Exceptions In Implicit Transformation | OPT.CSHARP.Csharp.AvoidExceptionsInImplicitTransformation | AvoidExceptionsInImplicitTransformation: Avoid throwing exceptions in implicit operators |
Low | Avoid Long Methods | OPT.CSHARP.Csharp.AvoidLongMethods | AvoidLongMethods: Do not encode large methods |
Low | Avoid Long Parameter Lists | OPT.CSHARP.Csharp.AvoidLongParameterLists | AvoidLongParameterLists: Do not encode methods with too many parameters |
Low | Avoid Namespaces With Few Types | OPT.CSHARP.Csharp.AvoidNamespacesWithFewTypes | AvoidNamespacesWithFewTypes: Avoid namespaces with few types |
Low | Avoid Non Stored Procedure Commands | OPT.CSHARP.Csharp.AvoidNonStoredProcedureCommands | AvoidNonStoredProcedureCommands: Avoid using non stored-procedure database operations |
Low | Avoid Type Get Type For Constant Strings | OPT.CSHARP.Csharp.AvoidTypeGetTypeForConstantStrings | AvoidTypeGetTypeForConstantStrings: Do not call Type.GetType() with constant string values |
Low | Call Base Class Methods On I Serializable Types | OPT.CSHARP.Csharp.CallBaseClassMethodsOnISerializableTypes | CallBaseClassMethodsOnISerializableTypes: Call base class methods on ISerializable types |
Low | Check New Exception Without Throwing | OPT.CSHARP.Csharp.CheckNewExceptionWithoutThrowing | CheckNewExceptionWithoutThrowing: Exception instantiation not used |
Low | Consider Custom Accessors For Non Visible Events Rule | OPT.CSHARP.Csharp.ConsiderCustomAccessorsForNonVisibleEventsRule | ConsiderCustomAccessorsForNonVisibleEventsRule: For non visible events, evaluate using custom accessors instead of default ones |
Low | Delegates Passed To Native Code Must Include Exception Handling Rule | OPT.CSHARP.Csharp.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule | DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule: Enclose with a catch all handler entire block for delegates passed to native code |
Low | Do Not Cast Unnecessarily | OPT.CSHARP.Csharp.DoNotCastUnnecessarily | DoNotCastUnnecessarily: A method performs duplicate casts on one of its arguments or local variables |
Low | Do Not Destroy Stack Trace Rule | OPT.CSHARP.Csharp.DoNotDestroyStackTraceRule | DoNotDestroyStackTraceRule: Catch handlers should rethrow original exception instead of throwing the same exception |
Low | Do Not Hardcode Locale Specific Strings | OPT.CSHARP.Csharp.DoNotHardcodeLocaleSpecificStrings | DoNotHardcodeLocaleSpecificStrings: Do not hardcode locale specific strings |
Low | Do Not Indirectly Expose Methods With Link Demands | OPT.CSHARP.Csharp.DoNotIndirectlyExposeMethodsWithLinkDemands | DoNotIndirectlyExposeMethodsWithLinkDemands: Do not indirectly expose methods with link demands |
Low | Do Not Pass Literals As Localized Parameters | OPT.CSHARP.Csharp.DoNotPassLiteralsAsLocalizedParameters | DoNotPassLiteralsAsLocalizedParameters: String literal passed as parameter should be localizable |
Low | Do Not Raise Exceptions In Unexpected Locations | OPT.CSHARP.Csharp.DoNotRaiseExceptionsInUnexpectedLocations | DoNotRaiseExceptionsInUnexpectedLocations: Do not raise exceptions in unexpected locations |
Low | Do Not Use Thread Static With Instance Fields | OPT.CSHARP.Csharp.DoNotUseThreadStaticWithInstanceFields | DoNotUseThreadStaticWithInstanceFields: Do not use 'ThreadStatic' with instance fields |
Low | Overloading Equals Reference Types | OPT.CSHARP.Csharp.OverloadingEqualsReferenceTypes | OverloadingEqualsReferenceTypes: Do not overload equality operator on reference types |
Low | Override Equals On Value Types | OPT.CSHARP.Csharp.OverrideEqualsOnValueTypes | OverrideEqualsOnValueTypes: A public value type does not override Equals |
Low | Properties Should Not Return Arrays | OPT.CSHARP.Csharp.PropertiesShouldNotReturnArrays | PropertiesShouldNotReturnArrays: Properties should not return arrays |
Low | Property Names Should Not Match Get Methods | OPT.CSHARP.Csharp.PropertyNamesShouldNotMatchGetMethods | PropertyNamesShouldNotMatchGetMethods: Property names should not match get methods |
Low | Review Unused Parameters | OPT.CSHARP.Csharp.ReviewUnusedParameters | ReviewUnusedParameters: Method parameter not used |
Low | Specify Message Box Options | OPT.CSHARP.Csharp.SpecifyMessageBoxOptions | SpecifyMessageBoxOptions: Specify MessageBoxOptions |
Low | Test For Empty Strings Using Length | OPT.CSHARP.Csharp.TestForEmptyStringsUsingLength | TestForEmptyStringsUsingLength: Comparison with empty string using 'Equals' |
Low | Type Names Should Not Match Namespaces | OPT.CSHARP.Csharp.TypeNamesShouldNotMatchNamespaces | TypeNamesShouldNotMatchNamespaces: Type names should not match namespaces |
Low | Types That Own Native Resources Should Be Disposable | OPT.CSHARP.Csharp.TypesThatOwnNativeResourcesShouldBeDisposable | TypesThatOwnNativeResourcesShouldBeDisposable: Types that own native resources should be disposable |
Low | Use Constructors To Initialize Properties | OPT.CSHARP.Csharp.UseConstructorsToInitializeProperties | UseConstructorsToInitializeProperties: Initialize properties by using constructors |
Low | Use Constructors To Set Properties | OPT.CSHARP.Csharp.UseConstructorsToSetProperties | UseConstructorsToSetProperties: Set properties by using constructors with parameters |
Low | Write Static Field From Instance Method | OPT.CSHARP.Csharp.WriteStaticFieldFromInstanceMethod | WriteStaticFieldFromInstanceMethod: Do not write in static fields from instance methods |
Low | Disposable Types Should Declare Finalizer | OPT.CSHARP.DisposableTypesShouldDeclareFinalizer | DisposableTypesShouldDeclareFinalizer: A type that implements System.IDisposable and has fields of unmanaged types, should have a finalizer |
Low | Do Not Assign Params Not Out Or Ref | OPT.CSHARP.DoNotAssignParamsNotOutOrRef | DoNotAssignParamsNotOutOrRef: Do not assign method parameters which are not marked as 'out' or 'ref' |
Low | Do Not Concatenate Strings Inside Loops | OPT.CSHARP.DoNotConcatenateStringsInsideLoops | DoNotConcatenateStringsInsideLoops: Do not concatenate string values inside loops |
Low | Do Not Mark Enums With Flags | OPT.CSHARP.DoNotMarkEnumsWithFlags | DoNotMarkEnumsWithFlags: The values of an enumeration that has System.FlagsAttribute attribute, should be powers of two |
Low | Do Not Prefix Enum Values With Type Name | OPT.CSHARP.DoNotPrefixEnumValuesWithTypeName | DoNotPrefixEnumValuesWithTypeName: Names of enumeration's members should not start with the enumeration's name |
Low | Identifiers Should Be Cased Correctly | OPT.CSHARP.IdentifiersShouldBeCasedCorrectly | IdentifiersShouldBeCasedCorrectly: Use correctly "pascal-case" and "camel-case" according to the agreement established |
Low | Implement Serialization Constructors | OPT.CSHARP.ImplementSerializationConstructors | ImplementSerializationConstructors: A type that implements ISerializable, should implement a serialization constructor |
Low | Implement Serialization Methods Correctly | OPT.CSHARP.ImplementSerializationMethodsCorrectly | ImplementSerializationMethodsCorrectly: Implement a correct signature for methods that handle serialization events |
Low | Initialize Value Type Static Fields Inline | OPT.CSHARP.InitializeValueTypeStaticFieldsInline | InitializeValueTypeStaticFieldsInline: Avoid explicitly declare a static constructor |
Low | Instantiate Argument Exceptions Correctly | OPT.CSHARP.InstantiateArgumentExceptionsCorrectly | InstantiateArgumentExceptionsCorrectly: Avoid calling default constructor of ArgumentExceptions |
Low | Operator Overloads Have Named Alternates | OPT.CSHARP.OperatorOverloadsHaveNamedAlternates | OperatorOverloadsHaveNamedAlternates: When a type overrides an operator, it is recommended to also override the alternative method |
Low | Overload Operator Equals On Overriding Equals | OPT.CSHARP.OverloadOperatorEqualsOnOverridingEquals | OverloadOperatorEqualsOnOverridingEquals: When a type overrides System.Object.Equals method, it also should override the operator [] {} |
Low | Prefer Jagged Arrays Over Multidimensional | OPT.CSHARP.PreferJaggedArraysOverMultidimensional | PreferJaggedArraysOverMultidimensional: Do not declare multidimensional array |
Low | Use Managed Equivalents Of Win32 Api | OPT.CSHARP.UseManagedEquivalentsOfWin32Api | UseManagedEquivalentsOfWin32Api: Use managed equivalents of Win32 API |
Low | Constants Should Be Transparent | OPT.CSHARP.ConstantsShouldBeTransparent | ConstantsShouldBeTransparent: A field constant or an enumeration member should be transparent |
Low | Information Exposure Through Debug Log | OPT.CSHARP.SEC.InformationExposureThroughDebugLog | InformationExposureThroughDebugLog: Avoid exposing sensible information through log |
Medium | Unsafe Cookie Rule | OPT.CSHARP.SEC.UnsafeCookieRule | UnsafeCookieRule: Generate server-side cookies with adequate security properties |
Medium | Avoid Null Reference Exception | OPT.CSHARP.AvoidNullReferenceException | AvoidNullReferenceException: Use of NullPointerException Catch to Detect NULL Pointer Dereference |
Medium | Avoid Readonly Mutable Types | OPT.CSHARP.AvoidReadonlyMutableTypes | AvoidReadonlyMutableTypes: Do not declare externally visible read-only fields with mutable types |
Medium | Call GC Keep Alive When Usinga Ntive Resources | OPT.CSHARP.CallGCKeepAliveWhenUsingaNtiveResources | CallGCKeepAliveWhenUsingaNtiveResources: GC.KeepAlive should be called in methods that use unmanaged resources |
Medium | Critical Types Must Not Participate In Type Equivalence | OPT.CSHARP.CriticalTypesMustNotParticipateInTypeEquivalence | CriticalTypesMustNotParticipateInTypeEquivalence: SecurityCriticalAttribute should not be used in members, or types that participate in type equivalence |
Medium | Array Fields Should Not Be Read Only | OPT.CSHARP.Csharp.ArrayFieldsShouldNotBeReadOnly | ArrayFieldsShouldNotBeReadOnly: Array fields should not be read only |
Medium | Attribute Class Suffix | OPT.CSHARP.Csharp.AttributeClassSuffix | AttributeClassSuffix: Attribute classes names must contain the 'Attribute' suffix |
Medium | Avoid Calling Problematic Methods | OPT.CSHARP.Csharp.AvoidCallingProblematicMethods | AvoidCallingProblematicMethods: Potentially dangerous call |
Medium | Avoid Custom Application Exceptions | OPT.CSHARP.Csharp.AvoidCustomApplicationExceptions | AvoidCustomApplicationExceptions: Classes that extend ApplicationException should not be used |
Medium | Avoid Empty Constructors In Structs | OPT.CSHARP.Csharp.AvoidEmptyConstructorsInStructs | AvoidEmptyConstructorsInStructs: Avoid empty constructors in structures |
Medium | Avoid Indexers In Non Collection Classes | OPT.CSHARP.Csharp.AvoidIndexersInNonCollectionClasses | AvoidIndexersInNonCollectionClasses: Avoid indexers in non-collections classes |
Medium | Avoid Large Methods | OPT.CSHARP.Csharp.AvoidLargeMethods | AvoidLargeMethods: Avoid functions and methods with too many lines of code |
Medium | Avoid Large Structure | OPT.CSHARP.Csharp.AvoidLargeStructure | AvoidLargeStructure: Avoid creating too-large structures |
Medium | Avoid Uninstantiated Internal Classes | OPT.CSHARP.Csharp.AvoidUninstantiatedInternalClasses | AvoidUninstantiatedInternalClasses: Avoid uninstantiated internal classes |
Medium | Avoid Unsealed Concrete Attributes Rule | OPT.CSHARP.Csharp.AvoidUnsealedConcreteAttributesRule | AvoidUnsealedConcreteAttributesRule: Avoid attributes defined as unsealed but not abstract |
Medium | Call Get Last Error Immediately After P Invoke | OPT.CSHARP.Csharp.CallGetLastErrorImmediatelyAfterPInvoke | CallGetLastErrorImmediatelyAfterPInvoke: Call GetLastError immediately after P/Invoke |
Medium | Check New Thread Without Start | OPT.CSHARP.Csharp.CheckNewThreadWithoutStart | CheckNewThreadWithoutStart: Avoid creating unstarted threads |
Medium | Clone Method Should Not Return Null | OPT.CSHARP.Csharp.CloneMethodShouldNotReturnNull | CloneMethodShouldNotReturnNull: An overwritten Clone() method should never return null |
Medium | Collection Class Suffix | OPT.CSHARP.Csharp.CollectionClassSuffix | CollectionClassSuffix: Collections classes names must end with the 'Collection' suffix |
Medium | Collections Should Implement Generic Interface | OPT.CSHARP.Csharp.CollectionsShouldImplementGenericInterface | CollectionsShouldImplementGenericInterface: Collections should implement the generic interface |
Medium | Com Visible Type Base Types Should Be Com Visible | OPT.CSHARP.Csharp.ComVisibleTypeBaseTypesShouldBeComVisible | ComVisibleTypeBaseTypesShouldBeComVisible: COM visible type derive from a non COM visible type |
Medium | Consider Passing Base Types As Parameters | OPT.CSHARP.Csharp.ConsiderPassingBaseTypesAsParameters | ConsiderPassingBaseTypesAsParameters: Consider passing base types as parameters |
Medium | Declare Types In Namespaces | OPT.CSHARP.Csharp.DeclareTypesInNamespaces | DeclareTypesInNamespaces: Declare types in namespaces |
Medium | Default Parameters Should Not Be Used | OPT.CSHARP.Csharp.DefaultParametersShouldNotBeUsed | DefaultParametersShouldNotBeUsed: Do not use default parameters |
Medium | Disable Debugging Code Rule | OPT.CSHARP.Csharp.DisableDebuggingCodeRule | DisableDebuggingCodeRule: Avoid using Console.WriteLine |
Medium | Disposable Fields Should Be Disposed | OPT.CSHARP.Csharp.DisposableFieldsShouldBeDisposed | DisposableFieldsShouldBeDisposed: Call Dispose method of fields that implements System.IDisposable |
Medium | Do Not Call Overridable Methods In Constructors | OPT.CSHARP.Csharp.DoNotCallOverridableMethodsInConstructors | DoNotCallOverridableMethodsInConstructors: Virtual method call from constructor |
Medium | Do Not Catch General Exception Types | OPT.CSHARP.Csharp.DoNotCatchGeneralExceptionTypes | DoNotCatchGeneralExceptionTypes: Declaration of Catch for Generic Exception |
Medium | Do Not Declare Virtual Members In Sealed Types | OPT.CSHARP.Csharp.DoNotDeclareVirtualMembersInSealedTypes | DoNotDeclareVirtualMembersInSealedTypes: Do not declare virtual and not final members in sealed classes |
Medium | Do Not Decrease Inherited Member Visibility | OPT.CSHARP.Csharp.DoNotDecreaseInheritedMemberVisibility | DoNotDecreaseInheritedMemberVisibility: Do not decrease inherited member visibility |
Medium | Do Not Ignore Method Results | OPT.CSHARP.Csharp.DoNotIgnoreMethodResults | DoNotIgnoreMethodResults: Do not ignore the returning value of methods |
Medium | Do Not Nest Generic Types In Member Signatures | OPT.CSHARP.Csharp.DoNotNestGenericTypesInMemberSignatures | DoNotNestGenericTypesInMemberSignatures: Do not nest generic types in externally visible member signatures |
Medium | Do Not Raise Exceptions In Exception Clauses | OPT.CSHARP.Csharp.DoNotRaiseExceptionsInExceptionClauses | DoNotRaiseExceptionsInExceptionClauses: Do not raise exceptions in exception clauses |
Medium | Do Not Raise Reserved Exception Types | OPT.CSHARP.Csharp.DoNotRaiseReservedExceptionTypes | DoNotRaiseReservedExceptionTypes: Do not raise reserved exception types |
Medium | Do Not Use Timers That Prevent Power State Changes | OPT.CSHARP.Csharp.DoNotUseTimersThatPreventPowerStateChanges | DoNotUseTimersThatPreventPowerStateChanges: Avoid timers that prevent power state changes |
Medium | Double Check Locking Rule | OPT.CSHARP.Csharp.DoubleCheckLockingRule | DoubleCheckLockingRule: Incorrect usage of double checking when implementing Singleton pattern |
Medium | Equality Operator If Plus Or Minus | OPT.CSHARP.Csharp.EqualityOperatorIfPlusOrMinus | EqualityOperatorIfPlusOrMinus: Override equality operator if addition and subtraction operators are overrided |
Medium | Exception Class Suffix | OPT.CSHARP.Csharp.ExceptionClassSuffix | ExceptionClassSuffix: Exception classes names must end with the 'Exception' suffix |
Medium | Exception Constructors | OPT.CSHARP.Csharp.ExceptionConstructors | ExceptionConstructors: Classes that extend Exception must implement all standard constructors |
Medium | Implement I Disposable Correctly | OPT.CSHARP.Csharp.ImplementIDisposableCorrectly | ImplementIDisposableCorrectly: Implement IDisposable correctly |
Medium | Implement I Disposable With Finalize | OPT.CSHARP.Csharp.ImplementIDisposableWithFinalize | ImplementIDisposableWithFinalize: Implement Dispose method provided by IDisposable interface |
Medium | Implement I Serializable Correctly | OPT.CSHARP.Csharp.ImplementISerializableCorrectly | ImplementISerializableCorrectly: Implement ISerializable correctly |
Medium | Implement Standard Exception Constructors | OPT.CSHARP.Csharp.ImplementStandardExceptionConstructors | ImplementStandardExceptionConstructors: Implement standard exception constructors |
Medium | Interface Name | OPT.CSHARP.Csharp.InterfaceName | InterfaceName: Interface name format convention |
Medium | Level2 Assemblies Should Not Contain Linkdemands | OPT.CSHARP.Csharp.Level2AssembliesShouldNotContainLinkdemands | Level2AssembliesShouldNotContainLinkdemands: A class or class member is using a LinkDemand in an application that is using Level 2 security |
Medium | Mark Members As Static | OPT.CSHARP.Csharp.MarkMembersAsStatic | MarkMembersAsStatic: A method that only accesses class members should be marked as 'static' |
Medium | Members Should Not Expose Certain Concrete Types | OPT.CSHARP.Csharp.MembersShouldNotExposeCertainConcreteTypes | MembersShouldNotExposeCertainConcreteTypes: Members should not expose certain concrete types |
Medium | Method Case | OPT.CSHARP.Csharp.MethodCase | MethodCase: Method names differ only in case within the same class |
Medium | Namespace Case | OPT.CSHARP.Csharp.NamespaceCase | NamespaceCase: Namespace names differ only in case |
Medium | Naming Class Namespace | OPT.CSHARP.Csharp.NamingClassNamespace | NamingClassNamespace: Namespace name cannot match the name of one of its contained classes |
Medium | Nested Types Should Not Be Visible | OPT.CSHARP.Csharp.NestedTypesShouldNotBeVisible | NestedTypesShouldNotBeVisible: An externally visible type contains an externally visible type declaration |
Medium | Num Max Class By Namespace | OPT.CSHARP.Csharp.NumMaxClassByNamespace | NumMaxClassByNamespace: Avoid an excessive number of classes per package/namespace |
Medium | Only Flags Enums Should Have Plural Names | OPT.CSHARP.Csharp.OnlyFlagsEnumsShouldHavePluralNames | OnlyFlagsEnumsShouldHavePluralNames: Externally visible enumeration ends in a plural word and is not marked with the Flags attribute |
Medium | Operations Should Not Overflow | OPT.CSHARP.Csharp.OperationsShouldNotOverflow | OperationsShouldNotOverflow: Operations should not overflow |
Medium | Parameter Case | OPT.CSHARP.Csharp.ParameterCase | ParameterCase: Parameter names differ only in case in a method declaration |
Medium | Pass System Obj Instead Of String | OPT.CSHARP.Csharp.PassSystemObjInsteadOfString | PassSystemObjInsteadOfString: Pass System.Uri objects instead of strings |
Medium | Pointers Should Not Be Visible | OPT.CSHARP.Csharp.PointersShouldNotBeVisible | PointersShouldNotBeVisible: Pointers should not be visible |
Medium | Properties Should Not Be Write Only | OPT.CSHARP.Csharp.PropertiesShouldNotBeWriteOnly | PropertiesShouldNotBeWriteOnly: Avoid write only properties |
Medium | Property Case | OPT.CSHARP.Csharp.PropertyCase | PropertyCase: Property names within the same class differ only in case |
Medium | Rethrow To Preserve Stack Details | OPT.CSHARP.Csharp.RethrowToPreserveStackDetails | RethrowToPreserveStackDetails: Do not rethrow exceptions explicitly |
Medium | Set Locale For Data Types | OPT.CSHARP.Csharp.SetLocaleForDataTypes | SetLocaleForDataTypes: Set locale property for data types |
Medium | Specify Culture Info | OPT.CSHARP.Csharp.SpecifyCultureInfo | SpecifyCultureInfo: Specify CultureInfo |
Medium | Specify String Comparison | OPT.CSHARP.Csharp.SpecifyStringComparison | SpecifyStringComparison: Specify StringComparison |
Medium | Static Holder Types Should Be Sealed | OPT.CSHARP.Csharp.StaticHolderTypesShouldBeSealed | StaticHolderTypesShouldBeSealed: Class containing only static members should be declared sealed |
Medium | Static Holder Types Should Not Have Constructors | OPT.CSHARP.Csharp.StaticHolderTypesShouldNotHaveConstructors | StaticHolderTypesShouldNotHaveConstructors: Static holder types should not have constructors |
Medium | Type Case | OPT.CSHARP.Csharp.TypeCase | TypeCase: Type names differ only in case |
Medium | Types Should Not Extend Certain Base Types | OPT.CSHARP.Csharp.TypesShouldNotExtendCertainBaseTypes | TypesShouldNotExtendCertainBaseTypes: Types should not extend certain base types |
Medium | Uri Parameters Should Not Be Strings | OPT.CSHARP.Csharp.UriParametersShouldNotBeStrings | UriParametersShouldNotBeStrings: URI parameters should not be strings |
Medium | Uri Return Values Should Not Be Strings | OPT.CSHARP.Csharp.UriReturnValuesShouldNotBeStrings | UriReturnValuesShouldNotBeStrings: The name of a method contains 'uri', 'Uri', 'urn', 'Urn', 'url', or 'Url', and returns a string |
Medium | Use Generic Event Handler Instances | OPT.CSHARP.Csharp.UseGenericEventHandlerInstances | UseGenericEventHandlerInstances: Use generic event handler instances |
Medium | Use Safe Handle To Encapsulate Native Resources | OPT.CSHARP.Csharp.UseSafeHandleToEncapsulateNativeResources | UseSafeHandleToEncapsulateNativeResources: Use of System.IntPtr |
Medium | Validate Arguments Of Public Methods | OPT.CSHARP.Csharp.ValidateArgumentsOfPublicMethods | ValidateArgumentsOfPublicMethods: Check parameters of externally visible methods |
Medium | Warn Of Assignations In Conditional Statements | OPT.CSHARP.Csharp.WarnOfAssignationsInConditionalStatements | WarnOfAssignationsInConditionalStatements: Assignment expression in an if condition |
Medium | Classes Are Strongly Internally Coupled | OPT.CSHARP.ClassesAreStronglyInternallyCoupled | ClassesAreStronglyInternallyCoupled: Classes internally strongly coupled must be avoided |
Medium | Dispose Methods Should Call Suppress Finalize | OPT.CSHARP.DisposeMethodsShouldCallSuppressFinalize | DisposeMethodsShouldCallSuppressFinalize: The Dispose method of a class that implements System.IDisposable should call GC.SuppressFinalize |
Medium | Method Security Should Be Superset Of Type | OPT.CSHARP.MethodSecurityShouldBeSupersetOfType | MethodSecurityShouldBeSupersetOfType: Security of methods should be a subset of the security of types |
Medium | MVC Post In Controllers | OPT.CSHARP.MVCPostInControllers | MVCPostInControllers: Restrict allowed HTTP verbs for state-change operations in MVC controllers |
Medium | Potential Infinite Loop | OPT.CSHARP.PotentialInfiniteLoop | PotentialInfiniteLoop: Loop with Unreachable Exit Condition ('Infinite Loop') |
Medium | Provide Correct Arguments To Formatting Methods | OPT.CSHARP.ProvideCorrectArgumentsToFormattingMethods | ProvideCorrectArgumentsToFormattingMethods: The format argument passed to System.String.Format does not match with the objects passed as parameters |
Medium | Provide Deserialization Methods For Optional Fields | OPT.CSHARP.ProvideDeserializationMethodsForOptionalFields | ProvideDeserializationMethodsForOptionalFields: Provide methods for the de-serialization of fields marked with OptionalFieldAttribute |
Medium | Review Declarative Security On Value Types | OPT.CSHARP.ReviewDeclarativeSecurityOnValueTypes | ReviewDeclarativeSecurityOnValueTypes: Avoid using declarative security in value types |
Medium | Review Imperative Security | OPT.CSHARP.ReviewImperativeSecurity | ReviewImperativeSecurity: Avoid using the imperative security whenever possible |
Medium | Http Request Value Shadowing | OPT.CSHARP.SEC.HttpRequestValueShadowing | HttpRequestValueShadowing: Request data is accessed in an ambiguous way, which can leave it open to attack |
Medium | Main Method In Web Application | OPT.CSHARP.SEC.MainMethodInWebApplication | MainMethodInWebApplication: Main() method not allowed in web application |
Medium | Avoid Host Name Checks | OPT.CSHARP.SEC.AvoidHostNameChecks | AvoidHostNameChecks: Avoid checks on client-side hostname, that are not reliable due to DNS poisoning |
Medium | System Information Leak | OPT.CSHARP.SystemInformationLeak | SystemInformationLeak: Exposure of System Data to an Unauthorized Control Sphere |
Medium | Transparent Methods Must Not Call Native Code | OPT.CSHARP.TransparentMethodsMustNotCallNativeCode | TransparentMethodsMustNotCallNativeCode: A transparent method should not make calls to native code |
Medium | Transparent Methods Must Not Handle Process Corrupting Exceptions | OPT.CSHARP.TransparentMethodsMustNotHandleProcessCorruptingExceptions | TransparentMethodsMustNotHandleProcessCorruptingExceptions: A transparent method must not have HandleProcessCorruptedStateExceptions attribute |
Medium | Transparent Methods Should Not Be Protected With Link Demands | OPT.CSHARP.TransparentMethodsShouldNotBeProtectedWithLinkDemands | TransparentMethodsShouldNotBeProtectedWithLinkDemands: A transparent method should not require LinkDemand |
Medium | Transparent Methods Should Not Demand | OPT.CSHARP.TransparentMethodsShouldNotDemand | TransparentMethodsShouldNotDemand: A transparent method should not require SecurityAction.Demand, and should not call the CodeAccessPermission.Demand method |
Medium | Transparent Methods Should Not Load Assemblies From Byte Arrays | OPT.CSHARP.TransparentMethodsShouldNotLoadAssembliesFromByteArrays | TransparentMethodsShouldNotLoadAssembliesFromByteArrays: A transparent method should not load an assembly from a byte array using the Assembly.Load method |
Medium | Type Link Demands Require Inheritance Demands | OPT.CSHARP.TypeLinkDemandsRequireInheritanceDemands | TypeLinkDemandsRequireInheritanceDemands: A public type protected with link demand requires inheritance demand |
Medium | Unchecked Return Value | OPT.CSHARP.UncheckedReturnValue | UncheckedReturnValue: Unchecked return value. |
Medium | Unchecked Input In Loop Condition | OPT.CSHARP.UncheckedInputInLoopCondition | UncheckedInputInLoopCondition: Unchecked input in loop condition |
Medium | Unused Private Method | OPT.CSHARP.UnusedPrivateMethod | UnusedPrivateMethod: Avoid unused private methods and constructors |
Medium | Do Not Expose Fields In Secured Type | OPT.CSHARP.Csharp.DoNotExposeFieldsInSecuredType | DoNotExposeFieldsInSecuredType: Do not declare public types that are secured but also expose its fields |
Medium | Review Suppress Unmanaged Code Security Usage | OPT.CSHARP.Csharp.ReviewSuppressUnmanagedCodeSecurityUsage | ReviewSuppressUnmanagedCodeSecurityUsage: Do not use the 'SuppressUnmanagedCodeSecurity' attribute |
Medium | MVC Remove Version Header | OPT.CSHARP.MVCRemoveVersionHeader | MVCRemoveVersionHeader: Remove ASP.NET MVC version from HTTP headers |
Medium | P Invokes Should Not Be Safe Critical | OPT.CSHARP.PInvokesShouldNotBeSafeCritical | PInvokesShouldNotBeSafeCritical: A P/Invoke declaration should not have the SecuritySafeCritical attribute |
Medium | Hardcoded Credential | OPT.CSHARP.SEC.HardcodedCredential | HardcodedCredential: Use of Hard-coded Credentials |
Medium | Hardcoded Network Address | OPT.CSHARP.SEC.HardcodedNetworkAddress | HardcodedNetworkAddress: Network addresses should not be hardcoded |
Medium | Plaintext Storage Of Password | OPT.CSHARP.SEC.PlaintextStorageOfPassword | PlaintextStorageOfPassword: Plaintext Storage of a Password |
Medium | Serializable Class Containing Sensitive Data | OPT.CSHARP.SEC.SerializableClassContainingSensitiveData | SerializableClassContainingSensitiveData: Serializable Class Containing Sensitive Data |
Medium | Secured Types Should Not Expose Fields | OPT.CSHARP.SecuredTypesShouldNotExposeFields | SecuredTypesShouldNotExposeFields: Types secured with Link Demands should not expose fields |
Medium | Secure Serialization Constructors | OPT.CSHARP.SecureSerializationConstructors | SecureSerializationConstructors: Serialization constructors should be protected with security demands |
Medium | Transparency Annotations Should Not Conflict | OPT.CSHARP.TransparencyAnnotationsShouldNotConflict | TransparencyAnnotationsShouldNotConflict: The security attribute of a type should have the same transparency that the security attributes of the members that it contains |