# Audit - LanguageAnalyzerSmoke ## Project - Path: `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmoke.csproj` - Module: `Tools` - Kind: `Tool` - SDK: `Microsoft.NET.Sdk` - TargetFramework: `net10.0` - Audit date (UTC): 2026-01-30 ## Coding Standards Findings - Status: FAIL - Nullable: enable - TreatWarningsAsErrors: explicit true - Deterministic: inherited true - 100-line rule violations: 2 - Service locator usage (BuildServiceProvider/GetService): 3 - Analyzer enforcement: missing repo-wide (see summary). ### Details - 100-line files: - `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmokeRunner.cs` (468 lines) - `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmokeApp.cs` (113 lines) - Service locator matches: - `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmokeRunner.cs`:221 using var serviceProvider = BuildServiceProvider(); - `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmokeRunner.cs`:381 private static ServiceProvider BuildServiceProvider() - `src/Tools/LanguageAnalyzerSmoke/LanguageAnalyzerSmokeRunner.cs`:385 return services.BuildServiceProvider(); ### Fix Guidance - Split files over 100 lines into smaller types or partials. - Replace service locator usage with constructor injection. ## Testing Fullness Findings - Status: FAIL - Expected layers: Unit, CLI, Offline - Detected test projects: src/Tools/__Tests/LanguageAnalyzerSmoke.Tests/LanguageAnalyzerSmoke.Tests.csproj [Unit] - Missing layers: CLI, Offline ### Manual checks required - Observability contract tests for WebService/Worker. - Offline execution (tests must run without network access). ### Fix Guidance - Add offline/airgap coverage with fixtures only. - Add CLI tests for exit codes and golden output.