Math.NET Numerics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

521 lines
19 KiB

2010-09-05 Version 2.8.0
First release in the 2.8.x serie which will lead to the 3.0
release. Many rules were enhanced and a lot of work was done
to make Gendarme adhere to its own rules (self-test).
This release also includes 10 new rules (221 rules total):
Gendarme.Rules.BadPractice
* PreferParamsArrayForVariableArgumentsRule [Sebastien Pouliot]
* PreferTryParseRule [Sebastien Pouliot]
Gendarme.Rules.Correctness
* UseNoInliningWithGetCallingAssemblyRule [Sebastien Pouliot]
Gendarme.Rules.Design
* ProvideTryParseAlternativeRule [Sebastien Pouliot]
Gendarme.Rules.Design.Generic
* AvoidDeclaringCustomDelegatesRule [Sebastien Pouliot]
Gendarme.Rules.Maintainability
* RemoveDependenceOnObsoleteCodeRule [Sebastien Pouliot]
Gendarme.Rules.Interoperability
* CentralizePInvokesIntoNativeMethodsTypeRule [Sebastien Pouliot]
Gendarme.Rules.Performance
* AvoidConcatenatingCharsRule [Sebastien Pouliot]
* AvoidLocalDataStoreSlotRule [Sebastien Pouliot]
* AvoidRepetitiveCallsToPropertiesRule [Sebastien Pouliot]
Contributors for this release are:
Antoine Vandecreme, JB Evain, Rolf Bjarne Kvinge and Sebastien
Pouliot.
2009-12-20 Version 2.6
Released just in time for xmas Gendarme 2.6 comes with a lot of
enhancements and bug fixes. Rule documentation (wiki) and our MAN
pages were also greatly enhanced by the work of Jesse Jones.
In the ecosystem Daniel Nauck contributed Gendarme support for
CC.NET and a new NAnt task with reduced dependencies. With this
Gendarme should be easier than ever to use on your projects.
This release includes 12 new rules (207 rules total):
Gendarme.Rules.BadPractice
* DoNotUseEnumIsAssignableFromRule [JB Evain]
* OnlyUseDisposeForIDisposableTypesRule [Jesse Jones]
* PreferSafeHandleRule [Jesse Jones]
Gendarme.Rules.Concurrency
* DoNotUseThreadStaticWithInstanceFieldsRule [Jesse Jones]
Gendarme.Rules.Correctness
* ProvideValidXmlStringRule [Cedric Vivier]
* ProvideValidXPathExpressionRule [Cedric Vivier]
Gendarme.Rules.Design
* PreferXmlAbstractionsRule [Cedric Vivier]
* UseCorrectDisposeSignaturesRule [Jesse Jones]
* UseFlagsAttributeRule [Jesse Jones]
Gendarme.Rules.Exceptions
* UseObjectDisposedExceptionRule [Jesse Jones]
Gendarme.Rules.Interoperability
* DelegatesPassedToNativeCodeMustIncludeExceptionHandlingRule [Rolf Bjarne Kvinge]
Gendarme.Rules.Performance
* ReviewLinqMethodRule [Jesse Jones]
Contributors for this release are:
Cedric Vivier, Daniel Nauck, JB Evain, Jesse Jones, Rolf Bjarne
Kvinge and Sebastien Pouliot.
2009-01-20 Version 2.4
This release was the shortest (about 2 months) release cycle ever
for Gendarme. Nevertheless it contains a lot of enhancements for
rules builders (e.g. logging support, makefile helpers) provided
by Jesse Jones.
This release also includes 12 new rules (195 rules total):
Gendarme.Rules.BadPractice
* PreferEmptyInstanceOverNullRule [Cedric Vivier]
Gendarme.Rules.Correctness
* DoNotRecurseInEqualityRule [Jesse Jones]
* EnsureLocalDisposalRule [Cedric Vivier]
* ProvideCorrectRegexPatternRule [Cedric Vivier]
* ReviewInconsistentIdentityRule [Jesse Jones]
Gendarme.Rules.Design.Generic
* DoNotExposeNestedGenericSignaturesRule [Sebastien Pouliot]
Gendarme.Rules.Exceptions
* DoNotThrowInUnexpectedLocationRule [Jesse Jones]
Gendarme.Rules.Maintainability
* AvoidAlwaysNullFieldRule [Jesse Jones]
Gendarme.Rules.Naming
* AvoidTypeInterfaceInconsistencyRule [Sebastien Pouliot]
Gendarme.Rules.Performance
* PreferCharOverloadRule [Sebastien Pouliot]
Gendarme.Rules.Security
* DoNotShortCircuitCertificateChecksRule [Sebastien Pouliot]
Gendarme.Rules.Smells
* AvoidSwitchStatementsRule [Nestor Salceda]
Contributors for this release are:
Andres G. Aragoneses, Cedric Vivier, JB Evain, Jesse Jones,
Nestor Salceda, Sebastien Pouliot.
2008-11-10 Version 2.2
This release includes the development results of the last four
months, including some major events like the Novell Hack Week 3
and the second half of GSoC 2008 work done by Nestor Salceda.
Major highlights includes:
* improvement to the framework by the addition of engines that
can build extra information to extend the model Cecil gives us
to work with.
* New [FxCopCompatibility] attribute to match between Gendarme
and FxCop rules. This will be used to support [SuppressMessage]
inside assemblies in a future release.
* New TearDown capability on rules and runners allow rules to
defer the reporting of defects until the analysis is completed.
* New "Audit" severity. This is used to denotate defects that,
too often, can't be fixed (i.e. will always be reported) but
needs to be audited (e.g. security items).
* By default the console runner now reports only when both
Severity > Low
i.e. skipping Low and Audit severity defects
Confidence > Low
i.e. skipping Low confidence defects
This is to help reduce false positives and get smaller reports
with the most important defects. You can override both option,
with lower or higher values, with new command switches. E.g.
gendarme --severity=audit,critical ...
gendarme --confidence=all ...
* The wizard runner is now, by default, limited to 1000 defects
on the visible API and will, like the console runner, report
only defects when both Severity > Low and Confidence > Low. A
new step in the wizard allow users to change those settings
before the analysis (defaults can be modified and saved).
* You can now save your rule selection as the new default in
the wizard. The same set will be enable next time you restart
the wizard.
* Known issue: does not work under Mono, bug #439943
and a lot of new rules including:
Gendarme.Rules.BadPractice
* AvoidAssemblyVersionMismatchRule [Sebastien Pouliot]
* DoNotUseGetInterfaceToCheckAssignabilityRule [Sebastien Pouliot]
Gendarme.Rules.Concurrency
* DoNotUseMethodImplOptionsSynchronizedRule [Sebastien Pouliot]
* ReviewLockUsedOnlyForOperationsOnVariablesRule [Cedric Vivier]
* ProtectCallToEventDelegatesRule [Sebastien Pouliot]
Gendarme.Rules.Correctness
* AttributeStringLiteralsShouldParseCorrectlyRule [Nestor Salceda]
* CheckParametersNullityInVisibleMethodsRule [Sebastien Pouliot]
* ProvideCorrectArgumentsToFormattingMethodsRule [Nestor Salceda]
* ReviewCastOnIntegerDivisionRule [Sebastien Pouliot]
* ReviewCastOnIntegerMultiplicationRule [Sebastien Pouliot]
Gendarme.Rules.Design
* AvoidSmallNamespaceRule [Sebastien Pouliot]
* ConsiderAddingInterfaceRule [Cedric Vivier]
* DeclareEventHandlersCorrectlyRule [Nestor Salceda]
* DoNotDeclareVirtualMethodsInSealedTypeRule [Sebastien Pouliot]
* InternalNamespacesShouldNotExposeTypesRule [Sebastien Pouliot]
* MarkAssemblyWithAssemblyVersionRule [Sebastien Pouliot]
* MarkAssemblyWithCLSCompliantRule [Sebastien Pouliot]
* MarkAssemblyWithComVisibleRule [Sebastien Pouliot]
Gendarme.Rules.Design.Generic
* AvoidMethodWithUnusedGenericTypeRule [Sebastien Pouliot]
* UseGenericEventHandlerRule [Sebastien Pouliot]
* PreferGenericsOverRefObjectRule [Sebastien Pouliot]
Gendarme.Rules.Design.Linq
* AvoidExtensionMethodOnSystemObjectRule [Sebastien Pouliot]
Gendarme.Rules.Exceptions
* InstantiateArgumentExceptionCorrectlyRule [Nestor Salceda]
Gendarme.Rules.Interoperability
* MarshalBooleansInPInvokeDeclarationsRule [Sebastien Pouliot]
Gendarme.Rules.Naming
* AvoidDeepNamespaceHierarchyRule [Sebastien Pouliot]
* AvoidRedundancyInMethodNameRule [Cedric Vivier]
* AvoidRedundancyInTypeNameRule [Cedric Vivier]
Gendarme.Rules.Performance
* AvoidUnneededFieldInitializationRule [Sebastien Pouliot]
* PreferLiteralOverInitOnlyFieldsRule [Sebastien Pouliot]
Gendarme.Rules.Security.Cas
* ReviewSuppressUnmanagedCodeSecurityUsageRule [Sebastien Pouliot]
Gendarme.Rules.Serialization
* MarkEnumerationsAsSerializableRule [Sebastien Pouliot]
Gendarme.Rules.Smells
* AvoidMessageChainsRule [Nestor Salceda]
Lots of rules have been updated and, in a few cases, renamed or
moved, to provide extended functionalities.
Move/merge changes:
* CAS-related Security rules were moved into Security.Cas
* DisposableFieldsShouldBeDisposedRule was moved from Design
into Correctness
* EnumNotEndsWithEnumOrFlagsSuffixRule was merged with
UseCorrectSuffixRule (Naming)
* FinalizersShouldCallBaseClassFinalizerRule was moved from
Design into Correctness
* ImplementGenericCollectionInterfacesRule was moved from
Design into Design.Generic
Contributors for this release are:
Peter Johanson, Nestor Salceda, Cedric Vivier, Jesse Jones,
Alan McGovern, Sebastien Pouliot.
2008-07-14 Version 0.2.0.0
This release includes the development results of the last six
months, including some major events like the Novell Hack Week
(Winter 2008 edition), which changed much of the Gendarme
framework, the first "Gendarme Rule Day" and the first part of
GSoC 2008 work by Nestor Salceda.
General highlights:
* Performance enhancements, memory usage reduction (mostly
inside Cecil but the gains are very visible in Gendarme)
* MDB/PDB support: source files and line numbers are now
provided with defects [Sebastien Pouliot]
* New Windows installer: You can now easily enjoy Gendarme, and
it's wizard, from Windows computers [Sebastien Pouliot]
* .desktop file for the Wizard runner [Daniel Nauck]
* Console runner now uses color when displaying on the console
[Cedric Vivier]
* Albeit a bit invisible to end users, we started using the new
unit test helpers made during GHOP [Daniel Abramov]
* Bug fixes: works continue, like previous releases, to remove
false positives from existing rules;
and a lot of new rules including:
Gendarme.Rules.BadPractice
* AvoidCallingProblematicMethodsRule [Nestor Salceda]
* AvoidVisibleConstantFieldRule [Sebastien Pouliot]
* DoNotForgetNotImplementedMethodsRule [Cedric Vivier]
* DisableDebuggingCodeRule [Sebastien Pouliot]
* ObsoleteMessagesShouldNotBeEmptyRule [Sebastien Pouliot]
* ReplaceIncompleteOddnessCheckRule [Sebastien Pouliot]
Gendarme.Rules.Concurrency
* DoNotLockOnThisOrTypesRule [Sebastien Pouliot]
* DoNotLockOnWeakIdentityObjectsRule [Sebastien Pouliot]
* DoNotUseLockedRegionOutsideMethodRule [Andres G. Aragoneses]
Gendarme.Rules.Correctness
* DoNotRoundIntegersRule [Sebastien Pouliot]
* ReviewDoubleAssignmentRule [Sebastien Pouliot]
* ReviewSelfAssignmentRule [Sebastien Pouliot]
* ReviewUselessControlFlow [Sebastien Pouliot]
* ReviewUseOfInt64BitsToDoubleRule [Sebastien Pouliot]
* ReviewUseOfModuloOneOnIntegersRule [Sebastien Pouliot]
Gendarme.Rules.Design
* AvoidMultidimensionalIndexerRule [Sebastien Pouliot]
* AvoidRefAndOutParametersRule [Sebastien Pouliot]
* AvoidVisibleNestedTypesRule [Sebastien Pouliot]
* ConsiderConvertingFieldToNullableRule [Cedric Vivier]
* ConsiderUsingStaticTypeRule.cs [Sebastien Pouliot]
* ImplementGenericCollectionInterfacesRule [Daniel Abramov]
* ImplementIComparableCorreclyRule [Sebastien Pouliot]
* PreferIntegerOrStringForIndexersRule [Sebastien Pouliot]
Gendarme.Rules.Exception
* AvoidArgumentExceptionDefaultConstructorRule [Sebastien Pouliot]
* AvoidThrowingBasicExceptionsRule [Daniel Abramov]
* DoNotThrowReservedExceptionRule [Sebastien Pouliot]
* ExceptionShouldBeVisibleRule [Sebastien Pouliot]
* MissingExceptionConstructorsRule [Sebastien Pouliot]
Gendarme.Rules.Interoperability
* DoNotCastIntPtrToInt32Rule [Sebastien Pouliot]
Gendarme.Rules.Maintainability (new)
* AvoidComplexMethodsRule [Cedric Vivier]
* AvoidDeepInheritanceTreeRule [Sebastien Pouliot]
* AvoidLackOfCohesionOfMethodRule [Cedric Vivier]
* ConsiderUsingStopwatchRule [Cedric Vivier]
* PreferStringIsNullOrEmptyRule [Sebastien Pouliot]
Gendarme.Rules.Naming
* DoNotPrefixEventsWithAfterOrBeforeRule [Sebastien Pouliot]
Gendarme.Rules.Performance
* AvoidLargeNumberOfLocalVariablesRule [Sebastien Pouliot]
* AvoidLargeStructureRule [Sebastien Pouliot]
* AvoidRepetitiveCastsRule [Sebastien Pouliot]
* AvoidTypeGetTypeWhenPossibleRule [Sebastien Pouliot]
* AvoidUnusedPrivateFieldsRule [Sebastien Pouliot]
* AvoidUnneededUnboxingRule [Sebastien Pouliot]
* AvoidUnsealedUninheritedInternalClassesRule [Scott Peterson]
* ImplementEqualsTypeRule [Sebastien Pouliot]
* OverrideValueTypeDefaultsRule [Sebastien Pouliot]
* RemoveUnusedLocalVariablesRule [Sebastien Pouliot]
* UseIsOperatorRule [Seo Sanghyeon]
* UseTypeEmptyTypesRule [JB Evain]
Gendarme.Rules.Portability
* DoNotHardcodePathsRule [Daniel Abramov]
Gendarme.Rules.Serialization (new)
* CallBaseMethodsOnISerializableTypesRule [Nestor Salceda]
* DeserializeOptionalFieldRule [Sebastien Pouliot]
* ImplementISerializableCorrectlyRule [Nestor Salceda]
* MarkAllNonSerializableFieldsRule [Nestor Salceda]
* MissingSerializableAttributeOnISerializableTypeRule [Sebastien Pouliot]
* MissingSerializationConstructorRule [Sebastien Pouliot]
* UseCorrectSignatureForSerializationMethodsRule [Sebastien Pouliot]
Contributors for this release are:
Andres G. Aragoneses, Cedric Vivier, Daniel Abramov, JB Evain,
Nestor Salceda, Scott Peterson, Sebastien Pouliot, Seo Sanghyeon.
2008-01-31 Version 0.0.5
This time Google Highly Open Participation (GHOP) was the main
source of new rules for Gendarme (Daniel Abramov, Andreas Noever,
Adrian Tsai) and even a Gendarme logo (Steve P).
Many thanks to all of them and to Google!
Other news includes:
* More rules: while GHOP added 40 rules, other contributors added
7 more rules.
* Gendarme.Framework.Rocks: A new namespace, inside gendarme's
framework, introduce several extensions methods to ease rule
creation and avoid code duplication.
* Updated rules to be more friendly toward C# 3 code (e.g.
auto-implemented properties)
* Enhancements to existing rules to reduce false-positives. Even
with all the new rules the number of false-positives is lower
than before and Gendarme's self-test looks even better!
New rules by alphabetical order:
Gendarme.Rules.BadPractice
* CheckNewExceptionWithoutThrowingRule [Andreas Noever]
* CheckNewThreadWithoutStartRule [Andreas Noever]
* ConstructorShouldNotCallVirtualMethodsRule [Daniel Abramov]
* GetEntryAssemblyMayReturnNullRule [Daniel Abramov]
Gendarme.Rules.Concurrency
* NonConstantStaticFieldsShouldNotBeVisible [Andreas Noever]
Gendarme.Rules.Correctness
* DontCompareWithNaNRule [Sebastien Pouliot]
Gendarme.Rules.Design
* AbstractTypesShouldNotHavePublicConstructorsRule [Sebastien Pouliot]
* AttributeArgumentsShouldHaveAccessors [Daniel Abramov]
* AvoidEmptyInterfaceRule [Sebastien Pouliot]
* AvoidPropertiesWithoutGetAccessorRule [Sebastien Pouliot]
* AvoidPublicInstanceFieldsRule [Adrian Tsai]
* ConsiderConvertingMethodToPropertyRule [Adrian Tsai]
* DisposableFieldsShouldBeDisposedRule [Andreas Noever]
* DisposableTypesShouldHaveFinalizerRule [Andreas Noever]
* EnsureSymmetryForOverloadedOperatorsRule [Andreas Noever]
* EnumsShouldDefineAZeroValueRule [Sebastien Pouliot]
* FinalizersShouldBeProtectedRule [Daniel Abramov]
* FinalizersShouldCallBaseClassFinalizerRule [Daniel Abramov]
* FlagsShouldNotDefineAZeroValueRule [Sebastien Pouliot]
* MainShouldNotBePublicRule [Daniel Abramov]
* MissingAttributeUsageOnCustomAttributeRule [Daniel Abramov]
* OperatorEqualsShouldBeOverloadedRule [Andreas Noever]
* OverrideEqualsMethodRule [Andreas Noever]
* ProvideAlternativeNamesForOperatorOverloadsRule [Andreas Noever]
* TypesShouldBeInsideNamespacesRule [Sebastien Pouliot]
* TypesWithDisposableFieldsShouldBeDisposableRule [Andreas Noever]
* TypesWithNativeFieldsShouldBeDisposableRule [Andreas Noever]
Gendarme.Rules.Interoperability (new)
* GetLastErrorMustBeCalledRightAfterPInvokeRule [Andreas Noever]
* MarshalStringsInPInvokeDeclarationsRule [Daniel Abramov]
* PInvokeShouldNotBeVisibleRule [Andreas Noever]
* UseManagedAlternativesToPInvokeRule [Daniel Abramov]
Gendarme.Rules.Naming
* DoNotPrefixValuesWithEnumNameRule [Andreas Noever]
* DoNotUseReservedInEnumValueNamesRule [Andreas Noever]
* ParameterNamesShouldMatchOverridenMethodRule [Andreas Noever]
* UseCorrectCasing [Daniel Abramov]
* UseCorrectPrefixRule [Daniel Abramov]
* UseCorrectSuffixRule [Daniel Abramov]
* UsePreferredTermsRule [Daniel Abramov]
Gendarme.Rules.Performance
* AvoidReturningArraysOnPropertiesRule [Adrian Tsai]
* AvoidUnsealedConcreteAttributesRule [Daniel Abramov]
Gendarme.Rules.Portability
* ExitCodeIsLimitedOnUnixRule [Daniel Abramov]
* FeatureRequiresRootPrivilegeOnUnixRule [Andreas Noever]
* MonoCompatibilityReviewRule [Andreas Noever]
Gendarme.Rules.Security
* ArrayFieldsShouldNotBeReadOnlyRule [Andreas Noever]
* NativeFieldsShouldNotBeVisibleRule [Andreas Noever]
* StaticConstructorsShouldBePrivateRule [Daniel Abramov]
Gendarme.Rules.Ui
* UseSTAThreadAttributeOnSWFEntryPointsRule [Daniel Abramov]
2007-12-20 Version 0.0.4
After a long time, many fixes, useful features (e.g. inclusion and
exclusion) and hours trimming down false positives, we're proud to
announce Gendarme 0.0.4!
Many of the new rules were contributed during the Google Summer
of Code 2007.
Gendarme.Rules.BadPractice
* CloneMethodShouldNotReturnNullRule [Nidhi Rawal]
* EqualShouldHandleNullArgRule [Nidhi Rawal]
* ImplementingEqualsButNotGetHashCodeAndViceVersaRule [Nidhi Rawal]
* ToStringReturnsNullRule [Nidhi Rawal]
Gendarme.Rules.Concurrency
* WriteStaticFieldFromInstanceMethodRule [Sebastien Pouliot]
Gendarme.Rules.Correcness
* AvoidConstructorsInStaticTypesRule [Lukasz Knop]
* CallingEqualsWithNullArgRule [Nidhi Rawal]
* FloatComparisonRule [Lukasz Knop]
* MethodCanBeMadeStaticRule [JB Evain]
* UseValueInPropertySetterRule [Lukasz Knop]
Gendarme.Rules.Design (new)
* DontDeclareProtectedFieldsInSealedClassRule [Nidhi Rawal]
* UsingCloneWithoutImplementingICloneableRule [Nidhi Rawal]
Gendarme.Rules.Exceptions
* DontSwallowErrorsCatchingNonspecificExceptionRule [Nestor Salceda]
Gendarme.Rules.Naming (new)
* AttributesEndsWithAttributeSuffixRule [Nestor Salceda]
* DetectNonAlphaNumericsInTypeNamesRule [Nidhi Rawal]
* EnumsNotEndsWIthEnumOrFlagsSuffixRule [Nestor Salceda]
* UsePluralNameInEnumFlagsRule [Nestor Salceda]
* UseSingularNameInEnumsUnlessAreFlagsRule [Nestor Salceda]
Gendarme.Rules.Performance
* AvoidToStringOnStringRule [Lukasz Knop]
* AvoidUncalledPrivateCodeRule [Nidhi Rawal]
* AvoidUninstantiatedInternalClassesRule [Nidhi Rawal]
* AvoidUnusedParametersRule [Nestor Salceda]
* DontIgnoreMethodResultRule [Lukasz Knop]
Gendarme.Rules.Smells (new)
* AvoidCodeDuplicatedInSameClassRule [Nestor Salceda]
* AvoidCodeDuplicatedInSiblingClassesRule [Nestor Salceda]
* AvoidLargeClassRule [Nestor Salceda]
* AvoidLongMethodsRule [Nestor Salceda]
* AvoidLongParameterListsRule [Nestor Salceda]
* AvoidSpeculativeGeneralityRule [Nestor Salceda]
Gendarme.Rules.Ui (new)
* GtkSharpExecutableTargetRule [Sebastien Pouliot]
* SystemWindowsFormsExecutableTargetRule [Sebastien Pouliot]
A special thanks to Nestor Salceda for his continuing dedication
to the project including a lot of "not so fun" (but so important)
tasks, like merging, rule documentation & bug hunting. You rock!
2006-10-16 Version 0.0.3
* New rule for String.Empty [Sebastien Pouliot]
* New XML and HTML (via XSL transform) output [Christian Birkl,
Sebastien Pouliot]
* Updated to latest Cecil API [JBEvain]
2006-06-19 Version 0.0.2
* Aaron Tomb added new rules for Concurrency and Correctness (based
on his works in Google's Summer of Code 2005) and updated the
framework;
* Russell Morris added new rules for exceptions management.
2005-11-03 Version 0.0.1
* Initial version. Expect everything to change before 0.0.2 ;-)