Skip to content

fix(ci): integrate SonarCloud scan into CI pipeline and fix coverage reporting#109

Merged
EmiyaKiritsugu3 merged 1 commit into
mainfrom
fix/sonarcloud-coverage-ci
May 29, 2026
Merged

fix(ci): integrate SonarCloud scan into CI pipeline and fix coverage reporting#109
EmiyaKiritsugu3 merged 1 commit into
mainfrom
fix/sonarcloud-coverage-ci

Conversation

@EmiyaKiritsugu3

@EmiyaKiritsugu3 EmiyaKiritsugu3 commented May 29, 2026

Copy link
Copy Markdown
Owner

Problem

SonarCloud quality gate shows "0.0% Coverage on New Code" on all PRs because:

  • ci.yml runs npm run test:coverage (generates coverage/lcov.info) but does not upload coverage to SonarCloud
  • sonar-project.properties on main lacks sonar.javascript.lcov.reportPaths configuration

Solution

Integrate SonarCloud scan directly into the existing ci.yml pipeline instead of creating a separate workflow.

Changes

File Change
.github/workflows/ci.yml Added SonarCloud Scan step after npm run test:coverage in the Tests & Coverage job
sonar-project.properties Added sonar.javascript.lcov.reportPaths, exclusions, and test inclusion patterns
package.json Added tmp: "^0.2.6" to overrides (security fix for CVE-2024-27980)
package-lock.json Lockfile update for tmp 0.2.5 -> 0.2.7

Why this approach

  • No duplicate test execution — coverage is already generated by the existing CI step
  • No separate workflow — fewer CI minutes, simpler maintenance
  • Only ~30s additional runtime per CI run (the SonarCloud scan step)

Verification

After merge, next PRs should show coverage > 0% in SonarCloud quality gate instead of "0.0% Coverage on New Code".


Summary by cubic

Fixes SonarCloud coverage on PRs by integrating the scan into CI and pointing it to coverage/lcov.info, so coverage uploads instead of showing 0.0% on new code. Also sets fetch-depth: 0, excludes database/ from Prettier, and adds a short spec.

  • Bug Fixes

    • Added SonarCloud scan step to .github/workflows/ci.yml after npm run test:coverage.
    • Set checkout fetch-depth: 0 to enable PR analysis and decoration.
    • Configured sonar-project.properties with sonar.javascript.lcov.reportPaths, test inclusions, and exclusions.
    • Excluded database/ from Prettier via .prettierignore.
    • Added a design spec under docs/superpowers/specs/.
  • Dependencies

    • Added tmp ^0.2.6; lockfile updated to 0.2.7 (security fix).

Written for commit 340abbf. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Documentation

    • Added SonarCloud coverage configuration documentation
  • Chores

    • Integrated SonarCloud scanning into continuous integration workflow
    • Updated configuration for coverage report analysis
    • Added package dependency override

Review Change Stack

@vercel

vercel Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
smartmanagementsystem Ready Ready Preview, Comment May 29, 2026 1:16am

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Walkthrough

This PR integrates SonarCloud scanning into the CI pipeline to report code coverage on new PRs. The scan consumes pre-generated LCOV coverage reports via updated sonar-project.properties configuration, executes via a new CI workflow step wired with repository secrets, and includes a supporting tmp package version override with accompanying design documentation.

Changes

SonarCloud Coverage Integration

Layer / File(s) Summary
SonarCloud project configuration
sonar-project.properties
LCOV report path, exclusion globs (tests, coverage, node_modules), and test file patterns are configured to specify what SonarCloud analyzes and reports.
CI workflow scan step
.github/workflows/ci.yml
A SonarCloud Scan step is added after npm run test:coverage in the test job, consuming the coverage artifacts and passing GITHUB_TOKEN and SONAR_TOKEN secrets to the scan action.
Dependency override and design specification
package.json, docs/superpowers/specs/2026-05-28-fix-sonarcloud-coverage-design.md
The tmp package is pinned via a new override entry in the overrides section, and a design spec documents the full SonarCloud integration, configuration approach, and dependency changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main changes: integrating SonarCloud scan into CI and fixing coverage reporting configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description comprehensively covers the problem, solution, changes, rationale, and verification approach, mapping to the template's Description section.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/sonarcloud-coverage-ci

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gitguardian

