Skip to main content

A Python module for extracting and analyzing remediation status metrics from Black Duck

Project description

Black Duck Remediation Metrics

A Python module for extracting and analyzing remediation status metrics from Black Duck.

Description

This script is used to export remediation status for a given level. By default, the script exports the status for all projects in a given Black Duck instance. There are filtering options implemented to limit the project count.

Features

  • Export remediation status for all projects in a Black Duck instance
  • Filter by project groups (including recursive sub-groups)
  • Filter by specific projects and versions
  • Filter by phase categories (PLANNING, DEVELOPMENT, RELEASED, DEPRECATED, ARCHIVED, PRERELEASE)
  • Filter by distribution categories (EXTERNAL, SAAS, INTERNAL, OPENSOURCE)
  • Generate HTML, PDF, and JSON reports
  • Generate interactive dashboards with charts and visualizations
  • Cache support for improved performance
  • Progress tracking with progress bars

Installation

From PyPI (when published)

pip install blackduck-remediation-metrics

From source

git clone https://github.com/jounilehto/blackduck-remediation-metrics.git
cd blackduck-remediation-metrics
pip install -e .[dev]

Requirements

Optional Dependencies

For enhanced dashboard features with Playwright:

pip install blackduck-remediation-metrics[playwright]
playwright install

Usage

Getting an Access Token

To get an Access Token, use your Internet browser and go to:

<BD_URL>/api/current-user/tokens?limit=100&offset=0

Click "+ Create Token", give it a name and Scope: "Read and Write Access", then click "Create". Copy and paste the given access token.

NOTE: After you click "Close", you cannot see the token anymore.

Command Line Interface

Print version

bd-metrics --version
# or
bd-metrics -v

Generate HTML and PDF reports for all projects

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --html --pdf --json

Generate interactive dashboard

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --dashboard --json

Use cache for improved performance

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --cache --html --pdf --json

Filter by project group

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --project-group="<PROJECT_GROUP_NAME>" --html --pdf

Filter by specific project and version

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --project="<PROJECT_NAME>" --project-version="<PROJECT_VERSION_NAME>" --html --pdf

Filter by phase categories

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --phaseCategories="PLANNING,DEVELOPMENT" --html --pdf

Filter by distribution categories

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --distributionCategories="EXTERNAL" --html

Specify output directory

bd-metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --dir="./reports" --html --pdf

Command-Line Parameters

Required Parameters

Parameter Description Environment Variable
--url Base URL for Black Duck Hub BD_URL
--token Black Duck access token BD_TOKEN

Note: Both parameters can be set via environment variables instead of command-line arguments.

Project/Version Filtering

Parameter Description Default
--project Filter by specific Black Duck project name None (all projects)
--project-version Filter by specific project version name (requires --project) None (all versions)
--project-group Filter by project group name (includes sub-groups recursively) None

Phase and Distribution Filtering

Parameter Description Default Options
--phaseCategories Comma-separated list of version phases to include All phases PLANNING, DEVELOPMENT, RELEASED, DEPRECATED, ARCHIVED, PRERELEASE
--distributionCategories Comma-separated list of version distributions to include All distributions EXTERNAL, SAAS, INTERNAL, OPENSOURCE

Report Generation Options

Parameter Description Type
--html Generate HTML report Flag
--pdf Generate PDF report (requires wkhtmltopdf) Flag
--json Generate JSON report Flag
--csv Generate CSV report Flag
--dashboard Generate interactive dashboard HTML report with charts Flag

Note: You can specify multiple report types in a single run.

Cache and Database Options

Parameter Description Default
--cache Use TinyDB as a cache for improved performance on subsequent runs Disabled
--db_file TinyDB database file path bd_remediation_db.json
--cache_truncate Clean/truncate the cache file before running Disabled

Output and Logging Options

