- Connects to RIPE RIS Live stream to receive real-time BGP updates - Stores BGP data in SQLite database: - ASNs with first/last seen timestamps - Prefixes with IPv4/IPv6 classification - BGP announcements and withdrawals - AS-to-AS peering relationships from AS paths - Live routing table tracking active routes - HTTP server with statistics endpoints - Metrics tracking with go-metrics - Custom JSON unmarshaling to handle nested AS sets in paths - Dependency injection with uber/fx - Pure Go implementation (no CGO) - Includes streamdumper utility for debugging raw messages
93 lines
2.3 KiB
YAML
93 lines
2.3 KiB
YAML
version: "2"
|
|
|
|
run:
|
|
go: "1.24"
|
|
tests: false
|
|
|
|
linters:
|
|
enable:
|
|
# Additional linters requested
|
|
- testifylint # Checks usage of github.com/stretchr/testify
|
|
- usetesting # usetesting is an analyzer that detects using os.Setenv instead of t.Setenv since Go 1.17
|
|
# - tagliatelle # Disabled: we need snake_case for external API compatibility
|
|
- nlreturn # nlreturn checks for a new line before return and branch statements
|
|
- nilnil # Checks that there is no simultaneous return of nil error and an invalid value
|
|
- nestif # Reports deeply nested if statements
|
|
- mnd # An analyzer to detect magic numbers
|
|
- lll # Reports long lines
|
|
- intrange # intrange is a linter to find places where for loops could make use of an integer range
|
|
- gochecknoglobals # Check that no global variables exist
|
|
|
|
# Default/existing linters that are commonly useful
|
|
- govet
|
|
- errcheck
|
|
- staticcheck
|
|
- unused
|
|
- ineffassign
|
|
- misspell
|
|
- revive
|
|
- gosec
|
|
- unconvert
|
|
- unparam
|
|
|
|
linters-settings:
|
|
lll:
|
|
line-length: 120
|
|
|
|
nestif:
|
|
min-complexity: 4
|
|
|
|
nlreturn:
|
|
block-size: 2
|
|
|
|
revive:
|
|
rules:
|
|
- name: var-naming
|
|
arguments:
|
|
- []
|
|
- []
|
|
- "upperCaseConst=true"
|
|
|
|
tagliatelle:
|
|
case:
|
|
rules:
|
|
json: snake
|
|
yaml: snake
|
|
xml: snake
|
|
bson: snake
|
|
|
|
testifylint:
|
|
enable-all: true
|
|
|
|
usetesting: {}
|
|
|
|
issues:
|
|
max-issues-per-linter: 0
|
|
max-same-issues: 0
|
|
exclude-rules:
|
|
# Exclude unused parameter warnings for cobra command signatures
|
|
- text: "parameter '(args|cmd)' seems to be unused"
|
|
linters:
|
|
- revive
|
|
|
|
# Allow ALL_CAPS constant names
|
|
- text: "don't use ALL_CAPS in Go names"
|
|
linters:
|
|
- revive
|
|
|
|
# Allow snake_case JSON tags for external API compatibility
|
|
- path: "internal/types/ris.go"
|
|
linters:
|
|
- tagliatelle
|
|
|
|
# Allow snake_case JSON tags for database models
|
|
- path: "internal/database/models.go"
|
|
linters:
|
|
- tagliatelle
|
|
|
|
# Allow generic package name for types that define data structures
|
|
- path: "internal/types/"
|
|
text: "avoid meaningless package names"
|
|
linters:
|
|
- revive
|