Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -45,7 +45,7 @@ public sealed class LanguageAnalyzerContextTests
var context = new LanguageAnalyzerContext(workspace.Path, TimeProvider.System, services: serviceProvider);
Assert.True(context.Secrets.IsAvailable);
using var retrieved = await context.Secrets.GetAsync("registry", "default", TestContext.Current.CancellationToken);
using var retrieved = await context.Secrets.GetAsync("registry", "default", CancellationToken.None);
Assert.Same(handle, retrieved);
Assert.Equal("test", retrieved.Metadata["source"]);
Assert.Equal("token", Encoding.UTF8.GetString(retrieved.AsBytes().Span));
@@ -58,7 +58,7 @@ public sealed class LanguageAnalyzerContextTests
var context = new LanguageAnalyzerContext(workspace.Path, TimeProvider.System);
Assert.False(context.Secrets.IsAvailable);
var secret = await context.Secrets.TryGetAsync("registry", cancellationToken: TestContext.Current.CancellationToken);
var secret = await context.Secrets.TryGetAsync("registry", cancellationToken: CancellationToken.None);
Assert.Null(secret);
}

View File

@@ -11,7 +11,7 @@ public sealed class LanguageAnalyzerHarnessTests
{
var fixturePath = TestPaths.ResolveFixture("determinism", "basic", "input");
var goldenPath = TestPaths.ResolveFixture("determinism", "basic", "expected.json");
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var analyzers = new ILanguageAnalyzer[]
{

View File

@@ -12,7 +12,7 @@ public sealed class DotNetEntrypointResolverTests
[Fact]
public async Task SimpleFixtureResolvesSingleEntrypointAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var context = new LanguageAnalyzerContext(fixturePath, TimeProvider.System);
@@ -33,7 +33,7 @@ public sealed class DotNetEntrypointResolverTests
[Fact]
public async Task DeterministicOrderingIsStableAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "multi");
var context = new LanguageAnalyzerContext(fixturePath, TimeProvider.System);

View File

@@ -15,7 +15,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SimpleFixtureProducesDeterministicOutputAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -34,7 +34,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SignedFixtureCapturesAssemblyMetadataAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "signed");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -58,7 +58,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SelfContainedFixtureHandlesNativeAssetsAndUsageAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "selfcontained");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -84,7 +84,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task AnalyzerIsThreadSafeUnderConcurrencyAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "selfcontained");
var analyzers = new ILanguageAnalyzer[]
@@ -107,7 +107,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task ConfigEnablesIlMetadataEdgesAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var sourceFixture = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var tempRoot = TestPaths.CreateTemporaryDirectory();
@@ -169,7 +169,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task MultiFixtureMergesRuntimeMetadataAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "multi");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -217,7 +217,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SourceTreeOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "source-tree-only");
var analyzers = new ILanguageAnalyzer[]
@@ -253,7 +253,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task LockfileOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "lockfile-only");
var analyzers = new ILanguageAnalyzer[]
@@ -291,7 +291,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task PackagesConfigOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "packages-config-only");
var analyzers = new ILanguageAnalyzer[]

View File

@@ -1,12 +1,9 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Serilog" Version="3.1.1" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="Serilog" Version="4.3.0" />
</ItemGroup>
</Project>
</Project>

View File

@@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>

View File

@@ -18,7 +18,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: TestContext.Current.CancellationToken,
cancellationToken: CancellationToken.None,
usageHints: usageHints);
}
@@ -32,7 +32,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: TestContext.Current.CancellationToken);
cancellationToken: CancellationToken.None);
}
[Fact]
@@ -46,7 +46,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: TestContext.Current.CancellationToken,
cancellationToken: CancellationToken.None,
usageHints: usageHints);
}
}

View File

@@ -11,7 +11,7 @@ public sealed class RustHeuristicCoverageComparisonTests
[Fact]
public async Task HeuristicCoverageExceedsCompetitorBaselineAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "heuristics");
var baselinePath = Path.Combine(fixturePath, "competitor-baseline.json");
RustFixtureBinaries.EnsureHeuristicBinary(fixturePath);

View File

@@ -13,7 +13,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task SimpleFixtureProducesDeterministicOutputAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "simple");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -38,7 +38,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task AnalyzerIsThreadSafeUnderConcurrencyAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "simple");
var analyzers = new ILanguageAnalyzer[]
@@ -61,7 +61,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task HeuristicFixtureProducesExpectedOutputAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "heuristics");
var goldenPath = Path.Combine(fixturePath, "expected.json");
RustFixtureBinaries.EnsureHeuristicBinary(fixturePath);
@@ -86,7 +86,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task FallbackFixtureProducesExpectedOutputAsync()
{
var cancellationToken = TestContext.Current.CancellationToken;
var cancellationToken = CancellationToken.None;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "fallback");
var goldenPath = Path.Combine(fixturePath, "expected.json");
RustFixtureBinaries.EnsureOpaqueBinary(fixturePath);

View File

@@ -1,6 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<UseXunitV3>true</UseXunitV3>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>preview</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
@@ -8,7 +9,6 @@
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<IsPackable>false</IsPackable>
<OutputType>Exe</OutputType>
<UseConcelierTestInfra>false</UseConcelierTestInfra>
<ConcelierTestingPath></ConcelierTestingPath>
<ConcelierSharedTestsPath></ConcelierSharedTestsPath>
</PropertyGroup>
@@ -26,13 +26,11 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="xunit.v3" Version="3.0.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3" />
<!-- Force newer versions to override transitive dependencies -->
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" />
<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageReference Include="xunit.v3" />
<!-- Force newer versions to override transitive dependencies -->
<PackageReference Include="Newtonsoft.Json" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
<PackageReference Include="BouncyCastle.Cryptography" />
</ItemGroup>
<ItemGroup>
@@ -48,6 +46,8 @@
</ItemGroup>
<ItemGroup>
<!-- Exclude Fixtures from compilation - they contain sample .NET projects with their own obj/ directories -->
<Compile Remove="Fixtures\**\*.cs" />
<None Include="Fixtures\**\*" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
</Project>
</Project>