Skip to content

V2.4.1 Improve code quality, add list thumbnail, improve UI, share to others, add generic import, add Playwright tests - #468

Merged
devpro merged 118 commits into
mainfrom
feature/code-improv
Sep 30, 2026
Merged

devpro merged 118 commits into
mainfrom
feature/code-improv

Link a reference only to the record it was made for

bdea7b1
Select commit
Loading
Failed to load commit list.
SonarQubeCloud / SonarCloud Code Analysis failed Sep 30, 2026 in 1m 1s

Quality Gate failed

Failed conditions
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Annotations

Check warning on line 35 in src/BlazorApp/Components/Inventory/Shared/ReferenceMatchControls.razor

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

A static field in a generic type is not shared among instances of different close constructed types.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz9rEmMK9uS9EQ1EW&open=AaDyz9rEmMK9uS9EQ1EW&pullRequest=468

Check warning on line 79 in test/BlazorApp.UnitTests/Components/Shared/ChartsTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Use 'GeneratedRegexAttribute' to generate the regular expression implementation at compile-time.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-V-mMK9uS9EQ1En&open=AaDyz-V-mMK9uS9EQ1En&pullRequest=468

Check warning on line 13 in src/Domain/Repositories/IAlbumRepository.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Method has 9 parameters, which is greater than the 7 authorized.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDzOJGqN_yYt-XFScYG&open=AaDzOJGqN_yYt-XFScYG&pullRequest=468

Check warning on line 192 in test/WebApi.UnitTests/ReferenceData/OmdbClientTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

The type argument Exception might not be serializable, which may cause Test Explorer to not enumerate individual data rows. Consider using a type that is known to be serializable.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO66ORjJxraIUcBuf&open=AZ_IO66ORjJxraIUcBuf&pullRequest=468

Check warning on line 63 in scripts/load-runsettings.js

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

This pattern can be replaced with '&'.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDzOJfZN_yYt-XFScYL&open=AaDzOJfZN_yYt-XFScYL&pullRequest=468

Check warning on line 131 in src/WebApi/ReferenceData/ExploreCatalogueRefreshService.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Evaluation of this argument may be expensive and unnecessary if logging is disabled

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO6j3RjJxraIUcBuX&open=AZ_IO6j3RjJxraIUcBuX&pullRequest=468

Check warning on line 96 in scripts/firebase-user-role.js

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Prefer top-level await over using a promise chain.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-WTmMK9uS9EQ1Eq&open=AaDyz-WTmMK9uS9EQ1Eq&pullRequest=468

Check failure on line 152 in src/WebApi/ReferenceData/ExploreCatalogueRefreshService.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Refactor this method to reduce its Cognitive Complexity from 29 to the 15 allowed.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz9iwmMK9uS9EQ1ET&open=AaDyz9iwmMK9uS9EQ1ET&pullRequest=468

Check warning on line 83 in src/Domain/Services/ReferenceMatchRules.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Extract this nested ternary operation into an independent statement.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-FbmMK9uS9EQ1Eg&open=AaDyz-FbmMK9uS9EQ1Eg&pullRequest=468

Check warning on line 135 in src/WebApi/Program.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Refactor your code not to use hardcoded absolute paths or URIs.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_O1Tugnvllwip2bu7F&open=AZ_O1Tugnvllwip2bu7F&pullRequest=468

Check warning on line 25 in src/WebApi/Mappers/ShareDtoMapper.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Mapping the nullable source property Id of Keeptrack.Domain.Models.ShareModel to the target property Id of Keeptrack.WebApi.Contracts.Dto.ShareDto which is not nullable

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ-qprcmsd3ZM4FyUZT5&open=AZ-qprcmsd3ZM4FyUZT5&pullRequest=468

Check warning on line 58 in test/WebApi.UnitTests/Filters/ApiExceptionFilterAttributeTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

The type argument Exception might not be serializable, which may cause Test Explorer to not enumerate individual data rows. Consider using a type that is known to be serializable.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_O1USGnvllwip2bu7M&open=AZ_O1USGnvllwip2bu7M&pullRequest=468

Check warning on line 252 in src/BlazorApp/Components/Inventory/InventoryPageBase.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

A static field in a generic type is not shared among instances of different close constructed types.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz9t_mMK9uS9EQ1Eb&open=AaDyz9t_mMK9uS9EQ1Eb&pullRequest=468

