Add Jellyfin.CodeAnalysis and analyzers to all projects

Integrated Jellyfin.CodeAnalysis as a project reference across core and test projects. Added centrally managed code analysis and style enforcement packages (IDisposableAnalyzers, Microsoft.CodeAnalysis.BannedApiAnalyzers, SerilogAnalyzer, SmartAnalyzers.MultithreadingAnalyzer, StyleCop.Analyzers) to all affected projects. Updated dependency graphs, asset files, and build scripts to ensure analyzers run during builds, enforcing consistent code quality and style rules throughout the codebase. Removed custom warning properties to rely on analyzer enforcement.
This commit is contained in:
2026-02-23 07:03:54 -05:00
parent 8d39eb77e6
commit ede6904433
181 changed files with 22265 additions and 526 deletions
@@ -2981,6 +2981,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
"TagLibSharp": "2.3.0"
@@ -3002,6 +3003,7 @@
"Emby.Photos": "1.0.0",
"Ignore": "0.2.1",
"Jellyfin.Api": "1.0.0",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Database.Implementations": "10.11.0",
@@ -3033,12 +3035,14 @@
"dependencies": {
"CommandLineParser": "2.9.1",
"Emby.Server.Implementations": "1.0.0",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Database.Implementations": "10.11.0",
"Jellyfin.Database.Providers.Postgres": "1.0.0",
"Jellyfin.Drawing": "1.0.0",
"Jellyfin.Drawing.Skia": "1.0.0",
"Jellyfin.LiveTv": "1.0.0",
"Jellyfin.MediaEncoding.Hls": "1.0.0",
"Jellyfin.Sdk": "2025.10.21",
"Jellyfin.Server.Implementations": "1.0.0",
"Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore": "11.0.0-preview.1.26104.118",
"Morestachio": "5.0.1.631",
@@ -3067,6 +3071,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.MediaEncoding.Hls": "1.0.0",
"Jellyfin.Networking": "1.0.0",
@@ -3101,7 +3106,9 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.Model": "10.12.0"
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21"
},
"compile": {
"bin/placeholder/Jellyfin.Common.dll": {}
@@ -3118,6 +3125,7 @@
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"BitFaster.Caching": "2.5.4",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.MediaEncoding.Keyframes": "10.11.0",
"Jellyfin.Model": "10.12.0",
@@ -3136,7 +3144,9 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Database.Implementations": "10.11.0",
"Jellyfin.Sdk": "2025.10.21",
"Microsoft.Extensions.Logging": "11.0.0-preview.1.26104.118"
},
"compile": {
@@ -3150,6 +3160,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Microsoft.EntityFrameworkCore.Relational": "11.0.0-preview.1.26104.118",
"Polly": "8.6.5"
},
@@ -3164,6 +3175,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Database.Implementations": "10.11.0",
"Microsoft.EntityFrameworkCore": "11.0.0-preview.1.26104.118",
@@ -3181,6 +3193,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Database.Implementations": "10.11.0",
"Microsoft.EntityFrameworkCore.Relational": "11.0.0-preview.1.26104.118",
@@ -3198,6 +3211,7 @@
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"AsyncKeyedLock": "8.0.2",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
@@ -3217,6 +3231,7 @@
"BlurHashSharp": "1.4.0-pre.1",
"BlurHashSharp.SkiaSharp": "1.4.0-pre.1",
"HarfBuzzSharp.NativeAssets.Linux": "8.3.1.1",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
@@ -3239,6 +3254,7 @@
"dependencies": {
"Diacritics": "4.1.4",
"ICU4N.Transliterator": "60.1.0-alpha.356",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Sdk": "2025.10.21"
},
"compile": {
@@ -3253,6 +3269,7 @@
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"AsyncKeyedLock": "8.0.2",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
@@ -3303,6 +3320,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Data": "10.12.0",
"Jellyfin.Extensions": "10.12.0",
"Jellyfin.Sdk": "2025.10.21"
@@ -3321,8 +3339,10 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Model": "10.12.0"
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21"
},
"compile": {
"bin/placeholder/Jellyfin.Naming.dll": {}
@@ -3335,6 +3355,7 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0"
},
@@ -3350,12 +3371,14 @@
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"AsyncKeyedLock": "8.0.2",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Data": "10.12.0",
"Jellyfin.Database.Implementations": "10.11.0",
"Jellyfin.Database.Providers.Postgres": "1.0.0",
"Jellyfin.Database.Providers.Sqlite": "1.0.0",
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21",
"Microsoft.EntityFrameworkCore.Relational": "11.0.0-preview.1.26104.118"
},
"compile": {
@@ -3369,8 +3392,10 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0"
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21"
},
"compile": {
"bin/placeholder/MediaBrowser.LocalMetadata.dll": {}
@@ -3385,6 +3410,7 @@
"dependencies": {
"AsyncKeyedLock": "8.0.2",
"BDInfo": "0.8.0",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Common": "10.12.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
@@ -3405,6 +3431,7 @@
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"AsyncKeyedLock": "8.0.2",
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21",
@@ -3428,8 +3455,10 @@
"type": "project",
"framework": ".NETCoreApp,Version=v11.0",
"dependencies": {
"Jellyfin.CodeAnalysis": "1.0.0",
"Jellyfin.Controller": "10.12.0",
"Jellyfin.Model": "10.12.0"
"Jellyfin.Model": "10.12.0",
"Jellyfin.Sdk": "2025.10.21"
},
"compile": {
"bin/placeholder/MediaBrowser.XbmcMetadata.dll": {}
@@ -7719,6 +7748,7 @@
"AutoFixture >= 4.18.1",
"AutoFixture.AutoMoq >= 4.18.1",
"AutoFixture.Xunit2 >= 4.18.1",
"Jellyfin.CodeAnalysis >= 1.0.0",
"Jellyfin.Sdk >= 2025.10.21",
"Microsoft.AspNetCore.Mvc.Testing >= 11.0.0-preview.1.26104.118",
"Microsoft.CodeAnalysis.BannedApiAnalyzers >= 4.14.0",
@@ -7770,6 +7800,9 @@
"projectReferences": {
"E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server\\Jellyfin.Server.csproj": {
"projectPath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server\\Jellyfin.Server.csproj"
},
"E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.CodeAnalysis\\Jellyfin.CodeAnalysis.csproj": {
"projectPath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.CodeAnalysis\\Jellyfin.CodeAnalysis.csproj"
}
}
}
@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "w91ZWhPlQGM=",
"dgSpecHash": "pAHS2jcV+/I=",
"success": true,
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\tests\\Jellyfin.Server.Integration.Tests\\Jellyfin.Server.Integration.Tests.csproj",
"expectedPackageFiles": [