Documentation
¶
Index ¶
- Variables
- func CalculateCheckedComponents(id string, querySites, migrationFiles, totalFiles int) int
- func CountParameters(sql string) int
- func GenerateMarkdownReport(result *AuditResult, rootDir string) string
- func GetRuleDescription(ruleCode string) string
- func NormalizeRuleCode(raw string) string
- type AuditConfig
- type AuditResult
- type Issue
- type MetricsTracker
- func (m *MetricsTracker) AddIssue(issue Issue)
- func (m *MetricsTracker) IncrementMigrationFiles(n int)
- func (m *MetricsTracker) IncrementParameterizedSites(n int)
- func (m *MetricsTracker) IncrementQuerySites(n int)
- func (m *MetricsTracker) IncrementScannedFiles(n int)
- func (m *MetricsTracker) SetAttachedRules(rules []RuleAuditInfo)
- func (m *MetricsTracker) Snapshot() *AuditResult
- type RuleAuditInfo
- type RuleMetadata
Constants ¶
This section is empty.
Variables ¶
var CanonicalDescriptions = map[string]string{
"A01": "UNSAFE_SQL_CONCATENATION",
"A02": "MISSING_DEFER_CLOSE",
"A03": "UNBOUNDED_CONTEXT",
"A04": "UNSAFE_ORDER_BY",
"A05": "AUDIT_LOG_IMMUTABILITY",
"A06": "RUNTIME_DDL",
"A07": "ERROR_LEAK",
"A08": "TX_EXTERNAL_IO",
"A09": "ADVISORY_LOCK",
"A10": "ISOLATION_LEVEL",
"A11": "DESTRUCTIVE_MIGRATION",
"A12": "TIMEOUT_CONFIG",
"A13": "MISSING_DOWN_MIGRATION",
"A14": "FORBIDDEN_SELECT_STAR",
"A15": "FORBIDDEN_DDL_APP_ROLE_GRANT",
"A16": "MAX_CONNS_CONFIG",
"A17": "FORBIDDEN_QUERY_IN_LOOP",
"A18": "MISSING_ROWS_ERR_CHECK",
"A19": "UNBOUNDED_QUERY_LIMIT",
"A20": "PARAM_LIMIT_65535",
"A21": "UNBOUNDED_ROW_LOCK_BLOCKING",
"A22": "SERIALIZATION_FAILURE_RETRY",
"A23": "TRANSACTION_TIMEOUT_CONFIG",
"A24": "TENANT_ISOLATION_LEAK",
"A25": "EXPENSIVE_CPU_IN_TRANSACTION",
"A26": "LIKE_WILDCARD_INJECTION",
"A27": "NON_CONCURRENT_INDEX_CREATION",
"A28": "TABLE_LOCKING_CONSTRAINT_ADDITION",
"A29": "UNINDEXED_FOREIGN_KEY",
"A30": "TIMESTAMP_WITHOUT_TIMEZONE",
"E001": "UNABLE_TO_ANALYZE_MIGRATION",
}
CanonicalDescriptions provides standardized descriptions for standard Argus rules.
var RuleAliases = map[string]string{
"UNSAFE_SQL_CONCATENATION": "ARGUS-A01",
"MISSING_DEFER_CLOSE": "ARGUS-A02",
"UNBOUNDED_CONTEXT": "ARGUS-A03",
"UNSAFE_ORDER_BY": "ARGUS-A04",
"UNSAFE_DYNAMIC_ORDERBY": "ARGUS-A04",
"AUDIT_LOG_IMMUTABILITY": "ARGUS-A05",
"FORBIDDEN_AUDIT_MUTATION": "ARGUS-A05",
"RUNTIME_DDL": "ARGUS-A06",
"RUNTIME_DDL_EXECUTION": "ARGUS-A06",
"ERROR_LEAK": "ARGUS-A07",
"DATABASE_ERROR_LEAK": "ARGUS-A07",
"TX_EXTERNAL_IO": "ARGUS-A08",
"TRANSACTION_BLOCKING_IO": "ARGUS-A08",
"ADVISORY_LOCK": "ARGUS-A09",
"UNSAFE_ADVISORY_LOCK": "ARGUS-A09",
"ISOLATION_LEVEL": "ARGUS-A10",
"WEAK_ISOLATION_LEVEL": "ARGUS-A10",
"DESTRUCTIVE_MIGRATION": "ARGUS-A11",
"TIMEOUT_CONFIG": "ARGUS-A12",
"TIMEOUT_CONFIG_MISSING": "ARGUS-A12",
"MISSING_DOWN_MIGRATION": "ARGUS-A13",
"FORBIDDEN_SELECT_STAR": "ARGUS-A14",
"FORBIDDEN_DDL_APP_ROLE_GRANT": "ARGUS-A15",
"MAX_CONNS_CONFIG": "ARGUS-A16",
"UNBOUNDED_MAX_CONNS": "ARGUS-A16",
"FORBIDDEN_QUERY_IN_LOOP": "ARGUS-A17",
"ROWS_ERR": "ARGUS-A18",
"MISSING_ROWS_ERR_CHECK": "ARGUS-A18",
"UNCHECKED_ROWS_ERROR": "ARGUS-A18",
"UNBOUNDED_QUERY_LIMIT": "ARGUS-A19",
"UNBOUNDED_HIGH_CARDINALITY_QUERY": "ARGUS-A19",
"PARAM_LIMIT_65535": "ARGUS-A20",
"UNBOUNDED_BATCH_PARAMS": "ARGUS-A20",
"WIRE_PARAM_LIMIT": "ARGUS-A20",
"UNBOUNDED_ROW_LOCK_BLOCKING": "ARGUS-A21",
"BLOCKING_ROW_LOCK": "ARGUS-A21",
"LOCK_CONVOY": "ARGUS-A21",
"SERIALIZATION_FAILURE_RETRY": "ARGUS-A22",
"MISSING_SERIALIZABLE_RETRY": "ARGUS-A22",
"RETRY_TRANSACTION": "ARGUS-A22",
"TRANSACTION_TIMEOUT_CONFIG": "ARGUS-A23",
"MISSING_TX_TIMEOUT": "ARGUS-A23",
"TX_TIMEOUT_GUC": "ARGUS-A23",
"TENANT_ISOLATION_LEAK": "ARGUS-A24",
"EXPENSIVE_CPU_IN_TRANSACTION": "ARGUS-A25",
"EXPENSIVE_CPU_IN_TX": "ARGUS-A25",
"LIKE_WILDCARD_INJECTION": "ARGUS-A26",
"NON_CONCURRENT_INDEX_CREATION": "ARGUS-A27",
"TABLE_LOCKING_CONSTRAINT_ADDITION": "ARGUS-A28",
"UNINDEXED_FOREIGN_KEY": "ARGUS-A29",
"TIMESTAMP_WITHOUT_TIMEZONE": "ARGUS-A30",
"UNABLE_TO_ANALYZE_MIGRATION": "ARGUS-E001",
}
RuleAliases maps scanner rule identifiers and descriptive names to standardized ARGUS-Axx rule codes.
Functions ¶
func CalculateCheckedComponents ¶
CalculateCheckedComponents determines the relevant component count for a rule.
func CountParameters ¶
CountParameters returns the count of $1, $2, ... placeholders in SQL query.
func GenerateMarkdownReport ¶
func GenerateMarkdownReport(result *AuditResult, rootDir string) string
GenerateMarkdownReport creates the standardized markdown report from AuditResult.
func GetRuleDescription ¶ added in v1.2.0
GetRuleDescription retrieves the canonical uppercase identifier for a rule.
func NormalizeRuleCode ¶ added in v1.2.0
NormalizeRuleCode standardizes raw rule names, aliases, or identifiers to "ARGUS-Axx".
Types ¶
type AuditConfig ¶
type AuditConfig struct {
RootDir string
ScanDirs []string
MigrationDirs []string
Config *config.Config
Analyzers []*analysis.Analyzer
Context context.Context
FS fs.FS
}
AuditConfig defines directory scan targets and options.
type AuditResult ¶
type AuditResult struct {
Timestamp time.Time
ScannedFiles int
ScannedGoFiles int
ScannedMigrationFiles int
VerifiedQuerySites int
VerifiedParameterizedSites int
AttachedRules []RuleAuditInfo
Issues []Issue
Score float64
Grade string
}
AuditResult aggregates metrics and issues for reporting.
func RunAudit ¶
func RunAudit(rootDir string) (*AuditResult, error)
RunAudit scans default repository targets and produces an AuditResult.
func RunAuditWithConfig ¶
func RunAuditWithConfig(cfg AuditConfig) (*AuditResult, error)
RunAuditWithConfig scans specified targets using provided configuration.
type Issue ¶
type Issue struct {
File string
Line int
Rule string
Message string
Snippet string
Category string
}
Issue represents a single database query violation found during standalone scan.
func (Issue) DisplayTag ¶ added in v1.2.0
DisplayTag formats the rule code and identifier together for clear reporting. For example: "ARGUS-A01: UNSAFE_SQL_CONCATENATION" or "ARGUS-E001: UNABLE_TO_ANALYZE_MIGRATION".
func (Issue) DisplayTitle ¶ added in v1.2.0
DisplayTitle returns DisplayTag for presentation in finding titles.
func (Issue) RuleCode ¶ added in v1.2.0
RuleCode returns the standardized ARGUS-Axx rule code (e.g. "ARGUS-A01").
func (Issue) RuleDescription ¶ added in v1.2.0
RuleDescription returns the canonical identifier/description for the issue (e.g. "UNSAFE_SQL_CONCATENATION").
type MetricsTracker ¶
type MetricsTracker struct {
// contains filtered or unexported fields
}
MetricsTracker aggregates scanning counters in a thread-safe manner.
func NewMetricsTracker ¶
func NewMetricsTracker() *MetricsTracker
NewMetricsTracker creates an initialized MetricsTracker.
func (*MetricsTracker) AddIssue ¶
func (m *MetricsTracker) AddIssue(issue Issue)
func (*MetricsTracker) IncrementMigrationFiles ¶
func (m *MetricsTracker) IncrementMigrationFiles(n int)
func (*MetricsTracker) IncrementParameterizedSites ¶
func (m *MetricsTracker) IncrementParameterizedSites(n int)
func (*MetricsTracker) IncrementQuerySites ¶
func (m *MetricsTracker) IncrementQuerySites(n int)
func (*MetricsTracker) IncrementScannedFiles ¶
func (m *MetricsTracker) IncrementScannedFiles(n int)
func (*MetricsTracker) SetAttachedRules ¶
func (m *MetricsTracker) SetAttachedRules(rules []RuleAuditInfo)
func (*MetricsTracker) Snapshot ¶
func (m *MetricsTracker) Snapshot() *AuditResult
type RuleAuditInfo ¶
type RuleAuditInfo struct {
ID string
Code string
Description string
CheckedComponents int
IssuesFound int
Status string // "PASS" or "FAILED"
}
RuleAuditInfo captures the dynamic execution state of a specific rule.
func BuildDynamicRuleAuditInfo ¶
func BuildDynamicRuleAuditInfo(analyzers []*analysis.Analyzer, cfg *config.Config, querySites, migrationFiles, totalScannedFiles int, issues []Issue) []RuleAuditInfo
BuildDynamicRuleAuditInfo dynamically builds the audit info list from active analyzers and config.
type RuleMetadata ¶ added in v1.2.0
type RuleMetadata struct {
ID string
Code string
Identifier string
Severity string
Category string
Description string
WikiURL string
}
RuleMetadata holds static informational attributes for an Argus rule.
func GetRuleMetadata ¶ added in v1.2.0
func GetRuleMetadata(ruleKey string) RuleMetadata
GetRuleMetadata returns the authoritative RuleMetadata for a given rule key, identifier, or code.