# --------------------------------------------------------- # TODO: These should be fixed. R: Gendarme.Rules.Correctness.ProvideCorrectArgumentsToFormattingMethodsRule A: Gendarme.Rules.Design R: Gendarme.Rules.Serialization.MarkEnumerationsAsSerializableRule T: Gendarme.Framework.ThreadModel T: Gendarme.Rules.Concurrency.ThreadModel # I think these should throw System.FormatException. R: Gendarme.Rules.Exceptions.AvoidThrowingBasicExceptionsRule M: System.Int32 Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRuleHelper::GetLoadIndex(Mono.Cecil.Cil.Instruction) M: System.Int32 Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRuleHelper::GetStoreIndex(Mono.Cecil.Cil.Instruction) R: Gendarme.Rules.Performance.AvoidUnsealedUninheritedInternalTypeRule T: Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule/ILRange R: Gendarme.Rules.Correctness.EnsureLocalDisposalRule M: System.Void Gendarme.Wizard::SaveReportButtonClick(System.Object,System.EventArgs) # Not sure about this one. R: Gendarme.Rules.Design.Generic.PreferGenericsOverRefObjectRule M: Mono.Cecil.Cil.Instruction Gendarme.Framework.Helpers.StackEntryAnalysis::GetNextInstruction(Mono.Cecil.Cil.Instruction,System.Object&) R: Gendarme.Rules.Exceptions.UseObjectDisposedExceptionRule M: System.Void Gendarme.Wizard::set_Current(Gendarme.Page) R: Gendarme.Rules.Correctness.MethodCanBeMadeStaticRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # Most of these are rule check methods which would be really annoying to fix. # It seems to me like the only good reason to make rules externally visible is # for the unit tests so we may want to consider making the rules internally # visible and exposing them to the tests via System.Runtime.CompilerServices. # InternalsVisibleToAttribute. R: Gendarme.Rules.Correctness.CheckParametersNullityInVisibleMethodsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # --------------------------------------------------------- # We might want to fix these. R: Gendarme.Rules.Naming.AvoidRedundancyInMethodNameRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # TODO: For some reason this is not suppressing the defect. (And the console # report says "No defect found." even though it shows the defect.) R: Gendarme.Rules.Design.AvoidSmallNamespaceRule A: Gendarme.Framework R: Gendarme.Rules.Performance.OverrideValueTypeDefaultsRule T: Gendarme.Rules.Concurrency.DecorateThreadsRule/MethodName R: Gendarme.Rules.BadPractice.PreferEmptyInstanceOverNullRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.BadPractice.DisableDebuggingCodeRule M: System.Void Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule/ILRange::DumpAll(System.String) M: System.Void Gendarme.Rules.Smells.CodeDuplicatedLocator::WriteToOutput(Mono.Cecil.MethodDefinition,Mono.Cecil.MethodDefinition,Gendarme.Rules.Smells.Pattern) M: System.Void Gendarme.Rules.Smells.CodeDuplicatedLocator::WriteToOutput(Mono.Cecil.MethodDefinition,Mono.Cecil.MethodDefinition,Gendarme.Rules.Smells.Pattern) M: System.Void Gendarme.Rules.Smells.CodeDuplicatedLocator::WriteToOutput(Mono.Cecil.MethodDefinition,Mono.Cecil.MethodDefinition,Gendarme.Rules.Smells.Pattern) R: Gendarme.Rules.Design.ConsiderConvertingMethodToPropertyRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # A few of these are externally visible methods... R: Gendarme.Rules.Maintainability.AvoidUnnecessarySpecializationRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Smells.AvoidCodeDuplicatedInSameClassRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Smells.AvoidSpeculativeGeneralityRule T: Gendarme.Framework.EngineController R: Gendarme.Rules.Design.ConsiderAddingInterfaceRule T: Gendarme.Framework.IMethodRule R: Gendarme.Rules.Performance.AvoidUnusedParametersRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Smells.AvoidMessageChainsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Performance.AvoidMethodWithLargeMaximumStackSize A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Maintainability.AvoidComplexMethodsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Smells.AvoidLargeClassesRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Smells.AvoidLongMethodsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui R: Gendarme.Rules.Maintainability.AvoidLackOfCohesionOfMethodsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # --------------------------------------------------------- # These are all OK. # Debug code. R: Gendarme.Rules.Performance.AvoidUncalledPrivateCodeRule M: System.Void Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule/ILRange::DumpAll(System.String) M: System.Int32 Gendarme.Rules.Interoperability.DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRuleHelper::GetOffset(Mono.Cecil.Cil.Instruction) # OK - The rule itself needs the literal new line characters to test against them R: Gendarme.Rules.Portability.NewLineLiteralRule M: Gendarme.Framework.RuleResult Gendarme.Rules.Portability.NewLineLiteralRule::CheckMethod(Mono.Cecil.MethodDefinition) # OK - don't apply the rule to itself R: Gendarme.Rules.Portability.DoNotHardcodePathsRule M: System.Void Gendarme.Rules.Portability.DoNotHardcodePathsRule::ProcessUnixProbablyAbsolutePath(System.String) # OK - in those case the specialization has its contextual sense and helps readability R: Gendarme.Rules.Maintainability.AvoidUnnecessarySpecializationRule M: System.Boolean Gendarme.Framework.Engines.CommonAttributesEngine::HasAttribute(Mono.Cecil.TypeDefinition,Gendarme.Framework.Engines.WellKnownTypeAttribute) M: System.Boolean Gendarme.Framework.Engines.CommonAttributesEngine::HasAttribute(Mono.Cecil.FieldDefinition,Gendarme.Framework.Engines.WellKnownFieldAttribute) M: System.Boolean Gendarme.Framework.Rocks.CustomAttributeRocks::ContainsAnyType(Mono.Cecil.CustomAttributeCollection,System.String[]) M: System.Boolean Gendarme.Framework.Rocks.CustomAttributeRocks::ContainsType(Mono.Cecil.CustomAttributeCollection,System.String) M: System.Boolean Gendarme.Framework.Rocks.ModuleRocks::HasDebuggingInformation(Mono.Cecil.ModuleDefinition) M: System.Void Gendarme.Framework.Defect::.ctor(Gendarme.Framework.IRule,Mono.Cecil.IMetadataTokenProvider,Mono.Cecil.MethodDefinition,Mono.Cecil.Cil.Instruction,Gendarme.Framework.Severity,Gendarme.Framework.Confidence,System.String) # OK - the gendarme framework is not a beginner, nor easy, API R: Gendarme.Rules.Design.AvoidRefAndOutParametersRule M: Mono.Cecil.Cil.Instruction Gendarme.Framework.Helpers.StackEntryAnalysis::GetNextInstruction(Mono.Cecil.Cil.Instruction,System.Object&) # OK - the field is not owned by this type R: Gendarme.Rules.Design.TypesWithDisposableFieldsShouldBeDisposableRule T: Gendarme.GuiRunner # OK - the framework and the console runner each have a global catch all to report errors R: Gendarme.Rules.Exceptions.DoNotSwallowErrorsCatchingNonSpecificExceptionsRule M: System.Byte Gendarme.ConsoleRunner::Execute(System.String[]) M: System.Void Gendarme.Framework.Runner::Initialize() # OK - System.Configuration.ApplicationSettingsBase works enough for Gendarme's Wizard (using Mono 2.1) R: Gendarme.Rules.Portability.MonoCompatibilityReviewRule T: Gendarme.Properties.Settings # OK - Version and Guid sadly do not provide a TryParse method R: Gendarme.Rules.Performance.DoNotIgnoreMethodResultRule M: System.Boolean Gendarme.Rules.Correctness.AttributeStringLiteralsShouldParseCorrectlyRule::TryParseVersion(System.String) M: System.Boolean Gendarme.Rules.Correctness.AttributeStringLiteralsShouldParseCorrectlyRule::TryParseGuid(System.String) # OK - MethodSignatures use the CLR names for operators that starts with "op_" R: Gendarme.Rules.Naming.AvoidNonAlphanumericIdentifierRule T: Gendarme.Framework.Helpers.MethodSignatures # OK - IMethodRule is not declared on purpose on BadPractice.ReturnNullRule R: Gendarme.Rules.Design.ConsiderAddingInterfaceRule T: Gendarme.Rules.BadPractice.ReturnNullRule # OK - RegEx sadly do not provide a TryPattern method R: Gendarme.Rules.Performance.DoNotIgnoreMethodResultRule M: System.Void Gendarme.Rules.Correctness.ProvideCorrectRegexPatternRule::CheckPattern(Mono.Cecil.Cil.Instruction,System.String) # OK - The set of potential exceptions of RegEx is unknown R: Gendarme.Rules.Exceptions.DoNotSwallowErrorsCatchingNonSpecificExceptionsRule M: System.Void Gendarme.Rules.Correctness.ProvideCorrectRegexPatternRule::CheckPattern(Mono.Cecil.Cil.Instruction,System.String) # OK - we're using switch extensively and in a way that would be hard to OO-ize while keeping performance and readability R: Gendarme.Rules.Smells.AvoidSwitchStatementsRule A: gendarme A: gendarme-wizard A: Gendarme.Framework A: Gendarme.Rules.BadPractice A: Gendarme.Rules.Concurrency A: Gendarme.Rules.Correctness A: Gendarme.Rules.Design A: Gendarme.Rules.Design.Generic A: Gendarme.Rules.Design.Linq A: Gendarme.Rules.Exceptions A: Gendarme.Rules.Interoperability A: Gendarme.Rules.Maintainability A: Gendarme.Rules.Naming A: Gendarme.Rules.Performance A: Gendarme.Rules.Portability A: Gendarme.Rules.Security A: Gendarme.Rules.Security.Cas A: Gendarme.Rules.Serialization A: Gendarme.Rules.Smells A: Gendarme.Rules.Ui # non-gendarme code / NDesk.Options R: Gendarme.Rules.Security.Cas.SecureGetObjectDataOverridesRule T: NDesk.Options.OptionException R: Gendarme.Rules.Exceptions.MissingExceptionConstructorsRule T: NDesk.Options.OptionException R: Gendarme.Rules.Correctness.MethodCanBeMadeStaticRule M: System.Void NDesk.Options.Option::AddSeparators(System.String,System.Int32,System.Collections.Generic.List`1) M: System.Void NDesk.Options.OptionSet::Invoke(NDesk.Options.OptionContext,System.String,System.String,NDesk.Options.Option) R: Gendarme.Rules.Exceptions.DoNotSwallowErrorsCatchingNonSpecificExceptionsRule M: T NDesk.Options.Option::Parse(System.String,NDesk.Options.OptionContext) R: Gendarme.Rules.Performance.AvoidUnsealedUninheritedInternalTypeRule T: NDesk.Options.OptionSet/ActionOption T: NDesk.Options.OptionSet/ActionOption`1 T: NDesk.Options.OptionSet/ActionOption`2 R: Gendarme.Rules.Performance.AvoidReturningArraysOnPropertiesRule M: System.String[] NDesk.Options.Option::get_ValueSeparators() M: System.String[] NDesk.Options.Option::get_Names() R: Gendarme.Rules.Maintainability.AvoidLackOfCohesionOfMethodsRule T: NDesk.Options.OptionSet T: NDesk.Options.OptionContext R: Gendarme.Rules.Maintainability.AvoidUnnecessarySpecializationRule M: System.Void NDesk.Options.Option::AddSeparators(System.String,System.Int32,System.Collections.Generic.List`1) R: Gendarme.Rules.Design.AvoidRefAndOutParametersRule M: System.Boolean NDesk.Options.OptionSet::GetOptionParts(System.String,System.String&,System.String&,System.String&,System.String&) R: Gendarme.Rules.Exceptions.InstantiateArgumentExceptionCorrectlyRule M: System.Void NDesk.Options.Option::AddSeparators(System.String,System.Int32,System.Collections.Generic.List`1) M: NDesk.Options.OptionValueType NDesk.Options.Option::ParsePrototype() R: Gendarme.Rules.Design.Generic.AvoidMethodWithUnusedGenericTypeRule M: T NDesk.Options.Option::Parse(System.String,NDesk.Options.OptionContext) R: Gendarme.Rules.Naming.UseCorrectSuffixRule T: NDesk.Options.OptionSet R: Gendarme.Rules.Serialization.MarkEnumerationsAsSerializableRule T: NDesk.Options.OptionValueType # The winforms wizard uses Gendarme from a thread so the DecorateThreadsRule will # fire because Gendarme code, like the rules and the runners, are not marked as # thread-safe. R: Gendarme.Rules.Concurrency.DecorateThreadsRule M: System.Void Gendarme.Wizard::UpdateWelcomeUI() M: System.Boolean Gendarme.Wizard::UpdateActiveRules() M: System.Void Gendarme.Wizard::Analyze() # This is internal code. R: Gendarme.Rules.Performance.AvoidReturningArraysOnPropertiesRule M: System.Int32[] Gendarme.Rules.Smells.Pattern::get_Prefixes()