Go Module
Scan Go module files (.mod) for GitHub repository dependencies.
Scanning module files enables the compile pipeline to pull these repositories and scan their source files for symbols to build metadata dictionaries.
Configuration
To configure the Go module module, Edit these settings.
Below is the default configuration from: gomod/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ29tb2QiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInB1bGxHaXRIdWJUb2tlbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiR2l0SHViIEFQSSB0b2tlbiBmb3IgcHVsbGluZyByZXBvc2l0b3JpZXNcblxuRGVmaW5lcyBhbiBhY2Nlc3MgdG9rZW4gZm9yIHB1bGxpbmcgW0dpdGh1YiByZXBvc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZ2l0aHViLykgcmVmZXJlbmNlZCBieSBHbyAubW9kIGZpbGVzLiBJZiBub3Qgc2V0LCBkbyBub3QgcHVsbCBHaXRIdWIgcmVwb3MgZm9yIEdvIGRlcGVuZGVuY2llcy4iCiAgICAgICAgfSwKICAgICAgICAicHJveHlVUkwiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkdvIG1vZHVsZSBwcm94eSBVUkxcblxuU3BlY2lmaWVzIGEgR28gbW9kdWxlIHByb3h5IGZvciBkb3dubG9hZGluZyBpbmRpcmVjdCBtb2R1bGUgZGVwZW5kZW5jaWVzLiBJZiBvbWl0dGVkLCBvbmx5IHByb2Nlc3MgZGlyZWN0IGRlcGVuZGVuY2llcyBmcm9tIHRoZSBnby5tb2QgZmlsZS4gSWYgcHJvdmlkZWQsIGZldGNoZXMgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHVwIHRvIHRoZSBzcGVjaWZpZWQgbWF4LWRlcHRoLiAoRGVmYXVsdDogW2h0dHBzOi8vcHJveHkuZ29sYW5nLm9yZ10oaHR0cHM6Ly9wcm94eS5nb2xhbmcub3JnKSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIltodHRwczovL3Byb3h5LmdvbGFuZy5vcmddKGh0dHBzOi8vcHJveHkuZ29sYW5nLm9yZykiCiAgICAgICAgfSwKICAgICAgICAibWF4UmVwb3MiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGltaXQgdGhlIG92ZXJhbGwgbnVtYmVyIG9mIEdpdEh1YiByZXBvcyB0byBwdWxsXG5cblNwZWNpZmllcyBhIGdsb2JhbCBsaW1pdCBmb3IgdGhlIG51bWJlciBvZiByZXBvc2l0b3JpZXMgY29sbGVjdGVkIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMjAwCiAgICAgICAgfSwKICAgICAgICAibWF4RGVwdGgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGltaXQgdGhlIGRlcHRoIG9mIG1vZHVsZSBkZXBlbmRlbmN5IHJlY3Vyc2lvblxuXG5EZXB0aCBzdGFydHMgYXQgMCBmb3IgdGhlIGluaXRpYWwgLm1vZCBmaWxlIChkaXJlY3QgZGVwcyksIGluY3JlbWVudHMgdG8gMSBmb3IgZmlyc3QtbGV2ZWwgaW5kaXJlY3QgZGVwcywgYW5kIDIgZm9yIHNlY29uZC1sZXZlbCwgc3RvcHBpbmcgYmVmb3JlIGEgdGhpcmQgbGV2ZWwgKGRlcHRoIDMpLiAgRGVwdGggTGltaXQgKDIpOiAgLSBMZXZlbCAwOiBEaXJlY3QgZGVwZW5kZW5jaWVzIGluIHlvdXIgLm1vZCBmaWxlLiAtIExldmVsIDE6IERlcGVuZGVuY2llcyBvZiB0aG9zZSBkaXJlY3QgbW9kdWxlcy4gLSBMZXZlbCAyOiBEZXBlbmRlbmNpZXMgb2YgbGV2ZWwgMSBtb2R1bGVzLiAgU3RvcHMgYXQgbGV2ZWwgMywgY292ZXJpbmcgdHdvIGxldmVscyBvZiBpbmRpcmVjdCBkZXBlbmRlbmNpZXMuIEZvciBtb3N0IEdvIHByb2plY3RzLCB0aGlzIGNhcHR1cmVzIHRoZSBidWxrIG9mIHJlbGV2YW50IEdpdEh1YiByZXBvcyB3aXRob3V0IGV4cGxvZGluZyBydW50aW1lLiAgRXhhbXBsZTogSWYgeW91ckFwcCDihpIgZ29sYW5nLm9yZy94L3Rvb2xzIOKGkiBnaXRodWIuY29tL2dvbGFuZy9nbywgZGVwdGggMiBnZXRzIGJvdGgsIGJ1dCBzdG9wcyBiZWZvcmUgZmV0Y2hpbmcgZ2/igJlzIGRlcHMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'compile' Go module scanner configuration
# Configures the Go .mod scanner which pulls referenced GitHub repositories to scan for symbol values.
# To learn more see https://doc.log10x.com/compile/pull/gomod
# Set the 10x pipeline to 'compile'
tenx: compile
# =============================== Gomod Options ===============================
gomod:
# 'token' specifies the access token for this repo using a shell variable (recommended) or inline
# To learn more see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
pullGitHubToken: $=TenXEnv.get("GH_TOKEN") # (❗ EnvVar REQUIRED)
# 'proxyURL' specifies a Go module proxy for downloading indirect module dependencies.
# If omitted, only process direct dependencies from the go.mod file.
# If provided, fetches indirect dependencies up to the specified max-depth.
proxyURL: https://proxy.golang.org/
# 'maxDepth' limits the depth of module dependency recursion
# Depth starts at 0 for the initial .mod file (direct deps), increments to 1 for first-level indirect deps,
# and 2 for second-level, stopping before a third level (depth 3).
maxDepth: 0
Options
Specify the options below to configure the Go module:
| Name | Description |
|---|---|
| gomodPullGitHubToken | GitHub API token for pulling repositories |
| gomodProxyURL | Go module proxy URL |
| gomodMaxRepos | Limit the overall number of GitHub repos to pull |
| gomodMaxDepth | Limit the depth of module dependency recursion |
gomodPullGitHubToken
GitHub API token for pulling repositories.
| Type | Default |
|---|---|
| String | "" |
Defines an access token for pulling Github repos referenced by Go .mod files. If not set, do not pull GitHub repos for Go dependencies.
gomodProxyURL
Go module proxy URL.
| Type | Default |
|---|---|
| String | https://proxy.golang.org |
Specifies a Go module proxy for downloading indirect module dependencies. If omitted, only process direct dependencies from the go.mod file. If provided, fetches indirect dependencies up to the specified max-depth.
gomodMaxRepos
Limit the overall number of GitHub repos to pull.
| Type | Default |
|---|---|
| Number | 200 |
Specifies a global limit for the number of repositories collected.
gomodMaxDepth
Limit the depth of module dependency recursion.
| Type | Default |
|---|---|
| Number | 0 |
Depth starts at 0 for the initial .mod file (direct deps), increments to 1 for first-level indirect deps, and 2 for second-level, stopping before a third level (depth 3).
Depth Limit (2):
- Level 0: Direct dependencies in your .mod file.
- Level 1: Dependencies of those direct modules.
- Level 2: Dependencies of level 1 modules.
Stops at level 3, covering two levels of indirect dependencies. For most Go projects, this captures the bulk of relevant GitHub repos without exploding runtime.
Example: If yourApp → golang.org/x/tools → github.com/golang/go, depth 2 gets both, but stops before fetching go’s deps.
This module is defined in gomod/module.yaml.