diff --git a/.github/workflows/codenarc.yml b/.github/workflows/codenarc.yml
new file mode 100644
index 0000000000..1b436eeaf1
--- /dev/null
+++ b/.github/workflows/codenarc.yml
@@ -0,0 +1,50 @@
+# The MIT License (MIT)
+#
+# Copyright (c) 2016-2024 Objectionary.com
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+---
+name: codenarc
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+jobs:
+ codenarc:
+ name: codenarc
+ runs-on: ubuntu-24.04
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: 17
+ - run: |
+ wget --quiet https://repo1.maven.org/maven2/org/codenarc/CodeNarc/3.5.0/CodeNarc-3.5.0-all.jar
+ java -cp CodeNarc-3.5.0-all.jar \
+ org.codenarc.CodeNarc \
+ -report=text:stdout \
+ -maxPriority1Violations=0 \
+ -maxPriority2Violations=50 \
+ -maxPriority3Violations=200 \
+ -failOnError=true \
+ -rulesetfiles=rulesets/basic.xml,rulesets/braces.xml,rulesets/comments.xml,rulesets/concurrency.xml,rulesets/convention.xml,rulesets/design.xml,rulesets/dry.xml,rulesets/enhanced.xml,rulesets/exceptions.xml,rulesets/formatting.xml,rulesets/generic.xml,rulesets/groovyism.xml,rulesets/imports.xml,rulesets/logging.xml,rulesets/naming.xml,rulesets/size.xml,rulesets/unnecessary.xml,rulesets/unused.xml
diff --git a/eo-runtime/pom.xml b/eo-runtime/pom.xml
index 803d1c0482..208627d689 100644
--- a/eo-runtime/pom.xml
+++ b/eo-runtime/pom.xml
@@ -219,6 +219,7 @@ SOFTWARE.
assemble
lint
transpile
+ xmir-to-phi
copy
unplace
unspile
@@ -241,6 +242,7 @@ SOFTWARE.
deps
assemble
lint
+ xmir-to-phi
transpile
binarize
diff --git a/eo-runtime/src/test/groovy/check-all-java-classes-compiled.groovy b/eo-runtime/src/test/groovy/check-all-java-classes-compiled.groovy
index 888b5237af..f8661aa232 100644
--- a/eo-runtime/src/test/groovy/check-all-java-classes-compiled.groovy
+++ b/eo-runtime/src/test/groovy/check-all-java-classes-compiled.groovy
@@ -27,6 +27,7 @@ import java.nio.file.Path
import java.util.stream.Collectors
println 'Verify that all java classes were compiled successfully'
+
Path binaries = basedir.toPath()
.resolve("target")
.resolve("classes")
@@ -37,7 +38,7 @@ Path classes = basedir.toPath()
.resolve("main")
.resolve("java")
.resolve("org")
- .resolve("eolang");
+ .resolve("eolang")
Set expected = Files.walk(classes)
.filter(it -> {
it.toString().endsWith(".java")
@@ -62,4 +63,4 @@ if (!actual.containsAll(expected)) {
actual
)
)
-}
\ No newline at end of file
+}
diff --git a/eo-runtime/src/test/groovy/check-folders-numbering.groovy b/eo-runtime/src/test/groovy/check-folders-numbering.groovy
index 2e45512937..8adaa73d50 100644
--- a/eo-runtime/src/test/groovy/check-folders-numbering.groovy
+++ b/eo-runtime/src/test/groovy/check-folders-numbering.groovy
@@ -1,5 +1,3 @@
-import java.util.stream.Collectors
-
/**
* The MIT License (MIT)
*
@@ -24,6 +22,8 @@ import java.util.stream.Collectors
* SOFTWARE.
*/
+import java.util.stream.Collectors
+
target = basedir.toPath().resolve("target").resolve("eo")
List directories = target.toFile().listFiles(new FileFilter() {
@Override
@@ -40,6 +40,7 @@ List allowed = [
'6-lint',
'7-pre',
'8-transpile',
+ 'phi'
]
List allowedDirs = allowed.stream()
.map { target.resolve(it).toFile() }