I spent some time yesterday evening with ben to compile a set of nice
validation rules for the monkey, this is what we came up with ;) :
CIRunTestsRule & "Only after the tests succeeded validate anything else"
( "Hard rules that lead to immediate WorkNeeded state:"
RBUnclassifiedMethodsRule harden,
RBUndeclaredReferenceRule harden,
RBNoClassCommentRule harden,
RBDefinesEqualNotHashRule harden,
RBEquivalentSuperclassMethodsRule harden,
RBJustSendsSuperRule harden,
RBSubclassResponsibilityNotDefinedRule harden,
RBTempVarOverridesInstVarRule harden,
RBUndeclaredReferenceRule harden,
RBVariableNotDefinedRule harden,
RBEqualNotUsedRule harden,
RBOnlyReadOrWrittenTemporaryRule harden,
RBPrecedenceRule harden,
RBSendsDeprecatedMethodToGlobalRule harden,
RBSizeCheckRule harden,
RBUnconditionalRecursionRule harden,
RBUnoptimizedToDoRule harden,
RBBetweenAndRule harden,
RBCodeCruftLeftInMethodsRule harden,
"Soft rules that only lead to warnings:"
RBInstanceVariableCapitalizationRule,
RBClassVariableCapitalizationRule,
RBMissingSubclassResponsibilityRule,
RBOverridesSpecialMessageRule,
RBRefersToClassRule,
RBBadMessageRule,
RBUsesTrueRule,
RBSendsDifferentSuperRule,
RBInconsistentMethodClassificationRule,
RBInstVarInSubclassesRule,
RBSentNotImplementedRule,
RBLongMethodsRule,
RBCollectionProtocolRule,
RBConsistencyCheckRule,
RBContainsRule, RBDetectContainsRule,
RBEmptyExceptionHandlerRule,
RBEndTrueFalseRule,
RBEqualsTrueRule,
RBExtraBlockRule,
RBFileBlocksRule,
RBFloatEqualityComparisonRule,
RBLiteralArrayCharactersRule,
RBMissingYourselfRule,
RBModifiesCollectionRule,
RBReturnsIfTrueRule,
RBSearchingLiteralRule,
RBUnnecessaryAssignmentRule,
RBNotEliminationRule,
RBAtIfAbsentRule,
RBAllAnyNoneSatisfyRule,
RBClassNameInSelectorRule );
Don't be scared nor offended if your issue submission will get a lot of
feedback in the near future.
We're tweaking the rules to get decent feedback and not just blind noise.