diff --git a/.github/workflows/build_jar.yml b/.github/workflows/build_jar.yml
new file mode 100644
index 0000000..7d44073
--- /dev/null
+++ b/.github/workflows/build_jar.yml
@@ -0,0 +1,74 @@
+name: Build JAR on Release
+
+on:
+ release:
+ types: [published] # Solo al publicar una release
+ workflow_dispatch:
+
+jobs:
+ build:
+ name: Build and Attach Executable JAR
+ runs-on: ubuntu-latest
+
+ permissions:
+ contents: write
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: detect-java
+ name: Detect Java from pom.xml
+ run: |
+ set -euo pipefail
+ FILE=pdf-generator/pom.xml
+ # Intenta leer las propiedades estándar del compiler plugin
+ REL=$(mvn -f "$FILE" -q -DforceStdout help:evaluate -Dexpression=maven.compiler.release || true)
+ SRC=$(mvn -f "$FILE" -q -DforceStdout help:evaluate -Dexpression=maven.compiler.source || true)
+ TGT=$(mvn -f "$FILE" -q -DforceStdout help:evaluate -Dexpression=maven.compiler.target || true)
+
+ clean() { echo "$1" | grep -E '^[0-9]+$' || true; }
+ REL=$(clean "$REL"); SRC=$(clean "$SRC"); TGT=$(clean "$TGT")
+
+ VER="${REL:-${TGT:-${SRC:-17}}}"
+ echo "version=$VER" >> "$GITHUB_OUTPUT"
+ echo "Detected Java version: $VER"
+
+ - name: Set up Temurin JDK (auto)
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: ${{ steps.detect-java.outputs.version }}
+ cache: maven
+
+ - name: Build with Maven (pdf-generator)
+ run: |
+ set -euo pipefail
+ mvn -f pdf-generator/pom.xml -B -DskipTests clean package
+ JAR_WITH_DEPS=$(ls -1 pdf-generator/target/*-jar-with-dependencies.jar | head -n 1)
+ if [ -z "${JAR_WITH_DEPS:-}" ]; then
+ echo "No se encontró el JAR con dependencias (sufijo -jar-with-dependencies.jar)"; exit 1
+ fi
+ echo "ARTIFACT_PATH=${JAR_WITH_DEPS}" >> "$GITHUB_ENV"
+
+ - name: Rename artifact using release tag (or manual)
+ run: |
+ TAG="${{ github.event.release.tag_name || 'manual' }}"
+ OUT="sonar-report-${TAG}.jar"
+ cp "$ARTIFACT_PATH" "$OUT"
+ echo "OUT=${OUT}" >> "$GITHUB_ENV"
+
+ - name: Upload workflow artifact (optional)
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.OUT }}
+ path: ${{ env.OUT }}
+ if-no-files-found: error
+ retention-days: 14
+
+ - name: Attach JAR to GitHub Release
+ if: ${{ github.event_name == 'release' }}
+ uses: softprops/action-gh-release@v2
+ with:
+ files: ${{ env.OUT }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/check_calls.yml b/.github/workflows/check_calls.yml
new file mode 100644
index 0000000..0cd6abf
--- /dev/null
+++ b/.github/workflows/check_calls.yml
@@ -0,0 +1,222 @@
+name: SonarQube API health check
+
+on:
+ pull_request:
+ branches: [ main ]
+ push:
+ branches: [ main ]
+ workflow_dispatch:
+
+jobs:
+ sonarqube-api:
+ runs-on: ubuntu-latest
+ services:
+ sonarqube:
+ image: sonarqube:latest
+ ports:
+ - 9000:9000
+ options: >-
+ --health-cmd="curl -f http://localhost:9000/api/system/status || exit 1"
+ --health-interval=10s
+ --health-timeout=5s
+ --health-retries=60
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Wait for sonar to be up
+ run: |
+ for i in {1..120}; do
+ STATUS=$(curl -s http://localhost:9000/api/system/status | jq -r '.status' || true)
+ if [ "$STATUS" = "UP" ]; then echo "SonarQube UP"; break; fi
+ echo "Status: $STATUS..."
+ sleep 5
+ done
+
+ - name: Create temporal admin token
+ run: |
+ export TOKEN_NAME="ci-token-$(date +%s)"
+ AUTH="-u admin:admin"
+ curl -sS $AUTH -X POST "http://localhost:9000/api/user_tokens/generate?name=$TOKEN_NAME" | jq -r '.token' > token.txt
+ echo "SONAR_TOKEN=$(cat token.txt)" >> $GITHUB_ENV
+
+ - name: Prepare Dummy Project
+ run: |
+ mkdir -p dummy
+ echo 'console.log(eval("1+1"))' > dummy/index.js
+ cat > dummy/sonar-project.properties << 'EOF'
+ sonar.projectKey=dummy.project
+ sonar.projectName=Dummy Project
+ sonar.sources=.
+ sonar.exclusions=**/*
+ sonar.token=${SONAR_TOKEN}
+ sonar.host.url=http://localhost:9000
+ EOF
+
+ - name: Install Sonar Scanner
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y unzip default-jre
+ curl -L -o scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
+ unzip scanner.zip
+ SCANNER_DIR=$(find . -type d -name "sonar-scanner-*" | head -n 1)
+ echo "$SCANNER_DIR/bin" >> $GITHUB_PATH
+
+ - name: Run Sonar Scanner
+ run: |
+ ./sonar-scanner-*/bin/sonar-scanner \
+ -Dsonar.projectKey=dummy.project \
+ -Dsonar.sources=. \
+ -Dsonar.exclusions=**/* \
+ -Dsonar.host.url=http://localhost:9000 \
+ -Dsonar.login=${{ env.SONAR_TOKEN }}
+
+ - name: API Testing
+ env:
+ SONAR_TOKEN: ${{ env.SONAR_TOKEN }}
+ run: |
+ set -euo pipefail
+ AUTH="Authorization: Basic $(echo -n ${SONAR_TOKEN}: | base64 -w0)"
+ response=$(mktemp)
+
+ #/api/navigation/component?component=
+ url="http://localhost:9000/api/navigation/component?component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/measures/component?metricKeys=reliability_rating,software_quality_maintainability_rating,security_rating,security_review_rating&component=
+ url="http://localhost:9000/api/measures/component?metricKeys=reliability_rating,software_quality_maintainability_rating,security_rating,security_review_rating&component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/qualitygates/project_status?projectKey=
+ url="http://localhost:9000/api/qualitygates/project_status?projectKey=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=
+ url="http://localhost:9000/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=
+ url="http://localhost:9000/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/measures/component?metricKeys=reliability_remediation_effort,security_remediation_effort,sqale_index&component=
+ url="http://localhost:9000/api/measures/component?metricKeys=reliability_remediation_effort,security_remediation_effort,sqale_index&component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/measures/component?metricKeys=ncloc_language_distribution&component=
+ url="http://localhost:9000/api/measures/component?metricKeys=ncloc_language_distribution&component=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/hotspots/search?status=TO_REVIEW&ps=500&pageIndex=0&project=
+ url="http://localhost:9000/api/hotspots/search?status=TO_REVIEW&ps=500&pageIndex=0&project=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/issues/search?types=BUG&facets=severities&componentKeys=
+ url="http://localhost:9000/api/issues/search?types=BUG&facets=severities&componentKeys=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/issues/search?types=VULNERABILITY&facets=severities&componentKeys=
+ url="http://localhost:9000/api/issues/search?types=VULNERABILITY&facets=severities&componentKeys=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/issues/search?types=CODE_SMELL&facets=severities&componentKeys=
+ url="http://localhost:9000/api/issues/search?types=CODE_SMELL&facets=severities&componentKeys=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
+
+ #/api/issues/search?issueStatuses=OPEN&ps=500&pageIndex=0&componentKeys=
+ url="http://localhost:9000/api/issues/search?issueStatuses=OPEN&ps=500&pageIndex=0&componentKeys=dummy.project"
+ code=$(curl -sS -H "$AUTH" -o "$response" -w "%{http_code}" "$url")
+ if (( code >= 400 && code < 600 )); then
+ echo "Error in $url (HTTP $code)"
+ echo "--- Body ---"
+ cat "$response"
+ echo "------------"
+ exit 1
+ fi
+ echo "$url OK (HTTP $code)"
diff --git a/GenerateCNESReport.class b/GenerateCNESReport.class
deleted file mode 100644
index 495ca5c..0000000
Binary files a/GenerateCNESReport.class and /dev/null differ
diff --git a/pdf-generator/pom.xml b/pdf-generator/pom.xml
index ba58502..abefec0 100644
--- a/pdf-generator/pom.xml
+++ b/pdf-generator/pom.xml
@@ -4,9 +4,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.bi
- pdf-generator
- 1.0-SNAPSHOT
+ com.opendevstack
+ sonar-report
+ 1.0
17
@@ -44,7 +44,7 @@
- GenerateCNESReport
+ GenerateSonarReport
@@ -62,4 +62,4 @@
-
\ No newline at end of file
+
diff --git a/pdf-generator/pom.xml:Zone.Identifier b/pdf-generator/pom.xml:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/java/com/bi/GenerateCNESReport.java:Zone.Identifier b/pdf-generator/src/main/java/com/bi/GenerateCNESReport.java:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/java/com/bi/GenerateCNESReport.java b/pdf-generator/src/main/java/com/bi/GenerateSonarReport.java
similarity index 85%
rename from pdf-generator/src/main/java/com/bi/GenerateCNESReport.java
rename to pdf-generator/src/main/java/com/bi/GenerateSonarReport.java
index f4bf7ad..b7af4bb 100644
--- a/pdf-generator/src/main/java/com/bi/GenerateCNESReport.java
+++ b/pdf-generator/src/main/java/com/bi/GenerateSonarReport.java
@@ -11,24 +11,57 @@
import java.util.List;
import java.util.Map;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLParameters;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-public class GenerateCNESReport {
+public class GenerateSonarReport {
+
+ private static HttpClient createUnsafeHttpClient() {
+ try {
+ TrustManager[] trustAll = new TrustManager[]{
+ new X509TrustManager() {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[0]; }
+ public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+ }
+ };
+
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, trustAll, new java.security.SecureRandom());
+
+ SSLParameters sslParams = sslContext.getDefaultSSLParameters();
+ sslParams.setEndpointIdentificationAlgorithm(null);
+
+ return HttpClient.newBuilder()
+ .sslContext(sslContext)
+ .sslParameters(sslParams)
+ .build();
+
+ } catch (java.security.NoSuchAlgorithmException | java.security.KeyManagementException e) {
+ throw new IllegalStateException("The insecure HttpClient couldn't be created", e);
+ }
+ }
public static JSONObject fetchDataFromURL(String url, String call, String token, String projectKey) throws IOException, InterruptedException {
- HttpClient client = HttpClient.newHttpClient();
+ HttpClient client = createUnsafeHttpClient();
String encodedProjectKey = URLEncoder.encode(projectKey, StandardCharsets.UTF_8);
String fullURL = String.format("%s%s%s", url, call, encodedProjectKey);
+
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(fullURL))
.header("Authorization", "Bearer " + token)
.build();
-
+
+
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONObject json = new JSONObject(response.body());
@@ -36,7 +69,7 @@ public static JSONObject fetchDataFromURL(String url, String call, String token,
if (response.statusCode() >= 200 && response.statusCode() < 300) {
return json;
} else {
- throw new IOException("Error al obtener datos de la URL: Código de estado " + response.statusCode() + ", Cuerpo: " + response.body());
+ throw new IOException("Error at obtaining data from the URL: Status Code " + response.statusCode() + ", Body: " + response.body());
}
}
@@ -49,14 +82,13 @@ public static void main(String[] args) throws IOException {
String apiUrl = args[0];
String authToken = args[1];
String project = args[2];
-
+
// We create the initial pdf
PDFReportWriter pdf = new PDFReportWriter();
JSONObject data = null;
JSONArray dataArray = null;
try {
-
- data = fetchDataFromURL(apiUrl, "api/navigation/component?component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/navigation/component?component=", authToken, project);
} catch (IOException | InterruptedException e) {
System.err.println("Error at doing the HTTP petition: " + e.getMessage());
}
@@ -115,7 +147,7 @@ public static void main(String[] args) throws IOException {
data = null;
try {
- data = fetchDataFromURL(apiUrl, "api/measures/component?metricKeys=reliability_rating,software_quality_maintainability_rating,security_rating,security_review_rating&component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/measures/component?metricKeys=reliability_rating,software_quality_maintainability_rating,security_rating,security_review_rating&component=", authToken, project);
data = data.getJSONObject("component");
} catch (IOException | InterruptedException e) {
@@ -149,7 +181,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/qualitygates/project_status?projectKey=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/qualitygates/project_status?projectKey=", authToken, project);
data = data.getJSONObject("projectStatus");
} catch (IOException | InterruptedException e) {
@@ -166,7 +198,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=", authToken, project);
data = data.getJSONObject("component");
} catch (IOException | InterruptedException e) {
@@ -185,6 +217,7 @@ public static void main(String[] args) throws IOException {
metricIndex.put("cognitive_complexity", 5);
measuresList = data.getJSONArray("measures");
measures = new String[6];
+ Arrays.fill(measures, "0");
for (int i = 0; i < measuresList.length(); i++) {
JSONObject measure = measuresList.getJSONObject(i);
@@ -211,7 +244,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/measures/component?metricKeys=duplicated_lines_density,comment_lines_density,ncloc,complexity,cognitive_complexity,coverage&component=", authToken, project);
data = data.getJSONObject("component");
} catch (IOException | InterruptedException e) {
@@ -256,7 +289,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/measures/component?metricKeys=reliability_remediation_effort,security_remediation_effort,sqale_index&component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/measures/component?metricKeys=reliability_remediation_effort,security_remediation_effort,sqale_index&component=", authToken, project);
data = data.getJSONObject("component");
} catch (IOException | InterruptedException e) {
@@ -298,7 +331,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/measures/component?metricKeys=ncloc_language_distribution&component=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/measures/component?metricKeys=ncloc_language_distribution&component=", authToken, project);
data = data.getJSONObject("component");
} catch (IOException | InterruptedException e) {
@@ -334,7 +367,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/security_reports/show?standard=sonarsourceSecurity&project=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/security_reports/show?standard=sonarsourceSecurity&project=", authToken, project);
dataArray = data.getJSONArray("categories");
} catch (IOException | InterruptedException e) {
@@ -405,7 +438,7 @@ public static void main(String[] args) throws IOException {
while ((pageIndex - 1) * 500 < total) {
data = fetchDataFromURL(
apiUrl,
- String.format("api/hotspots/search?status=TO_REVIEW&ps=500&pageIndex=%d&project=", pageIndex),
+ String.format("/api/hotspots/search?status=TO_REVIEW&ps=500&pageIndex=%d&project=", pageIndex),
authToken,
project
);
@@ -485,7 +518,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/issues/search?types=BUG&facets=severities&componentKeys=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/issues/search?types=BUG&facets=severities&componentKeys=", authToken, project);
} catch (IOException | InterruptedException e) {
System.err.println("Error at doing the HTTP petition: " + e.getMessage());
@@ -497,7 +530,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/issues/search?types=VULNERABILITY&facets=severities&componentKeys=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/issues/search?types=VULNERABILITY&facets=severities&componentKeys=", authToken, project);
} catch (IOException | InterruptedException e) {
System.err.println("Error at doing the HTTP petition: " + e.getMessage());
@@ -509,7 +542,7 @@ public static void main(String[] args) throws IOException {
try {
- data = fetchDataFromURL(apiUrl, "api/issues/search?types=CODE_SMELL&facets=severities&componentKeys=", authToken, project);
+ data = fetchDataFromURL(apiUrl, "/api/issues/search?types=CODE_SMELL&facets=severities&componentKeys=", authToken, project);
} catch (IOException | InterruptedException e) {
System.err.println("Error at doing the HTTP petition: " + e.getMessage());
@@ -532,7 +565,7 @@ public static void main(String[] args) throws IOException {
while ((pageIndex - 1) * 500 < total) {
data = fetchDataFromURL(
apiUrl,
- String.format("api/issues/search?issueStatuses=OPEN&ps=500&pageIndex=%d&componentKeys=", pageIndex),
+ String.format("/api/issues/search?issueStatuses=OPEN&ps=500&pageIndex=%d&componentKeys=", pageIndex),
authToken,
project
);
diff --git a/pdf-generator/src/main/java/com/bi/PDFReportWriter.java:Zone.Identifier b/pdf-generator/src/main/java/com/bi/PDFReportWriter.java:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-Bold.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-Bold.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-Italic.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-Italic.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-Italic.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-Italic.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-Regular.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-Regular.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CourierPrime-Regular.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CourierPrime-Regular.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CrimsonPro-Bold.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CrimsonPro-Bold.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/fonts/CrimsonPro-Regular.ttf:Zone.Identifier b/pdf-generator/src/main/resources/fonts/CrimsonPro-Regular.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/src/main/resources/sonarqube-pngrepo-com.png:Zone.Identifier b/pdf-generator/src/main/resources/sonarqube-pngrepo-com.png:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/GenerateCNESReport.class b/pdf-generator/target/classes/GenerateCNESReport.class
deleted file mode 100644
index b8f6fce..0000000
Binary files a/pdf-generator/target/classes/GenerateCNESReport.class and /dev/null differ
diff --git a/pdf-generator/target/classes/GenerateCNESReport.class:Zone.Identifier b/pdf-generator/target/classes/GenerateCNESReport.class:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/PDFReportWriter$Bookmark.class b/pdf-generator/target/classes/PDFReportWriter$Bookmark.class
deleted file mode 100644
index 48fecf3..0000000
Binary files a/pdf-generator/target/classes/PDFReportWriter$Bookmark.class and /dev/null differ
diff --git a/pdf-generator/target/classes/PDFReportWriter$Bookmark.class:Zone.Identifier b/pdf-generator/target/classes/PDFReportWriter$Bookmark.class:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/PDFReportWriter$NumberedBookmark.class b/pdf-generator/target/classes/PDFReportWriter$NumberedBookmark.class
deleted file mode 100644
index 36e73c2..0000000
Binary files a/pdf-generator/target/classes/PDFReportWriter$NumberedBookmark.class and /dev/null differ
diff --git a/pdf-generator/target/classes/PDFReportWriter$NumberedBookmark.class:Zone.Identifier b/pdf-generator/target/classes/PDFReportWriter$NumberedBookmark.class:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/PDFReportWriter.class b/pdf-generator/target/classes/PDFReportWriter.class
deleted file mode 100644
index 2cfaa46..0000000
Binary files a/pdf-generator/target/classes/PDFReportWriter.class and /dev/null differ
diff --git a/pdf-generator/target/classes/PDFReportWriter.class:Zone.Identifier b/pdf-generator/target/classes/PDFReportWriter.class:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Bold.ttf b/pdf-generator/target/classes/fonts/CourierPrime-Bold.ttf
deleted file mode 100644
index 7e6b222..0000000
Binary files a/pdf-generator/target/classes/fonts/CourierPrime-Bold.ttf and /dev/null differ
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Bold.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-Bold.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-BoldItalic.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Italic.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-Italic.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Italic.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-Italic.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf b/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf
deleted file mode 100644
index 4af1ff5..0000000
Binary files a/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf and /dev/null differ
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf:Zone.Identifier:Zone.Identifier b/pdf-generator/target/classes/fonts/CourierPrime-Regular.ttf:Zone.Identifier:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CrimsonPro-Bold.ttf b/pdf-generator/target/classes/fonts/CrimsonPro-Bold.ttf
deleted file mode 100644
index fef1d4b..0000000
Binary files a/pdf-generator/target/classes/fonts/CrimsonPro-Bold.ttf and /dev/null differ
diff --git a/pdf-generator/target/classes/fonts/CrimsonPro-Bold.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CrimsonPro-Bold.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/fonts/CrimsonPro-Regular.ttf b/pdf-generator/target/classes/fonts/CrimsonPro-Regular.ttf
deleted file mode 100644
index 5af0847..0000000
Binary files a/pdf-generator/target/classes/fonts/CrimsonPro-Regular.ttf and /dev/null differ
diff --git a/pdf-generator/target/classes/fonts/CrimsonPro-Regular.ttf:Zone.Identifier b/pdf-generator/target/classes/fonts/CrimsonPro-Regular.ttf:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/classes/sonarqube-pngrepo-com.png b/pdf-generator/target/classes/sonarqube-pngrepo-com.png
deleted file mode 100644
index 74ef9b4..0000000
Binary files a/pdf-generator/target/classes/sonarqube-pngrepo-com.png and /dev/null differ
diff --git a/pdf-generator/target/classes/sonarqube-pngrepo-com.png:Zone.Identifier b/pdf-generator/target/classes/sonarqube-pngrepo-com.png:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/maven-archiver/pom.properties b/pdf-generator/target/maven-archiver/pom.properties
deleted file mode 100644
index db0e55b..0000000
--- a/pdf-generator/target/maven-archiver/pom.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-#Generated by Maven
-#Tue May 13 09:54:58 CEST 2025
-groupId=com.bi
-artifactId=pdf-generator
-version=1.0-SNAPSHOT
diff --git a/pdf-generator/target/maven-archiver/pom.properties:Zone.Identifier b/pdf-generator/target/maven-archiver/pom.properties:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
deleted file mode 100644
index cb0d222..0000000
--- a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-GenerateCNESReport.class
-PDFReportWriter$NumberedBookmark.class
-PDFReportWriter$Bookmark.class
-PDFReportWriter.class
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:Zone.Identifier b/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
deleted file mode 100644
index 919ccea..0000000
--- a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-/home/marc/Projects/SONARCISOC/GeneratePDF/pdf-generator/src/main/java/com/bi/PDFReportWriter.java
-/home/marc/Projects/SONARCISOC/GeneratePDF/pdf-generator/src/main/java/com/bi/GenerateCNESReport.java
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:Zone.Identifier b/pdf-generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/pdf-generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst:Zone.Identifier b/pdf-generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT-jar-with-dependencies.jar b/pdf-generator/target/pdf-generator-1.0-SNAPSHOT-jar-with-dependencies.jar
deleted file mode 100644
index cc4a69b..0000000
Binary files a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT-jar-with-dependencies.jar and /dev/null differ
diff --git a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT-jar-with-dependencies.jar:Zone.Identifier b/pdf-generator/target/pdf-generator-1.0-SNAPSHOT-jar-with-dependencies.jar:Zone.Identifier
deleted file mode 100644
index e69de29..0000000
diff --git a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT.jar b/pdf-generator/target/pdf-generator-1.0-SNAPSHOT.jar
deleted file mode 100644
index 66769a6..0000000
Binary files a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT.jar and /dev/null differ
diff --git a/pdf-generator/target/pdf-generator-1.0-SNAPSHOT.jar:Zone.Identifier b/pdf-generator/target/pdf-generator-1.0-SNAPSHOT.jar:Zone.Identifier
deleted file mode 100644
index e69de29..0000000