GithubHelp home page GithubHelp logo

isabella232 / gobom Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mattermost/gobom

0.0 0.0 0.0 3.32 MB

An extensible CycloneDX BOM generator and Dependency-Track API client written in Go

License: Apache License 2.0

Go 100.00%

gobom's Introduction

gobom

An extensible CycloneDX BOM generator and Dependency-Track API client written in Go.

Installation

go get github.com/mattermost/gobom/cmd/gobom

Usage

gobom generate --recurse --url https://dependency-track.example.com --key $DEPENDENCY_TRACK_API_KEY --project projectname@version /path/to/project/

What does it do?

gobom generate generates a CycloneDX BOM for your software project. Dependencies from multiple ecosystems can be included in a single BOM file: e.g. a React Native project can be scanned recurisvely using the default generators, and the output will include both JavaScript and native dependencies.

Generated component information includes valid PURLs for all components (compatible with OSS Index) and descriptions that show the ecosystem the dependency was included through, as well as the shortest path to the root project for transitive dependencies.

gobom upload uploads an existing BOM file to a Dependency-Track server for analysis. Upload can also be invoked through generate simply by including the relevant flags.

What doesn't it do?

gobom does not analyze vulnerabilities; that's what the Dependency-Track integration is for. It only aims to generate an accurate listing of the dependencies in a project.

gobom only supports a very limited subset of the CycloneDX specification required for successful vulnerability analysis. In particular, it does not generate full dependency graphs but only component listings. This is because Dependency-Track currently has no support for displaying dependency graphs; generating them would be of no benefit to Dependency-Track users.

gobom has only been tested for interoperability with Dependency-Track. Interoperability with any other CycloneDX tooling is not guaranteed or even expected at this time.

Supported generators

Built-in BOM generators include support for:

  • Go modules (generators/gomod)
  • npm (generators/npm)
  • CocoaPods (generators/cocoapods)
  • Gradle (generators/gradle)

The npm and CocaPods generators are based on parsing lockfiles and have no runtime dependencies. The Go and Gradle generators respectively depend on the go and gradle command line tools at runtime. Gradle wrappers are supported.

Help specific to each generator can be viewed using gobom help generators/gradle; just replace the generator name with the one that interests you.

Adding custom generators

gobom was designed to be extensible. Have a legacy project where you're tracking dependencies in a custom text file? Want to add support for another language but not ready to contribute to the main project just yet? No problem.

gobom can be extended without forking the main project: just implement your own generator, import it and github.com/mattermost/gobom/commands in your main package, and call commands.Execute() to get the full command line interface.

See the example here for more details.

gobom's People

Contributors

dependabot[bot] avatar jupenur avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.