diff --git a/docs/detectors/README.md b/docs/detectors/README.md index 3f9706eee..09828f3bd 100644 --- a/docs/detectors/README.md +++ b/docs/detectors/README.md @@ -137,7 +137,7 @@ | Detector | Status | | ----------------------- | ------------ | -| UvLockComponentDetector | Experimental | +| UvLockComponentDetector | Stable | - [Vcpkg](vcpkg.md) diff --git a/docs/detectors/uv.md b/docs/detectors/uv.md index 88c46c3f3..785086f93 100644 --- a/docs/detectors/uv.md +++ b/docs/detectors/uv.md @@ -6,7 +6,7 @@ ## Detection strategy -uv detection is performed by parsing a uv.lock found under the scan directory. +uv detection is performed by parsing a _uv.lock_ found under the scan directory. Full dependency graph generation is supported. diff --git a/src/Microsoft.ComponentDetection.Detectors/uv/UvLockComponentDetector.cs b/src/Microsoft.ComponentDetection.Detectors/uv/UvLockComponentDetector.cs index bea90afd0..5d9b7462a 100644 --- a/src/Microsoft.ComponentDetection.Detectors/uv/UvLockComponentDetector.cs +++ b/src/Microsoft.ComponentDetection.Detectors/uv/UvLockComponentDetector.cs @@ -11,7 +11,7 @@ namespace Microsoft.ComponentDetection.Detectors.Uv; using Microsoft.ComponentDetection.Detectors.Pip; using Microsoft.Extensions.Logging; -public class UvLockComponentDetector : FileComponentDetector, IExperimentalDetector +public class UvLockComponentDetector : FileComponentDetector { public UvLockComponentDetector( IComponentStreamEnumerableFactory componentStreamEnumerableFactory, diff --git a/src/Microsoft.ComponentDetection.Orchestrator/Experiments/Configs/UvLockDetectorExperiment.cs b/src/Microsoft.ComponentDetection.Orchestrator/Experiments/Configs/UvLockDetectorExperiment.cs deleted file mode 100644 index c5053e4d8..000000000 --- a/src/Microsoft.ComponentDetection.Orchestrator/Experiments/Configs/UvLockDetectorExperiment.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Microsoft.ComponentDetection.Orchestrator.Experiments.Configs; - -using Microsoft.ComponentDetection.Contracts; -using Microsoft.ComponentDetection.Detectors.Pip; -using Microsoft.ComponentDetection.Detectors.Uv; - -/// -/// Experiment to validate UvLockComponentDetector against PipComponentDetector. -/// -public class UvLockDetectorExperiment : IExperimentConfiguration -{ - /// - public string Name => "UvLockDetectorExperiment"; - - /// - public bool IsInControlGroup(IComponentDetector componentDetector) => componentDetector is PipReportComponentDetector; - - /// - public bool IsInExperimentGroup(IComponentDetector componentDetector) => componentDetector is UvLockComponentDetector; - - /// - public bool ShouldRecord(IComponentDetector componentDetector, int numComponents) => true; -} diff --git a/src/Microsoft.ComponentDetection.Orchestrator/Extensions/ServiceCollectionExtensions.cs b/src/Microsoft.ComponentDetection.Orchestrator/Extensions/ServiceCollectionExtensions.cs index 95df7a041..95fe15b13 100644 --- a/src/Microsoft.ComponentDetection.Orchestrator/Extensions/ServiceCollectionExtensions.cs +++ b/src/Microsoft.ComponentDetection.Orchestrator/Extensions/ServiceCollectionExtensions.cs @@ -73,7 +73,6 @@ public static IServiceCollection AddComponentDetection(this IServiceCollection s services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/test/Microsoft.ComponentDetection.Detectors.Tests/ComponentDetectorTests.cs b/test/Microsoft.ComponentDetection.Detectors.Tests/ComponentDetectorTests.cs index a85fdfd59..abba423dd 100644 --- a/test/Microsoft.ComponentDetection.Detectors.Tests/ComponentDetectorTests.cs +++ b/test/Microsoft.ComponentDetection.Detectors.Tests/ComponentDetectorTests.cs @@ -65,12 +65,12 @@ public void AllDetectorsHaveUniqueSupportedComponentTypes() } [TestMethod] - public void UvLockComponentDetector_ImplementsIExperimentalDetector() + public void UvLockComponentDetector_DoesNotImplementIExperimentalDetector() { var uvLockDetector = this.detectors.SingleOrDefault(d => d.Id == "UvLock"); uvLockDetector.Should().NotBeNull("because UvLockComponentDetector should be registered"); - uvLockDetector.Should().BeAssignableTo("because UvLockComponentDetector should implement IExperimentalDetector"); + uvLockDetector.Should().NotBeAssignableTo("because UvLockComponentDetector should not implement IExperimentalDetector"); } [TestMethod] diff --git a/test/Microsoft.ComponentDetection.Orchestrator.Tests/Experiments/UvLockDetectorExperimentTests.cs b/test/Microsoft.ComponentDetection.Orchestrator.Tests/Experiments/UvLockDetectorExperimentTests.cs deleted file mode 100644 index ea1b77bcb..000000000 --- a/test/Microsoft.ComponentDetection.Orchestrator.Tests/Experiments/UvLockDetectorExperimentTests.cs +++ /dev/null @@ -1,42 +0,0 @@ -#nullable disable -namespace Microsoft.ComponentDetection.Orchestrator.Tests.Experiments; - -using AwesomeAssertions; -using Microsoft.ComponentDetection.Detectors.Pip; -using Microsoft.ComponentDetection.Detectors.Uv; -using Microsoft.ComponentDetection.Orchestrator.Experiments.Configs; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -[TestClass] -public class UvLockDetectorExperimentTests -{ - private readonly UvLockDetectorExperiment experiment = new(); - - [TestMethod] - public void IsInControlGroup_ReturnsTrue_ForPipReportComponentDetector() - { - var pipReportDetector = new PipReportComponentDetector(null, null, null, null, null, null, null, null, null); - this.experiment.IsInControlGroup(pipReportDetector).Should().BeTrue(); - } - - [TestMethod] - public void IsInControlGroup_ReturnsFalse_ForPipComponentDetector() - { - var pipDetector = new PipComponentDetector(null, null, null, null, null); - this.experiment.IsInControlGroup(pipDetector).Should().BeFalse(); - } - - [TestMethod] - public void IsInExperimentGroup_ReturnsTrue_ForUvLockComponentDetector() - { - var uvLockDetector = new UvLockComponentDetector(null, null, null); - this.experiment.IsInExperimentGroup(uvLockDetector).Should().BeTrue(); - } - - [TestMethod] - public void ShouldRecord_AlwaysReturnsTrue() - { - var pipDetector = new PipComponentDetector(null, null, null, null, null); - this.experiment.ShouldRecord(pipDetector, 0).Should().BeTrue(); - } -}