Jump to navigation

Poupou's Corner of the Web

Looking for perfect security? Try a wireless brick.
Otherwise you may find some unperfect stuff here...


Gendarme 0.2

Mono has branched for 2.0! Quite a good news for everyone. It's also a great moment for all gendarmes because it means we branched too!

The Gendarme 0.2 release includes the results of the last six months of hacking, 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 Néstor 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
  • New Windows installer: You can now easily enjoy Gendarme, and it's wizard, from Windows computers
  • .desktop file for the Wizard runner
  • Console runner now uses color when displaying on the console
  • Albeit a bit invisible to end users, we started using the new unit test helpers made during GHOP
  • Bug fixes: works continue, like previous releases, to remove false positives from existing rules
  • and a lot of new rules including...


  • AvoidCallingProblematicMethodsRule
  • AvoidVisibleConstantFieldRule
  • DoNotForgetNotImplementedMethodsRule
  • DisableDebuggingCodeRule
  • ObsoleteMessagesShouldNotBeEmptyRule
  • ReplaceIncompleteOddnessCheckRule


  • DoNotLockOnThisOrTypesRule
  • DoNotLockOnWeakIdentityObjectsRule
  • DoNotUseLockedRegionOutsideMethodRule


  • DoNotRoundIntegersRule
  • ReviewDoubleAssignmentRule
  • ReviewSelfAssignmentRule
  • ReviewUselessControlFlow
  • ReviewUseOfInt64BitsToDoubleRule
  • ReviewUseOfModuloOneOnIntegersRule


  • AvoidMultidimensionalIndexerRule
  • AvoidRefAndOutParametersRule
  • AvoidVisibleNestedTypesRule
  • ConsiderConvertingFieldToNullableRule
  • ConsiderUsingStaticTypeRule
  • ImplementGenericCollectionInterfacesRule
  • ImplementIComparableCorreclyRule
  • PreferIntegerOrStringForIndexersRule


  • AvoidArgumentExceptionDefaultConstructorRule
  • AvoidThrowingBasicExceptionsRule
  • DoNotThrowReservedExceptionRule
  • ExceptionShouldBeVisibleRule
  • MissingExceptionConstructorsRule


  • DoNotCastIntPtrToInt32Rule

Gendarme.Rules.Maintainability (new)

  • AvoidComplexMethodsRule
  • AvoidDeepInheritanceTreeRule
  • AvoidLackOfCohesionOfMethodRule
  • ConsiderUsingStopwatchRule
  • PreferStringIsNullOrEmptyRule


  • DoNotPrefixEventsWithAfterOrBeforeRule


  • AvoidLargeNumberOfLocalVariablesRule
  • AvoidLargeStructureRule
  • AvoidRepetitiveCastsRule
  • AvoidTypeGetTypeWhenPossibleRule
  • AvoidUnusedPrivateFieldsRule
  • AvoidUnneededUnboxingRule
  • AvoidUnsealedUninheritedInternalClassesRule
  • ImplementEqualsTypeRule
  • OverrideValueTypeDefaultsRule
  • RemoveUnusedLocalVariablesRule
  • UseIsOperatorRule
  • UseTypeEmptyTypesRule


  • DoNotHardcodePathsRule

Gendarme.Rules.Serialization (new)

  • CallBaseMethodsOnISerializableTypesRule
  • DeserializeOptionalFieldRule
  • ImplementISerializableCorrectlyRule
  • MarkAllNonSerializableFieldsRule
  • MissingSerializableAttributeOnISerializableTypeRule
  • MissingSerializationConstructorRule
  • UseCorrectSignatureForSerializationMethodsRule

Contributors for this release are:
Andres G. Aragoneses, Cedric Vivier, Daniel Abramov, JB Evain, Nestor Salceda, Scott Peterson, Sebastien Pouliot, Seo Sanghyeon.

Availability: Preview packages should be available soon (Gendarme resides inside mono-tools). I'll update the Win32 installer asap (probably tomorrow night), check the Files section of the group to get it. Now is the time for testing and reporting :-) Thanks to everyone!

7/16/2008 23:15:34 | Comments

The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of my employer.