Check warning on line 16 in test/WebApi.IntegrationTests/Resources/ReferenceDataAdminProviderDefaultResourceTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Test class 'Keeptrack.WebApi.IntegrationTests.Resources.ReferenceDataAdminProviderDefaultResourceTest' does not contain constructor argument of type 'Keeptrack.WebApi.IntegrationTests.Hosting.KestrelWebAppFactory<Keeptrack.WebApi.Program>'. Add a constructor argument to consume the fixture data.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-QomMK9uS9EQ1Ej&open=AaDyz-QomMK9uS9EQ1Ej&pullRequest=468

Check warning on line 26 in test/WebApi.IntegrationTests/Resources/ReferenceDataAdminResourceTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Test class 'Keeptrack.WebApi.IntegrationTests.Resources.ReferenceDataAdminResourceTest' does not contain constructor argument of type 'Keeptrack.WebApi.IntegrationTests.Hosting.KestrelWebAppFactory<Keeptrack.WebApi.Program>'. Add a constructor argument to consume the fixture data.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-SQmMK9uS9EQ1El&open=AaDyz-SQmMK9uS9EQ1El&pullRequest=468

Check failure on line 108 in src/WebApi/ReferenceData/ExploreCatalogueRefreshService.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

This loop's stop condition tests 'rank' but the incrementer updates 'page'.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO6j3RjJxraIUcBuU&open=AZ_IO6j3RjJxraIUcBuU&pullRequest=468

Check warning on line 34 in test/WebApi.IntegrationTests/Resources/ExploreCatalogueRepositoryTest.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Member 'CreateRepository' does not access instance data and can be marked as static

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO64NRjJxraIUcBue&open=AZ_IO64NRjJxraIUcBue&pullRequest=468

Check warning on line 54 in test/Testing.Shared/Firebase/AccountRepository.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Use the lambda parameter instead of capturing the argument 'username'

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AaDyz-LsmMK9uS9EQ1Ei&open=AaDyz-LsmMK9uS9EQ1Ei&pullRequest=468

Check warning on line 201 in src/WebApi/ReferenceData/ReferenceEnrichmentService.TvShowsAndMovies.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Change type of parameter 'ratingsCheckedAt' from 'System.Collections.Generic.IReadOnlyDictionary<string, System.DateTime>' to 'System.Collections.Generic.Dictionary<string, System.DateTime>' for improved performance

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO6g6RjJxraIUcBuN&open=AZ_IO6g6RjJxraIUcBuN&pullRequest=468

Check warning on line 85 in src/WebApi/ReferenceData/TvShowStatusReconciliationService.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Change type of parameter 'episodesByShow' from 'System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.List<Keeptrack.Domain.Models.EpisodeModel>>' to 'System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<Keeptrack.Domain.Models.EpisodeModel>>' for improved performance

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_Eq8ABmaZPOCQ7FzlH&open=AZ_Eq8ABmaZPOCQ7FzlH&pullRequest=468

Check warning on line 29 in test/WebApi.IntegrationTests/Resources/ResourceTestBase.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Change ResourceTestBase.DisposeAsync() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_Eq8f_maZPOCQ7FzlZ&open=AZ_Eq8f_maZPOCQ7FzlZ&pullRequest=468

Check warning on line 45 in src/WebApi/ReferenceData/RatingSourceOptions.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Make 'SelectableDomains' a static property.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_UHSN-Izuxv_JAUbb-&open=AZ_UHSN-Izuxv_JAUbb-&pullRequest=468

Check warning on line 210 in src/WebApi/ReferenceData/IgdbClient.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Refactor your code not to use hardcoded absolute paths or URIs.

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_O1Tkgnvllwip2bu6-&open=AZ_O1Tkgnvllwip2bu6-&pullRequest=468

Check warning on line 256 in src/WebApi/ReferenceData/ReferenceEnrichmentService.VideoGames.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Evaluation of this argument may be expensive and unnecessary if logging is disabled

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_O1TqPnvllwip2bu7B&open=AZ_O1TqPnvllwip2bu7B&pullRequest=468

Check warning on line 166 in src/WebApi/ReferenceData/ExploreCatalogueRefreshService.cs

See this annotation in the file changed.

@sonarqubecloud sonarqubecloud / SonarCloud Code Analysis

Evaluation of this argument may be expensive and unnecessary if logging is disabled

See more on https://sonarcloud.io/project/issues?id=devpro_keeptrack&issues=AZ_IO6j3RjJxraIUcBuY&open=AZ_IO6j3RjJxraIUcBuY&pullRequest=468