From 407101c2c57e23b6dd4390799a8db18000ea5055 Mon Sep 17 00:00:00 2001 From: Kris <1611248+Rinzwind@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:08:44 +0200 Subject: [PATCH 1/2] Added ReNoPeriodAfterReturnRule. --- .../ReNoPeriodAfterReturnRuleTest.class.st | 48 +++++++++++++++++++ .../ReNoPeriodAfterReturnRule.class.st | 46 ++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 PharoWithStyle-Tests/ReNoPeriodAfterReturnRuleTest.class.st create mode 100644 PharoWithStyle/ReNoPeriodAfterReturnRule.class.st diff --git a/PharoWithStyle-Tests/ReNoPeriodAfterReturnRuleTest.class.st b/PharoWithStyle-Tests/ReNoPeriodAfterReturnRuleTest.class.st new file mode 100644 index 0000000..f8ace1d --- /dev/null +++ b/PharoWithStyle-Tests/ReNoPeriodAfterReturnRuleTest.class.st @@ -0,0 +1,48 @@ +Class { + #name : #ReNoPeriodAfterReturnRuleTest, + #superclass : #ReAbstractRuleTestCase, + #category : #'PharoWithStyle-Tests' +} + +{ #category : #examples } +ReNoPeriodAfterReturnRuleTest >> lastPeriods [ + + #(true false) atRandom ifTrue: [ + self crTrace: '1'. + self crTrace: '2'. ]. + self crTrace: '3'. + self crTrace: '4'. +] + +{ #category : #helpers } +ReNoPeriodAfterReturnRuleTest >> myCritiquesOnNodesInMethod: aMethod [ + + | critiques | + + critiques := OrderedCollection new. + aMethod ast nodesDo: [ :node | + self subjectUnderTest new + check: node forCritiquesDo:[ :critique | critiques add: critique ] ]. + ^ critiques +] + +{ #category : #violations } +ReNoPeriodAfterReturnRuleTest >> periodAfterReturn [ + + #(true false) atRandom ifTrue: [ + self crTrace: '1'. + ^ self crTrace: '2'. ]. + self crTrace: '3'. + ^ self crTrace: '4'. +] + +{ #category : #tests } +ReNoPeriodAfterReturnRuleTest >> testRule [ + + | critiques | + + critiques := self myCritiquesOnNodesInMethod: self class >> #periodAfterReturn. + self assert: critiques size equals: 2. + critiques := self myCritiquesOnNodesInMethod: self class >> #lastPeriods. + self assert: critiques size equals: 0 +] diff --git a/PharoWithStyle/ReNoPeriodAfterReturnRule.class.st b/PharoWithStyle/ReNoPeriodAfterReturnRule.class.st new file mode 100644 index 0000000..7c33109 --- /dev/null +++ b/PharoWithStyle/ReNoPeriodAfterReturnRule.class.st @@ -0,0 +1,46 @@ +Class { + #name : #ReNoPeriodAfterReturnRule, + #superclass : #ReNodeBasedRule, + #category : #PharoWithStyle +} + +{ #category : #helpers } +ReNoPeriodAfterReturnRule >> anchorFor: aNode [ + + ^ ReIntervalSourceAnchor + entity: aNode + interval: (Interval from: aNode parent periods last to: aNode parent periods last + 1) +] + +{ #category : #running } +ReNoPeriodAfterReturnRule >> basicCheck: node [ + + ^ node isReturn and: [ + node == node parent statements last and: [ + node parent periods notEmpty and: [ + node parent periods last > node stop ] ] ] +] + +{ #category : #accessing } +ReNoPeriodAfterReturnRule >> group [ + + ^ 'Formatting' +] + +{ #category : #accessing } +ReNoPeriodAfterReturnRule >> name [ + + ^ 'Return statements should not end with a period' +] + +{ #category : #accessing } +ReNoPeriodAfterReturnRule >> rationale [ + + ^ 'Return statements are conventionally not ended with a period as they cannot be followed by another statement.' +] + +{ #category : #accessing } +ReNoPeriodAfterReturnRule >> severity [ + + ^ #information +] From aa85adb59c530e65b23e9a3c6eb6dcb7dfadd6f8 Mon Sep 17 00:00:00 2001 From: Kris <1611248+Rinzwind@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:09:13 +0200 Subject: [PATCH 2/2] Removed ReUnnecessaryLastPeriodRule. --- .../ReUnnecessaryLastPeriodRuleTest.class.st | 44 ------------------- .../ReUnnecessaryLastPeriodRule.class.st | 40 ----------------- 2 files changed, 84 deletions(-) delete mode 100644 PharoWithStyle-Tests/ReUnnecessaryLastPeriodRuleTest.class.st delete mode 100644 PharoWithStyle/ReUnnecessaryLastPeriodRule.class.st diff --git a/PharoWithStyle-Tests/ReUnnecessaryLastPeriodRuleTest.class.st b/PharoWithStyle-Tests/ReUnnecessaryLastPeriodRuleTest.class.st deleted file mode 100644 index e6215b2..0000000 --- a/PharoWithStyle-Tests/ReUnnecessaryLastPeriodRuleTest.class.st +++ /dev/null @@ -1,44 +0,0 @@ -Class { - #name : #ReUnnecessaryLastPeriodRuleTest, - #superclass : #ReAbstractRuleTestCase, - #category : #'PharoWithStyle-Tests' -} - -{ #category : #examples } -ReUnnecessaryLastPeriodRuleTest >> lastPeriods [ - - | collection | - collection := OrderedCollection new. - collection do: [ :e | 1. 2 ]. - 1. 2 -] - -{ #category : #helpers } -ReUnnecessaryLastPeriodRuleTest >> myCritiquesOnNodesInMethod: aMethod [ - - | critiques | - critiques := OrderedCollection new. - aMethod ast nodesDo: [ :node | - self subjectUnderTest new - check: node forCritiquesDo:[ :critique | critiques add: critique ] ]. - ^ critiques -] - -{ #category : #tests } -ReUnnecessaryLastPeriodRuleTest >> testRule [ - - | critiques | - critiques := self myCritiquesOnNodesInMethod: self class >> #unnecessaryLastPeriod. - self assert: critiques size equals: 2. - critiques := self myCritiquesOnNodesInMethod: self class >> #lastPeriods. - self assert: critiques size equals: 0 -] - -{ #category : #violations } -ReUnnecessaryLastPeriodRuleTest >> unnecessaryLastPeriod [ - - | collection | - collection := OrderedCollection new. - collection do: [ :e | 1. 2. ]. - 1. 2. -] diff --git a/PharoWithStyle/ReUnnecessaryLastPeriodRule.class.st b/PharoWithStyle/ReUnnecessaryLastPeriodRule.class.st deleted file mode 100644 index 881a187..0000000 --- a/PharoWithStyle/ReUnnecessaryLastPeriodRule.class.st +++ /dev/null @@ -1,40 +0,0 @@ -Class { - #name : #ReUnnecessaryLastPeriodRule, - #superclass : #ReNodeBasedRule, - #category : #PharoWithStyle -} - -{ #category : #helpers } -ReUnnecessaryLastPeriodRule >> anchorFor: aNode [ - - ^ ReIntervalSourceAnchor - entity: aNode statements last - interval: (Interval from: aNode periods last to: aNode periods last + 1) -] - -{ #category : #running } -ReUnnecessaryLastPeriodRule >> basicCheck: node [ - - ^ node isSequence and: [ - node statements notEmpty and: [ - node periods notEmpty and: [ - node periods last > node statements last stop ] ] ] -] - -{ #category : #accessing } -ReUnnecessaryLastPeriodRule >> group [ - - ^ 'Formatting' -] - -{ #category : #accessing } -ReUnnecessaryLastPeriodRule >> name [ - - ^ 'Unnecessary Last Period' -] - -{ #category : #accessing } -ReUnnecessaryLastPeriodRule >> rationale [ - - ^ 'Periods are not needed after the last statement.' -]