component-detection/README.md

Failed to ignore revisions in .git-blame-ignore-revs.

104 строки
5.4 KiB
Markdown
Исходник Обычный вид История

2021-11-19 17:07:50 +03:00
# Component Detection
2021-11-19 21:19:04 +03:00
![Component Detection CI](https://github.com/microsoft/component-detection/workflows/Component%20Detection%20CI/badge.svg)
2021-11-19 17:07:50 +03:00
**For bugs, issues, and support please create an issue.**
# Introduction
2021-11-19 21:19:04 +03:00
ComponentDetection is a package scanning tool intended to be used at build time. CD produces a graph-based output of all detected components and supports a variety of open source package ecosystems.
2021-11-19 17:07:50 +03:00
# Table of Contents
* [Feature Overview](#Feature-Overview)
* [My favorite language/ecosystem isn't supported!](#My-favorite-language/ecosystem-isn't-supported!)
2021-11-19 21:19:04 +03:00
* [Building and running Component Detection](#Building-and-running-Component-Detection)
2021-11-19 17:07:50 +03:00
* [Running in Visual Studio (2019+)](#Running-in-Visual-Studio-(2019+))
* [Running from command line](#Running-from-command-line)
* [After building](#After-building)
* [A detector is marked as DefaultOff/Experimental. What does that mean?](#A-detector-is-marked-as-DefaultOff/Experimental.-What-does-that-mean?)
* [Telemetry](#Telemetry)
# Feature Overview
| Ecosystem | Scanning | Graph Creation |
| - | - | - |
| CocoaPods | ✔ | ✔ |
| Linux (Debian, Alpine, Rhel, Centos, Fedora, Ubuntu)| ✔ (via [syft](https://github.com/anchore/syft)) | ❌ |
| Gradle (lockfiles only) | ✔ | ❌ |
| Go | ✔ | ❌ |
| Maven | ✔ | ✔ |
| NPM (including Yarn, Pnpm) | ✔ | ✔ |
| NuGet (including Paket) | ✔ | ✔ |
2021-11-19 17:07:50 +03:00
| Pip (Python) | ✔ | ✔ |
| Poetry (Python, lockfiles only) | ✔ | ❌ |
2021-11-19 17:07:50 +03:00
| Ruby | ✔ | ✔ |
| Rust | ✔ | ✔ |
For a complete feature overview refer to [feature-overview.md](docs/feature-overview.md)
# My favorite language/ecosystem isn't supported!
2021-11-19 21:19:04 +03:00
Component Detection is built with extensibility in mind! Please see our [CONTRIBUTING.md](CONTRIBUTING.md) to get started where you can find additional docs on adding your own detector.
2021-11-19 17:07:50 +03:00
2021-11-19 21:19:04 +03:00
# Building and running Component Detection
2021-12-10 02:43:13 +03:00
.NET Core 3.1 is currently in use, you can install it from https://dotnet.microsoft.com/download/dotnet/3.1
2021-11-19 17:07:50 +03:00
The below commands mirror what we do to setup our CI environments:
From the base folder:
``` dotnet build ```
## Running in Visual Studio (2019+)
1. open [ComponentDetection.sln](ComponentDetection.sln) in Visual Studio
1. Set the Loader project as the startup project (rightclick-> Set as Startup Project)
1. Set Run arguments for the Loader project (rightclick->properties->Debug)
*Minimum:* `scan --SourceDirectory <Repo to scan>`
1. Now, any time you make a change, you can press `F5`. This will build the changes, and start the process in debug mode (hitting any breakpoints you set)
## Using Codespaces
2021-11-19 21:19:04 +03:00
If you have access to [GitHub Codespaces](https://docs.github.com/en/free-pro-team@latest/github/developing-online-with-codespaces/about-codespaces), select the `Code` button from the [repository homepage](https://github.com/microsoft/component-detection) then select `Open with Codespaces`. That's it! You have a full developer environment that supports debugging, testing, auto complete, jump to definition, everything you would expect.
2021-11-19 17:07:50 +03:00
## Using VS Code DevContainer
This is similar to Codespaces:
1. Make sure you meet [the requirements](https://code.visualstudio.com/docs/remote/containers#_getting-started) and follow the installation steps for DevContainers in VS Code
2021-11-19 21:19:04 +03:00
1. `git clone https://github.com/microsoft/component-detection`
2021-11-19 17:07:50 +03:00
1. Open this repo in VS Code
1. A notification should popup to reopen the workspace in the container. If it doesn't, open the [`Command Palette`](https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_command-palette) and type `Remote-Containers: Reopen in Container`.
## Running from command line
The most basic run:
```
dotnet run --project src/Microsoft.ComponentDetection scan --SourceDirectory .\
```
You can add `--no-restore` or `--no-build` if you don't want to rebuild before the run
You can add `--Debug` to get the application to wait for debugger attachment to complete.
## After building
Additional arguments for detection can be found in [detector arguments](docs/detector-arguments.md)
# A detector is marked as DefaultOff/Experimental. What does that mean?
Detectors have 3 levels of "stability":
* `DefaultOff`
* `Experimental`
* `Stable`
DefaultOff detectors need to be explicitly enabled to run and produce a final graph output. Experimental detectors run by default but **will not** produce a final graph output. Stable detectors run and produce a final graph output by default. Here is how you can [enable default off/experimental](./docs/enable-default-off.md) detectors. The status of each detector can also be found [here](./docs/detectors/README.md)
2021-11-19 17:07:50 +03:00
# Telemetry
By default, telemetry will output to your output file path and will be a JSON blob. No data is submitted to Microsoft.
# Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
# Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.