gitguardian Bot commented May 29, 2026

Copy link
Copy Markdown

️✅ There are no secrets present in this pull request anymore.

If these secrets were true positive and are still valid, we highly recommend you to revoke them.
While these secrets were previously flagged, we no longer have a reference to the
specific commits where they were detected. Once a secret has been leaked into a git
repository, you should consider it compromised, even if it was deleted immediately.
Find here more information about risks.


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Around line 63-67: The SonarCloud Scan step should be skipped for forked pull
requests to avoid missing SECRET errors; add a conditional to the step (the step
named "SonarCloud Scan" that sets env SONAR_TOKEN and uses
SonarSource/sonarqube-scan-action) like: if: ${{ github.event_name !=
'pull_request' || github.repository ==
github.event.pull_request.head.repo.full_name }} so the scan runs on non-PR
events or only when the PR comes from the same repo (where secrets are
available).

In `@docs/superpowers/specs/2026-05-28-fix-sonarcloud-coverage-design.md`:
- Around line 38-43: The fenced code block containing the sonar.* properties
(lines starting with "sonar.javascript.lcov.reportPaths=..." through
"sonar.test.inclusions=...") needs a language identifier to satisfy MD040;
change the opening fence from ``` to ```properties so the block is labeled as
properties in the markdown.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: fd107795-c113-473b-85de-f1f3e1188bfe

📥 Commits

Reviewing files that changed from the base of the PR and between ec66c88 and 128ef48.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • docs/superpowers/specs/2026-05-28-fix-sonarcloud-coverage-design.md
  • package.json
  • sonar-project.properties

Comment thread .github/workflows/ci.yml
Comment on lines +63 to +67
- name: SonarCloud Scan
uses: SonarSource/sonarqube-scan-action@689fb39b34b9aa95ebc5f8f119343ddd51542402
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

GitHub Actions: Are repository secrets available to workflows triggered by pull_request events from forks?

💡 Result:

No. For a workflow triggered by the pull_request event from a fork, GitHub does not pass repository secrets to the runner (with the exception of GITHUB_TOKEN, which is read-only). [1][2] What this means: - Your workflow can run, but expressions like ${{ secrets.MY_SECRET }} will not have the repository secret value available when the pull request comes from a fork. [1][2] - GITHUB_TOKEN is still provided to the workflow, but it has read-only permissions in pull_request runs from forked repositories. [1] Related security note: - GitHub’s documentation describes that pull_request workflows run with restricted access to secrets specifically to prevent secret exfiltration from untrusted fork code. [3][1] If you need secrets for fork-origin pull requests, the usual pattern is to use pull_request_target (with careful controls) rather than pull_request, because pull_request_target runs in the base repository context and is designed to allow access to secrets. [3][1]

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the relevant portion of the workflow (triggers + jobs around the Sonar step)
sed -n '1,120p' .github/workflows/ci.yml | cat -n

Repository: EmiyaKiritsugu3/PWeb_Project

Length of output: 3874


Guard SonarCloud scan to avoid failing fork PRs.

The SonarCloud Scan step uses SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}. In pull_request workflows from forks, GitHub does not provide repository secrets (other than read-only GITHUB_TOKEN), so the scan can fail due to the missing SONAR_TOKEN.

Suggested fix
       - name: SonarCloud Scan
+        if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false }}
         uses: SonarSource/sonarqube-scan-action@689fb39b34b9aa95ebc5f8f119343ddd51542402
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
           SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: SonarCloud Scan
uses: SonarSource/sonarqube-scan-action@689fb39b34b9aa95ebc5f8f119343ddd51542402
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: SonarCloud Scan
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false }}
uses: SonarSource/sonarqube-scan-action@689fb39b34b9aa95ebc5f8f119343ddd51542402
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 63 - 67, The SonarCloud Scan step
should be skipped for forked pull requests to avoid missing SECRET errors; add a
conditional to the step (the step named "SonarCloud Scan" that sets env
SONAR_TOKEN and uses SonarSource/sonarqube-scan-action) like: if: ${{
github.event_name != 'pull_request' || github.repository ==
github.event.pull_request.head.repo.full_name }} so the scan runs on non-PR
events or only when the PR comes from the same repo (where secrets are
available).

