diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index f63e4e14..17d2aacc 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -13,6 +13,7 @@ on:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
+ types: [opened, synchronize, reopened]
jobs:
build:
@@ -25,14 +26,37 @@ jobs:
steps:
- uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Shallow clones should be disabled for better SonarCloud analysis
+
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- distribution: 'temurin'
+ distribution: 'zulu'
cache: maven
+
+ - name: Cache SonarCloud packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.sonar/cache
+ key: ${{ runner.os }}-sonar
+ restore-keys: ${{ runner.os }}-sonar
+
+ - name: Cache Maven packages
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
- name: Build with Maven
- run: mvn -B verify -Pmetrics --file pom.xml
+ run: mvn -B install -Pmetrics --file pom.xml
+
+ - name: SonarCloud Analysis
+ env:
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+ run: mvn -B org.sonarsource.scanner.maven:sonar-maven-plugin:sonar --file pom.xml
- name: Upload JaCoCo HTML report (processor)
if: always()
@@ -52,19 +76,18 @@ jobs:
- name: Upload test results to Codecov (processor)
if: always()
- uses: codecov/test-results-action@v1
+ uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: |
processor/target/surefire-reports/*.xml
processor/target/failsafe-reports/*.xml
- if-no-files-found: warn
fail_ci_if_error: true
verbose: false
- name: Upload coverage to Codecov (processor)
if: always()
- uses: codecov/codecov-action@v5
+ uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a # v5.0.7
with:
fail_ci_if_error: true
files: processor/target/site/jacoco/jacoco.xml
diff --git a/pom.xml b/pom.xml
index 55c7ed25..e1ba8ab2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,6 +67,17 @@
${java.version}
${java.version}
+
+ java-helpers_simple-builders
+ java-helpers
+ Simple Builders
+ https://sonarcloud.io
+ ${project.basedir}/core/target/classes,${project.basedir}/processor/target/classes
+ ${project.basedir}/processor/target/site/jacoco/jacoco.xml
+ **/example/**
+
+ **/*Mapper*.java,**/processor/dtos/**,**/generated/**
+
3.13.0
3.1.1
@@ -76,6 +87,7 @@
3.2.7
0.8.0
2.25
+ 5.2.0.4988
@@ -106,6 +118,13 @@
fmt-maven-plugin
${plugin.code-format.version}
+
+
+
+ org.sonarsource.scanner.maven
+ sonar-maven-plugin
+ ${plugin.sonar.version}
+
diff --git a/processor/pom.xml b/processor/pom.xml
index 3c706e0c..52904c08 100644
--- a/processor/pom.xml
+++ b/processor/pom.xml
@@ -309,11 +309,6 @@
${project.build.directory}/jacoco.exec
${project.reporting.outputDirectory}/jacoco
-
- html
- xml
- csv
-
**/generated/**
diff --git a/sonar-project.properties b/sonar-project.properties
new file mode 100644
index 00000000..a243bda1
--- /dev/null
+++ b/sonar-project.properties
@@ -0,0 +1,23 @@
+# SonarCloud Configuration
+sonar.projectKey=java-helpers_simple-builders
+sonar.organization=java-helpers
+
+# Project Information
+sonar.projectName=Simple Builders
+sonar.projectVersion=0.2.0
+
+# Source and Test Directories
+sonar.sources=core/src/main/java,processor/src/main/java
+sonar.tests=processor/src/test/java
+sonar.java.binaries=core/target/classes,processor/target/classes
+sonar.java.test.binaries=processor/target/test-classes
+
+# Coverage
+sonar.coverage.jacoco.xmlReportPaths=processor/target/site/jacoco/jacoco.xml
+
+# Exclusions
+sonar.exclusions=**/generated/**,example/**
+sonar.coverage.exclusions=**/*Mapper*.java,**/processor/dtos/**,**/generated/**,example/**
+
+# Java Version
+sonar.java.source=17