We use a set of architctural rules defined in GtGtoolkitArchitecturalReport
GtConstrainerReport subclass: #GtGtoolkitArchitecturalReport
instanceVariableNames: ''
classVariableNames: ''
package: 'GToolkit-Constraints'
to ensure various architectural rules that have value for us are respected. We run this report during the release process. In case one of these architectural rules is not satisfied we do not release.
The current status of the report is shown below.
To report is created in the method GtGtoolkitArchitecturalReport>>#build:
build: aComposite
aComposite name: 'GToolkit Architectural Report'.
aComposite
addConstraint: GtClassWithCommentsContainingMissingReferences new;
addConstraint: GtReturnPragmasShouldPointToExistingClasses new;
addConstraint: GtRBAcceptVisitorCalledFromNonVisitingMethods new;
addConstraint: GtButtonsDefiningActionsThroughModels new;
addConstraint: GtLooksSubscribingToEventsNotFromInitializeListenerMethods new;
addConstraint: GtBlocEventsShouldHaveDispatchMethodSimilarToClass new;
addConstraint: GtBlocStencilBuilderShouldImplementReset new;
addConstraint: GtSubscriptionsShouldNotUseDeliveryConditionWhere new;
addConstraint: GtWeakSubscriptionsWithBlockSubscribers new;
addConstraint: GtGlamorousToolkitBookPagesContainingMissingReferences new;
"addConstraint: GtBaselinesShouldProperlySpecifyDependencies new;"
addConstraint: GSubclassesOfExternalObjectShouldImplementStartUp new;
addConstraint: GtAnnouncementSubscriberShouldNotBeChanged new;
addConstraint: GtBoxerExternalObjectsShouldOnlyImplementFFILibrary new;
addConstraint: GtDoNotManuallyFindThisContextMethodDefinition new;
addConstraint: GtPharoPackageDependenciesConstraint new;
addConstraint: GtEqualsMethodsShouldReturnAValueConstraint new;
addConstraint: GtHashMethodsShouldReturnAValueConstraint new;
addConstraint: GtClassesImplementingEqualsShouldAlsoHaveHashConstraint new;
addConstraint: GtClassesShouldNotOverrideGtDisplayStringConstraint new;
addConstraint: GtMethodsWithUndeclaredVariablesConstraint new