Comment on lines +38 to +43
```
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.exclusions=src/**/*.test.ts,src/**/*.test.tsx,src/**/*.spec.ts,src/**/*.spec.tsx,src/test/**,coverage/**,node_modules/**
sonar.tests=src
sonar.test.inclusions=src/**/*.test.ts,src/**/*.test.tsx,src/**/*.spec.ts,src/**/*.spec.tsx
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language identifier to the fenced code block.

Use ```properties for this block to satisfy markdown linting (MD040).

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 38-38: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/specs/2026-05-28-fix-sonarcloud-coverage-design.md` around
lines 38 - 43, The fenced code block containing the sonar.* properties (lines
starting with "sonar.javascript.lcov.reportPaths=..." through
"sonar.test.inclusions=...") needs a language identifier to satisfy MD040;
change the opening fence from ``` to ```properties so the block is labeled as
properties in the markdown.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 6 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="database/20252/tarefas/EmiyaKiritsugu3/scripts/odbc-example.ts">

<violation number="1" location="database/20252/tarefas/EmiyaKiritsugu3/scripts/odbc-example.ts:5">
P1: Hardcoded database password in connection string. Database credentials should be sourced from environment variables (e.g., `process.env.DATABASE_URL`) or a `.env` file, not hardcoded in source — even in example scripts, as these can be accidentally committed or expose infrastructure details.</violation>
</file>

<file name="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js">

<violation number="1" location="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js:14">
P1: Hardcoded MongoDB credentials in connection string fallback — remove the credentials or replace with a placeholder to avoid credential leakage in source control.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

async function runDirectQuery() {
const client = new Client({
connectionString: "postgresql://user_atividades:password123@localhost:5432/AtividadesBD",
connectionString: 'postgresql://user_atividades:password123@localhost:5432/AtividadesBD',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Hardcoded database password in connection string. Database credentials should be sourced from environment variables (e.g., process.env.DATABASE_URL) or a .env file, not hardcoded in source — even in example scripts, as these can be accidentally committed or expose infrastructure details.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At database/20252/tarefas/EmiyaKiritsugu3/scripts/odbc-example.ts, line 5:

<comment>Hardcoded database password in connection string. Database credentials should be sourced from environment variables (e.g., `process.env.DATABASE_URL`) or a `.env` file, not hardcoded in source — even in example scripts, as these can be accidentally committed or expose infrastructure details.</comment>

<file context>
@@ -2,30 +2,31 @@ import { Client } from 'pg';
 async function runDirectQuery() {
   const client = new Client({
-    connectionString: "postgresql://user_atividades:password123@localhost:5432/AtividadesBD",
+    connectionString: 'postgresql://user_atividades:password123@localhost:5432/AtividadesBD',
   });
 
</file context>

const URI =
process.env.MONGO_URI ||
"mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj";
'mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Hardcoded MongoDB credentials in connection string fallback — remove the credentials or replace with a placeholder to avoid credential leakage in source control.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js, line 14:

<comment>Hardcoded MongoDB credentials in connection string fallback — remove the credentials or replace with a placeholder to avoid credential leakage in source control.</comment>

<file context>
@@ -7,166 +7,166 @@
 const URI =
   process.env.MONGO_URI ||
-  "mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj";
+  'mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj';
 
 async function seed() {
</file context>

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 5 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="database/20252/tarefas/EmiyaKiritsugu3/scripts/odbc-example.ts">

<violation number="1" location="database/20252/tarefas/EmiyaKiritsugu3/scripts/odbc-example.ts:5">
P1: Hardcoded database password in connection string. Database credentials should be sourced from environment variables (e.g., `process.env.DATABASE_URL`) or a `.env` file, not hardcoded in source — even in example scripts, as these can be accidentally committed or expose infrastructure details.</violation>
</file>

<file name="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js">

<violation number="1" location="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js:14">
P1: Hardcoded MongoDB credentials in connection string fallback — remove the credentials or replace with a placeholder to avoid credential leakage in source control.</violation>
</file>

<file name=".github/workflows/ci.yml">

<violation number="1" location=".github/workflows/ci.yml:63">
P2: Guard this step against fork PRs. In `pull_request` workflows triggered from forks, repository secrets (like `SONAR_TOKEN`) are not provided by GitHub Actions for security reasons. Without a guard, this step will fail on every fork PR. Add a condition to skip it when the PR originates from a fork.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
- name: Run tests with coverage
run: npm run test:coverage

- name: SonarCloud Scan

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Guard this step against fork PRs. In pull_request workflows triggered from forks, repository secrets (like SONAR_TOKEN) are not provided by GitHub Actions for security reasons. Without a guard, this step will fail on every fork PR. Add a condition to skip it when the PR originates from a fork.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/ci.yml, line 63:

<comment>Guard this step against fork PRs. In `pull_request` workflows triggered from forks, repository secrets (like `SONAR_TOKEN`) are not provided by GitHub Actions for security reasons. Without a guard, this step will fail on every fork PR. Add a condition to skip it when the PR originates from a fork.</comment>

<file context>
@@ -60,6 +60,12 @@ jobs:
       - name: Run tests with coverage
         run: npm run test:coverage
 
+      - name: SonarCloud Scan
+        uses: SonarSource/sonarqube-scan-action@689fb39b34b9aa95ebc5f8f119343ddd51542402
+        env:
</file context>
Suggested change
- name: SonarCloud Scan
- name: SonarCloud Scan
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false }}

@EmiyaKiritsugu3

Copy link
Copy Markdown
Owner Author

Code review

Found 1 issue:

  1. Missing fetch-depth: 0 on checkout step — The SonarCloud scan runs in the test job, but the Checkout step (actions/checkout@v4) uses the default shallow clone. SonarCloud requires full git history (fetch-depth: 0) for accurate PR analysis — it needs git blame data to determine which lines are "New Code" and compute coverage on PRs. Both prior SonarCloud implementations (the separate sonarqube job removed in a0330f1 and the standalone sonarcloud.yml from 70a16ce) correctly had fetch-depth: 0. Without it, the "0.0% Coverage on New Code" problem this PR aims to fix may persist.

- name: Checkout
uses: actions/checkout@v4

Fix: Add fetch-depth: 0 to the checkout step:

      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

Other findings (below 80 confidence, not reported as blocking):

  • tmp version range ^0.2.6 — Scored 0/100. The actual advisory (GHSA-ph9p-34f9-6g65) was fixed in 0.2.6, not 0.2.7. The range is correct.
  • No explicit sonar.sources — Scored 5/100. SonarCloud defaults to . for non-Maven/Gradle/.NET projects. Functionally identical.
  • Coverage gap from PR ci: add sonarcloud workflow and configure sonar-project.properties #108 — Scored 92/100 that the pipeline IS now complete. The scan step and coverage config are both present.
  • Unrelated formatting in 3 database files — Scored 50/100. Real but cosmetic. 3 files remain formatted despite the revert commit (revert only addressed crud.js, mongo-init.js, seed.js).

🤖 Generated with Claude Code

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 3 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js">

<violation number="1" location="database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js:14">
P1: Hardcoded MongoDB credentials in the connection URI expose the database password in source control. Extract the full URI to an environment variable (e.g., `process.env.MONGO_URI`) and remove the hardcoded fallback, or use environment variables for the username and password components individually.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

const URI =
process.env.MONGO_URI ||
"mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj";
'mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Hardcoded MongoDB credentials in the connection URI expose the database password in source control. Extract the full URI to an environment variable (e.g., process.env.MONGO_URI) and remove the hardcoded fallback, or use environment variables for the username and password components individually.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At database/20261/tarefas/EmiyaKiritsugu3/scripts/seed.js, line 14:

<comment>Hardcoded MongoDB credentials in the connection URI expose the database password in source control. Extract the full URI to an environment variable (e.g., `process.env.MONGO_URI`) and remove the hardcoded fallback, or use environment variables for the username and password components individually.</comment>

<file context>
@@ -7,166 +7,166 @@
 const URI =
   process.env.MONGO_URI ||
-  "mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj";
+  'mongodb://app_atividades:app123@localhost:27017/AtividadesProj?authSource=AtividadesProj';
 
 async function seed() {
</file context>

@EmiyaKiritsugu3
EmiyaKiritsugu3 force-pushed the fix/sonarcloud-coverage-ci branch from 4be90b3 to 340abbf Compare May 29, 2026 01:14
@sonarqubecloud

Copy link
Copy Markdown

@EmiyaKiritsugu3
EmiyaKiritsugu3 merged commit be5bb53 into main May 29, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant