From 86df6744b3e9311848c5afa34f3f4dd2e90587c8 Mon Sep 17 00:00:00 2001 From: Nacho Vazquez Date: Sat, 25 Jul 2026 16:26:00 -0300 Subject: [PATCH] chore: clear sonarcloud code smells failing the quality gate Signed-off-by: Nacho Vazquez --- .../src/e2e/console-driver.cy.ts | 18 +++++++++--------- .../test-util/src/lib/spy-driver/spy.driver.ts | 2 +- .../lib/logging/lumberjack-log-factory.spec.ts | 2 +- sonar-project.properties | 10 ++++++++++ tools/scripts/configure-sonar-report-paths.mjs | 6 ++---- tools/scripts/delete-path-alias.mjs | 2 +- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/e2e/examples/lumberjack-app-e2e/src/e2e/console-driver.cy.ts b/e2e/examples/lumberjack-app-e2e/src/e2e/console-driver.cy.ts index c113d1865..8d9c7120e 100644 --- a/e2e/examples/lumberjack-app-e2e/src/e2e/console-driver.cy.ts +++ b/e2e/examples/lumberjack-app-e2e/src/e2e/console-driver.cy.ts @@ -1,15 +1,15 @@ import { VERSION } from '@angular/core'; -describe('Console log driver', () => { - function visit() { - cy.visit('/', { - onBeforeLoad(win): void { - cy.stub(win.console, 'error').as('consoleError'); - cy.stub(win.console, 'info').as('consoleInfo'); - }, - }); - } +function visit() { + cy.visit('/', { + onBeforeLoad(win): void { + cy.stub(win.console, 'error').as('consoleError'); + cy.stub(win.console, 'info').as('consoleInfo'); + }, + }); +} +describe('Console log driver', () => { const expectedPayload = { angularVersion: VERSION.major, }; diff --git a/packages/internal/test-util/src/lib/spy-driver/spy.driver.ts b/packages/internal/test-util/src/lib/spy-driver/spy.driver.ts index 32d342560..374f91d18 100644 --- a/packages/internal/test-util/src/lib/spy-driver/spy.driver.ts +++ b/packages/internal/test-util/src/lib/spy-driver/spy.driver.ts @@ -13,7 +13,7 @@ import { spyDriverConfigToken } from './spy-driver-config.token'; export class SpyDriver implements LumberjackLogDriver, jest.Mocked { - static driverIdentifier = 'SpyDriver'; + static readonly driverIdentifier = 'SpyDriver'; readonly config = inject(spyDriverConfigToken); readonly logCritical = jest.fn(); diff --git a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts index 312950ea5..d21fd5b26 100644 --- a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts @@ -123,7 +123,7 @@ describe(LumberjackLogFactory.name, () => { expect(new Date(log.createdAt)).toEqual(fakeNow); }); - it('timestamps the log with the current date and time', () => { + it('timestamps every log with the date and time of its creation', () => { const firstLog = logFactory.createWarningLog(testMessage).build(); const fakeLater = new Date('2021-01-23T23:23:23Z'); fakeTime.setTime(fakeLater); diff --git a/sonar-project.properties b/sonar-project.properties index 5195b741f..5af0ed9fa 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -28,6 +28,16 @@ sonar.coverage.exclusions=tools/scripts/**,packages/internal/**,**/jest.config.t # configure the files that should be ignored by duplication detection sonar.cpd.exclusions=**/jest.config.ts,**/test.ts,packages/**/main.ts,**/eslint.config.mjs +# Issue exclusions +# S5914 ("assertion always succeeds") in the `*-api.spec.ts` public API surface +# tests. Those tests assert the *type* — `const value: SomeExport | undefined` +# fails to compile if the export is dropped — and the runtime assertion is only +# there to give the type annotation a test body. Rewriting them to satisfy the +# rule would delete the thing being tested. +sonar.issue.ignore.multicriteria=apiSurfaceAssertions +sonar.issue.ignore.multicriteria.apiSurfaceAssertions.ruleKey=typescript:S5914 +sonar.issue.ignore.multicriteria.apiSurfaceAssertions.resourceKey=**/*-api.spec.ts + # Reports # Test coverage reports # paths (absolute or relative) to the files with LCOV data diff --git a/tools/scripts/configure-sonar-report-paths.mjs b/tools/scripts/configure-sonar-report-paths.mjs index a6753c0ff..727a45a10 100644 --- a/tools/scripts/configure-sonar-report-paths.mjs +++ b/tools/scripts/configure-sonar-report-paths.mjs @@ -49,7 +49,5 @@ function listLintReports() { return listFilePaths('reports/**/lint/report.json'); } -(async () => { - await configureCoverageReportPaths(); - await configureLintReportPaths(); -})(); +await configureCoverageReportPaths(); +await configureLintReportPaths(); diff --git a/tools/scripts/delete-path-alias.mjs b/tools/scripts/delete-path-alias.mjs index ee6d299b0..52257a68e 100644 --- a/tools/scripts/delete-path-alias.mjs +++ b/tools/scripts/delete-path-alias.mjs @@ -1,4 +1,4 @@ -import { readFileSync, writeFileSync } from 'fs'; +import { readFileSync, writeFileSync } from 'node:fs'; function deletePathAlias(alias) { const encoding = 'utf8';