github.com/nikolaydubina/import-graph

Collect data about your dependencies


Keywords
go, graph, source-code-analysis, tools
License
MIT
Install
go get github.com/nikolaydubina/import-graph

Documentation

Collect data about your dependencies

Tests Go Report Card go-recipes OpenSSF Scorecard

$ go install github.com/nikolaydubina/jsonl-graph@latest
$ go install github.com/nikolaydubina/import-graph@latest
# and get https://graphviz.org/download/

Features

  • Go modules, runs tests, detects tests and benchmarks
  • git log
  • goreportcard.com
  • codecov.io
  • Analyzes README.md
  • Checks if mentioned in Awesome lists
  • GitHub Stars
  • GitHub verified Organizations
  • reuse go get and go list to get code loaded by native Go routines
  • ... add yours here

Example

$ go mod graph | import-graph -i=gomod | jsonl-graph -color-scheme=file://$PWD/basic.json | dot -Tsvg > output.svg

gin-example

Output in JSONL graph

$ go mod graph | import-graph -i=gomod
{"id":"golang.org/x/net","can_get_gitstats":true,"can_get_codecov":false, ... }
...
{"from":"github.com/gin-gonic/gin","to":"github.com/gin-contrib/sse"}
{"from":"github.com/gin-gonic/gin","to":"github.com/go-playground/validator/v10"}

Pretty-print with jq

$ go mod graph | import-graph -i=gomod | jq -f
...
{
    "id": "github.com/gin-gonic/gin",
    "can_get_git": true,
    "can_get_codecov": true,
    "can_get_goreportcard": true,
    "can_run_tests": true,
    "github_url": "https://github.com/gin-gonic/gin",
    "git_url": "https://github.com/gin-gonic/gin",
    "git_last_commit": "2021-04-21",
    "git_last_commit_days_since": 3,
    "git_num_contributors": 321,
    "codecov_url": "https://app.codecov.io/gh/gin-gonic/gin",
    "codecov_files": 41,
    "codecov_lines": 2036,
    "codecov_coverage": 98.67,
    "gotest_has_tests": true,
    "gotest_all_tests_passed": true,
    "gotest_num_packages": 6,
    "gotest_num_packages_with_tests": 4,
    "gotest_num_packages_tests_passed": 4,
    "gotest_package_coverage_avg": 98.9,
    "goreportcard_average": 0.99,
    "goreportcard_grade": "A+",
    "goreportcard_files": 82,
    "goreportcard_issues": 6,
    "files_has_benchmarks": true,
    "files_has_tests": true
    ...
}
...

Notes

For GitHub you need to set to set in environment GITHUB_IMPORT_GRAPH_TOKEN to your personal GitHub token. It does not need any permissions at all. It is needed for higher quota of GitHub API calls.

Related Projects