Skip to content

Commit 1ee1dbc

Browse files
authored
Promote MSBuildBinLog Detector to experimental (#1829)
1 parent 300d88b commit 1ee1dbc

5 files changed

Lines changed: 25 additions & 10 deletions

File tree

README.md

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,34 @@ Component Detection can also be used as a library to detect dependencies in your
3333

3434
## Features
3535

36-
Component Detection supports detecting libraries from the following ecosystem:
36+
Component Detection supports detecting libraries from the following ecosystems:
3737

3838
| Ecosystem | Scanning | Graph Creation |
3939
| -------------------------------------------------------------------------------- | ----------------------------------------------- | -------------- |
40-
| CocoaPods |||
41-
| [Go](docs/detectors/go.md) |||
40+
| [CocoaPods](docs/detectors/cocoapods.md) |||
41+
| [Conan](docs/detectors/conan.md) |||
42+
| [Conda (Python)](docs/detectors/conda.md) |||
43+
| [Docker Compose](docs/detectors/dockercompose.md) |||
44+
| [Dockerfile](docs/detectors/dockerfile.md) |||
45+
| [DotNet SDK](docs/detectors/dotnet.md) |||
46+
| [Go](docs/detectors/go.md) || ✔ (with Go 1.11+) |
4247
| [Gradle (lockfiles only)](docs/detectors/gradle.md) |||
43-
| [Linux (Debian, Alpine, Rhel, Centos, Fedora, Ubuntu)](docs/detectors//linux.md) | ✔ (via [syft](https://github.com/anchore/syft)) ||
48+
| [Helm](docs/detectors/helm.md) |||
49+
| [Ivy](docs/detectors/ivy.md) |||
50+
| [Linux (Debian, Alpine, Rhel, Centos, Fedora, Ubuntu)](docs/detectors/linux.md) | ✔ (via [syft](https://github.com/anchore/syft)) ||
4451
| [Maven](docs/detectors/maven.md) |||
4552
| [NPM (including Yarn, Pnpm)](docs/detectors/npm.md) |||
4653
| [NuGet (including Paket)](docs/detectors/nuget.md) |||
4754
| [Pip (Python)](docs/detectors/pip.md) |||
4855
| [Poetry (Python, lockfiles only)](docs/detectors/poetry.md) |||
49-
| Ruby |||
50-
| Rust |||
56+
| [Ruby](docs/detectors/ruby.md) |||
57+
| [Rust (Cargo)](docs/detectors/rust.md) |||
58+
| [SPDX SBOM](docs/detectors/spdx.md) |||
59+
| [Swift](docs/detectors/swift.md) |||
60+
| [Uv (Python)](docs/detectors/uv.md) |||
61+
| [Vcpkg](docs/detectors/vcpkg.md) |||
62+
63+
See the [detectors directory](docs/detectors/README.md) for the current status (Stable, Experimental, or DefaultOff) of each individual detector.
5164

5265
For a complete feature overview refer to [feature-overview.md](docs/feature-overview.md)
5366

docs/detectors/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
| NuGetComponentDetector | Stable |
8888
| NuGetPackagesConfigDetector | Stable |
8989
| NuGetProjectModelProjectCentricComponentDetector | Stable |
90-
| MSBuildBinaryLogComponentDetector | DefaultOff |
90+
| MSBuildBinaryLogComponentDetector | Experimental |
9191

9292
- [Pip](pip.md)
9393

docs/detectors/nuget.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ The `NuGetPackagesConfig` detector raises NuGet components referenced by project
3838

3939
## MSBuildBinaryLog
4040

41-
The `MSBuildBinaryLog` detector is a **DefaultOff** detector intended to eventually replace both the `NuGetProjectCentric` and `DotNet` detectors. It combines MSBuild binary log (binlog) information with `project.assets.json` to provide enhanced component detection with project-level classifications.
41+
The `MSBuildBinaryLog` detector is an **Experimental** detector intended to eventually replace both the `NuGetProjectCentric` and `DotNet` detectors. It combines MSBuild binary log (binlog) information with `project.assets.json` to provide enhanced component detection with project-level classifications.
42+
43+
As an experimental detector, it runs automatically whenever a scan is performed, but its results are not reported as part of the normal scan output. Instead, the results are compared against the existing `NuGetProjectCentric` and `DotNet` detectors and recorded as telemetry so maintainers can evaluate parity before promoting the detector to default.
4244

4345
It looks for `project.assets.json` files and separately discovers `*.binlog` files. The binlog provides build-time context that isn't available from `project.assets.json` alone.
4446

docs/feature-overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
| NPM | <ul><li>package.json</li><li>package-lock.json</li><li>npm-shrinkwrap.json</li><li>lerna.json</li></ul> | - | ✔ (dev-dependencies in package.json, dev flag in package-lock.json) ||
1212
| Yarn (v1, v2) | <ul><li>package.json</li><li>yarn.lock</li></ul> | - | ✔ (dev-dependencies in package.json) ||
1313
| Pnpm | <ul><li>shrinkwrap.yaml</li><li>pnpm-lock.yaml</li></ul> | - | ✔ (packages/{package}/dev flag) ||
14-
| NuGet | <ul><li>project.assets.json</li><li>*.nupkg</li><li>*.nuspec</li><li>packages.config</li><li>nuget.config</li><li>*.binlog (DefaultOff)</li></ul> | - | - | ✔ (required project.assets.json) |
14+
| NuGet | <ul><li>project.assets.json</li><li>*.nupkg</li><li>*.nuspec</li><li>packages.config</li><li>nuget.config</li><li>*.binlog (Experimental)</li></ul> | - | - | ✔ (required project.assets.json) |
1515
| Pip (Python) | <ul><li>setup.py</li><li>requirements.txt</li><li>*setup=distutils.core.run_setup({setup.py}); setup.install_requires*</li><li>dist package METADATA file</li></ul> | <ul><li>Python 2 or Python 3</li><li>Internet connection</li></ul> |||
1616
| Poetry (Python) | <ul><li>poetry.lock</li><ul> | - |||
1717
| Ruby | <ul><li>gemfile.lock</li></ul> | - |||

src/Microsoft.ComponentDetection.Detectors/nuget/MSBuildBinaryLogComponentDetector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace Microsoft.ComponentDetection.Detectors.NuGet;
4848
/// - Fallback mode: When no binlog info is available, falls back to standard NuGet detection.
4949
/// </para>
5050
/// </remarks>
51-
public class MSBuildBinaryLogComponentDetector : FileComponentDetector, IDefaultOffComponentDetector
51+
public class MSBuildBinaryLogComponentDetector : FileComponentDetector, IExperimentalDetector
5252
{
5353
private readonly IBinLogProcessor binLogProcessor;
5454
private readonly IFileUtilityService fileUtilityService;

0 commit comments

Comments
 (0)