From 746c1f2b54c1ccb939fba892944bce4a17c2b053 Mon Sep 17 00:00:00 2001 From: Kilian B <60846047+knowbased@users.noreply.github.com> Date: Thu, 28 May 2026 16:05:12 +0200 Subject: [PATCH 1/4] fix: baseline --- .../BaselineOfMooseRuleEngine.class.st | 9 ++-- .../BaselineOfMooseRuleEngine.class.st | 51 ------------------- 2 files changed, 3 insertions(+), 57 deletions(-) delete mode 100644 src/MooseRuleEngine/BaselineOfMooseRuleEngine.class.st diff --git a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st index 3526b86..6a564f6 100644 --- a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st +++ b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st @@ -1,6 +1,6 @@ Class { #name : 'BaselineOfMooseRuleEngine', - #superclass : 'BaselineOf', + #superclass : 'Object', #category : 'BaselineOfMooseRuleEngine', #package : 'BaselineOfMooseRuleEngine' } @@ -31,10 +31,7 @@ BaselineOfMooseRuleEngine >> defineDependencies: spec [ with: [ spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ]. - spec baseline: 'FASTJava' with: [ - spec - repository: 'github://moosetechnology/FAST-Java:v3/src'; - loads: #( 'smacc' ) ]. + ] @@ -47,7 +44,7 @@ BaselineOfMooseRuleEngine >> definePackages: spec [ spec package: 'MooseRuleEngine' - with: [ spec requires: #( 'LLMAPI' 'SonarqubePharoAPI' 'FASTJava' ) ]. + with: [ spec requires: #( 'LLMAPI' 'SonarqubePharoAPI' ) ]. spec package: 'MooseRuleEngine-Tests' with: [ spec requires: #( 'MooseRuleEngine' 'Mocketry' ) ] diff --git a/src/MooseRuleEngine/BaselineOfMooseRuleEngine.class.st b/src/MooseRuleEngine/BaselineOfMooseRuleEngine.class.st deleted file mode 100644 index 18a1488..0000000 --- a/src/MooseRuleEngine/BaselineOfMooseRuleEngine.class.st +++ /dev/null @@ -1,51 +0,0 @@ -Class { - #name : 'BaselineOfMooseRuleEngine', - #superclass : 'Object', - #category : 'MooseRuleEngine', - #package : 'MooseRuleEngine' -} - -{ #category : 'baselines' } -BaselineOfMooseRuleEngine >> baseline: spec [ - - - spec for: #common do: [ - self defineDependencies: spec. - self definePackages: spec. - self defineGroups: spec ] -] - -{ #category : 'dependencies' } -BaselineOfMooseRuleEngine >> defineDependencies: spec [ - - spec - baseline: 'Mocketry' - with: [ spec repository: 'github://dionisiydk/Mocketry' ]. - - spec - baseline: 'LLMAPI' - with: [ spec repository: 'github://Evref-BL/Pharo-LLMAPI:main/src' ]. - - spec - baseline: 'SonarqubePharoAPI' - with: [ - spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ]. - - - -] - -{ #category : 'groups' } -BaselineOfMooseRuleEngine >> defineGroups: spec [ -] - -{ #category : 'packages' } -BaselineOfMooseRuleEngine >> definePackages: spec [ - - spec - package: 'MooseRuleEngine' - with: [ spec requires: #( 'LLMAPI' 'SonarqubePharoAPI' ) ]. - spec - package: 'MooseRuleEngine-Tests' - with: [ spec requires: #( 'MooseRuleEngine' 'Mocketry' ) ] -] From a5d291b871b067ac5a3303fc57f78683583b2b97 Mon Sep 17 00:00:00 2001 From: Kilian B <60846047+knowbased@users.noreply.github.com> Date: Thu, 28 May 2026 16:12:33 +0200 Subject: [PATCH 2/4] feat: add supported extensions in MRERule --- .../BaselineOfMooseRuleEngine.class.st | 17 ++++----- .../MRERuleTest.class.st | 12 ++++++ .../MooseRuleEngineTest.class.st | 38 +++++++++++++++++++ src/MooseRuleEngine-Tests/RuleMock1.class.st | 6 +++ .../RuleMockJava.class.st | 12 ++++++ src/MooseRuleEngine/MRERule.class.st | 13 +++++++ src/MooseRuleEngine/MooseRuleEngine.class.st | 8 ++-- 7 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 src/MooseRuleEngine-Tests/RuleMockJava.class.st diff --git a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st index 6a564f6..ea8b537 100644 --- a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st +++ b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st @@ -1,6 +1,6 @@ Class { #name : 'BaselineOfMooseRuleEngine', - #superclass : 'Object', + #superclass : 'BaselineOf', #category : 'BaselineOfMooseRuleEngine', #package : 'BaselineOfMooseRuleEngine' } @@ -21,22 +21,21 @@ BaselineOfMooseRuleEngine >> defineDependencies: spec [ spec baseline: 'Mocketry' with: [ spec repository: 'github://dionisiydk/Mocketry' ]. - + spec baseline: 'LLMAPI' with: [ spec repository: 'github://Evref-BL/Pharo-LLMAPI:main/src' ]. - - spec - baseline: 'SonarqubePharoAPI' - with: [ - spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ]. - - + spec + baseline: 'SonarqubePharoAPI' + with: [ + spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ] ] { #category : 'groups' } BaselineOfMooseRuleEngine >> defineGroups: spec [ + + ] { #category : 'packages' } diff --git a/src/MooseRuleEngine-Tests/MRERuleTest.class.st b/src/MooseRuleEngine-Tests/MRERuleTest.class.st index c966b42..d7edca7 100644 --- a/src/MooseRuleEngine-Tests/MRERuleTest.class.st +++ b/src/MooseRuleEngine-Tests/MRERuleTest.class.st @@ -8,6 +8,18 @@ Class { #package : 'MooseRuleEngine-Tests' } +{ #category : 'tests' } +MRERuleTest >> testDoesNotApplyWithoutSupportedExtensions [ + + | rule file | + rule := MRERule new. + file := MREFile new + path: 'test.java'; + content: 'content'. + + self deny: (rule appliesToFile: file) +] + { #category : 'tests' } MRERuleTest >> testGetHelper [ diff --git a/src/MooseRuleEngine-Tests/MooseRuleEngineTest.class.st b/src/MooseRuleEngine-Tests/MooseRuleEngineTest.class.st index 906720a..382ea97 100644 --- a/src/MooseRuleEngine-Tests/MooseRuleEngineTest.class.st +++ b/src/MooseRuleEngine-Tests/MooseRuleEngineTest.class.st @@ -71,6 +71,44 @@ MooseRuleEngineTest >> testDetectAndFix [ self assert: result size equals: 1 ] +{ #category : 'tests' } +MooseRuleEngineTest >> testDetectIgnoresUnsupportedFiles [ + + | violations | + ruleEngine rules: { rule1 }. + ruleEngine files: { + file1. + file2 }. + + violations := ruleEngine detect. + + self assert: violations size equals: 1. + self assert: violations first rule equals: rule1 +] + +{ #category : 'tests' } +MooseRuleEngineTest >> testDetectMixedRuleTypes [ + + | javaRule violations | + javaRule := RuleMockJava new. + ruleEngine rules: { + rule1. + javaRule }. + ruleEngine files: { + file1. + file2 }. + + violations := ruleEngine detect. + + self assert: violations size equals: 2. + self + assertCollection: + (violations collect: [ :violation | violation rule ]) + hasSameElements: { + rule1. + javaRule } +] + { #category : 'tests' } MooseRuleEngineTest >> testDetectWithoutFiles [ diff --git a/src/MooseRuleEngine-Tests/RuleMock1.class.st b/src/MooseRuleEngine-Tests/RuleMock1.class.st index 0571647..65816a3 100644 --- a/src/MooseRuleEngine-Tests/RuleMock1.class.st +++ b/src/MooseRuleEngine-Tests/RuleMock1.class.st @@ -20,3 +20,9 @@ RuleMock1 >> fix: violation [ fix := MREFix new. ^ { fix } ] + +{ #category : 'accessing' } +RuleMock1 >> supportedExtensions [ + + ^ #( 'ts' ) +] diff --git a/src/MooseRuleEngine-Tests/RuleMockJava.class.st b/src/MooseRuleEngine-Tests/RuleMockJava.class.st new file mode 100644 index 0000000..a175f19 --- /dev/null +++ b/src/MooseRuleEngine-Tests/RuleMockJava.class.st @@ -0,0 +1,12 @@ +Class { + #name : 'RuleMockJava', + #superclass : 'RuleMock1', + #category : 'MooseRuleEngine-Tests', + #package : 'MooseRuleEngine-Tests' +} + +{ #category : 'accessing' } +RuleMockJava >> supportedExtensions [ + + ^ #( 'java' ) +] diff --git a/src/MooseRuleEngine/MRERule.class.st b/src/MooseRuleEngine/MRERule.class.st index d36a7bc..92878ed 100644 --- a/src/MooseRuleEngine/MRERule.class.st +++ b/src/MooseRuleEngine/MRERule.class.st @@ -18,6 +18,13 @@ MRERule >> analyse: file [ ^self subclassResponsibility ] +{ #category : 'testing' } +MRERule >> appliesToFile: file [ + + ^ self supportedExtensions includes: + file path asFileReference extension asLowercase +] + { #category : 'accessing' } MRERule >> description [ @@ -87,3 +94,9 @@ MRERule >> name: anObject [ name := anObject ] + +{ #category : 'accessing' } +MRERule >> supportedExtensions [ + + ^ #( ) +] diff --git a/src/MooseRuleEngine/MooseRuleEngine.class.st b/src/MooseRuleEngine/MooseRuleEngine.class.st index 5e0dced..7006b27 100644 --- a/src/MooseRuleEngine/MooseRuleEngine.class.st +++ b/src/MooseRuleEngine/MooseRuleEngine.class.st @@ -19,13 +19,13 @@ MooseRuleEngine >> addHelper: helper [ { #category : 'as yet unclassified' } MooseRuleEngine >> detect [ + | violations | violations := rules collect: [ :rule | - files collect: [ :file | rule analyse: file ]. - ]. + (files select: [ :file | rule appliesToFile: file ]) + collect: [ :file | rule analyse: file ] ]. - ^ violations flattened - + ^ violations flattened ] { #category : 'as yet unclassified' } From 9e31930da6b7023cc397a8e44fba8974d71240b3 Mon Sep 17 00:00:00 2001 From: Kilian B <60846047+knowbased@users.noreply.github.com> Date: Thu, 28 May 2026 16:23:34 +0200 Subject: [PATCH 3/4] ci: add FASTJava in baseline for tests --- .../BaselineOfMooseRuleEngine.class.st | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st index ea8b537..5535161 100644 --- a/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st +++ b/src/BaselineOfMooseRuleEngine/BaselineOfMooseRuleEngine.class.st @@ -29,7 +29,12 @@ BaselineOfMooseRuleEngine >> defineDependencies: spec [ spec baseline: 'SonarqubePharoAPI' with: [ - spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ] + spec repository: 'github://Evref-BL/Sonarqube-Pharo-API:develop' ]. + + spec baseline: 'FASTJava' with: [ + spec + repository: 'github://moosetechnology/FAST-Java:v3/src'; + loads: #( 'smacc' ) ] ] { #category : 'groups' } @@ -46,5 +51,5 @@ BaselineOfMooseRuleEngine >> definePackages: spec [ with: [ spec requires: #( 'LLMAPI' 'SonarqubePharoAPI' ) ]. spec package: 'MooseRuleEngine-Tests' - with: [ spec requires: #( 'MooseRuleEngine' 'Mocketry' ) ] + with: [ spec requires: #( 'MooseRuleEngine' 'Mocketry' 'FASTJava' ) ] ] From 0466b60adcd9e941339a4effbe41faaa14ee55e9 Mon Sep 17 00:00:00 2001 From: Kilian B <60846047+knowbased@users.noreply.github.com> Date: Thu, 28 May 2026 16:40:42 +0200 Subject: [PATCH 4/4] feat: add language trait --- src/MooseRuleEngine/TJavaRule.trait.st | 11 +++++++++++ src/MooseRuleEngine/TTypescriptRule.trait.st | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/MooseRuleEngine/TJavaRule.trait.st create mode 100644 src/MooseRuleEngine/TTypescriptRule.trait.st diff --git a/src/MooseRuleEngine/TJavaRule.trait.st b/src/MooseRuleEngine/TJavaRule.trait.st new file mode 100644 index 0000000..514ae12 --- /dev/null +++ b/src/MooseRuleEngine/TJavaRule.trait.st @@ -0,0 +1,11 @@ +Trait { + #name : 'TJavaRule', + #category : 'MooseRuleEngine', + #package : 'MooseRuleEngine' +} + +{ #category : 'accessing' } +TJavaRule >> supportedExtensions [ + + ^ #( 'java' ) +] diff --git a/src/MooseRuleEngine/TTypescriptRule.trait.st b/src/MooseRuleEngine/TTypescriptRule.trait.st new file mode 100644 index 0000000..edfcec4 --- /dev/null +++ b/src/MooseRuleEngine/TTypescriptRule.trait.st @@ -0,0 +1,11 @@ +Trait { + #name : 'TTypescriptRule', + #category : 'MooseRuleEngine', + #package : 'MooseRuleEngine' +} + +{ #category : 'accessing' } +TTypescriptRule >> supportedExtensions [ + + ^ #( 'ts' ) +]