| Parameter | Description | Default | |-----------|-------------|---------|| -v, --version | Display version information and exit | N/A || --dir | Output directory for generated reports | . (current directory) | | --log_level | Logging level for console output | INFO | | --sinceDays | Number of days to mark project versions as dormant (shows warning icon) | 30 | | --show-empty | Show project/version rows with all-zero counts in the triage status HTML report (hidden by default) | Disabled |

Environment Variables

You can set token and URL parameters as environment variables:

export BD_TOKEN="<BD_TOKEN>"
export BD_URL="<BD_URL>"

Then run without --token and --url arguments:

bd-metrics --html --pdf

Proxy Configuration

If a proxy is needed, use the export method:

export HTTP_PROXY='http://10.10.10.10:8000'
export HTTPS_PROXY='https://10.10.10.10:1212'

Using as a Python Module

from blackduck_remediation_metrics import main

# Call the main function (sys.argv will be used for arguments)
main()

Or run as a module:

python -m blackduck_remediation_metrics --token="<ACCESS_TOKEN>" --url="<BD_URL>" --html

Project Structure

blackduck-remediation-metrics/
├── src/
│   └── blackduck_remediation_metrics/
│       ├── __init__.py
│       ├── __main__.py
│       ├── blackduck_triage_extract.py
│       └── templates/
│           ├── BD_Results_Distribution_by_Triage_Status_v3.html
│           └── BD_Results_Triage_Dashboard.html
├── tests/
├── pyproject.toml
├── requirements.txt
├── setup.py
├── README.md
└── LICENSE

Version History

  • 0.1.21 - Added --show-empty flag for triage report, version-level zero filtering, sortable dashboard table, hide-empty-rows toggle in dashboard
  • 0.1.20 - Added -v/--version flag, renamed parameters to --project-version and --project-group for consistency
  • 0.1.19 - Added comprehensive command-line parameter documentation to README
  • 0.1.18 - Fixed pyproject.toml license configuration for PEP 639 compliance
  • 0.1.17 - Added new look and feel, added policy violations, added data visualization
  • 0.1.16 - Added link to policy violation from policy name in the report
  • 0.1.15 - Fixed issue where totalCount key was missing
  • 0.1.14 - Fixed issue where key word snippetScanPresent was missing
  • 0.1.13 - Added missing remediation statuses UNDER_INVESTIGATION and AFFECTED
  • 0.1.12 - Fixed issues where there might be vulnerabilities without severity
  • 0.1.11 - Added NOT_AFFECTED remediation type and removed BetterJSONStorage usage
  • 0.1.10 - Added progressbar using tqdm to show progress of project analysis phases
  • 0.1.9 - Added feature to export report in JSON format
  • 0.1.8 - Added check if project has updated compared to last run
  • 0.1.7 - Changed to use BetterJSONStorage to improve performance and reduce database size
  • 0.1.6 - Added triangle icon and last scanned date for project versions
  • 0.1.5 - Added usage of TinyDB for caching BD metrics

License

MIT License

Author

Jouni Lehto

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions, please use the GitHub issue tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blackduck_remediation_metrics-0.1.21.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file blackduck_remediation_metrics-0.1.21.tar.gz.

File metadata

File hashes

Hashes for blackduck_remediation_metrics-0.1.21.tar.gz
Algorithm Hash digest
SHA256 9d8e59c5f6acc2df41701f310d822b34940f031108c06dce84ebe8b0c197b5c9
MD5 0ef3d940b368a3f16ad301cb1f0fd800
BLAKE2b-256 87a6fc33bb162ee38f9fe51138878ce522908b569c33421f415fef47cd6cec76

See more details on using hashes here.

File details

Details for the file blackduck_remediation_metrics-0.1.21-py3-none-any.whl.

File metadata

File hashes

Hashes for blackduck_remediation_metrics-0.1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 fb5029b3d32ca4293435b02321410049690b7e59bc5b493abb1b37dc46b5600b
MD5 5250c01cdeb9ed9302634ae0cf017fc6
BLAKE2b-256 877b8f4a704ba7d9875fb7403d08a16e0a8a13bf9fe69495b4027c8dba48719c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page