Documentation
¶
Overview ¶
Package condition provides key condition extraction for branch analysis.
Key conditions help determine: - What guards exist on the path to data usage - What constraints exist on user input - Control flow conditions affecting data flow
Index ¶
Constants ¶
const ( CondTypeComparison = constants.CondTypeComparison CondTypeNullCheck = constants.CondTypeNullCheck CondTypeTypeCheck = constants.CondTypeTypeCheck CondTypeLengthCheck = constants.CondTypeLengthCheck CondTypeLogical = constants.CondTypeLogical CondTypeUnknown = constants.CondTypeUnknown )
Re-export constants for backward compatibility
const ( EffectAllows = constants.EffectAllows EffectBlocks = constants.EffectBlocks EffectUnknown = constants.EffectUnknown )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConditionEffect ¶
type ConditionEffect = constants.ConditionEffect
type ConditionPath ¶
type ConditionPath struct {
Conditions []*KeyCondition `json:"conditions"`
TargetLine int `json:"target_line"`
TargetExpr string `json:"target_expr,omitempty"`
Feasible bool `json:"feasible"` // Is this path feasible?
Reason string `json:"reason,omitempty"` // Why infeasible if not
}
ConditionPath represents a path through conditions to reach a point
type ConditionType ¶
type ConditionType = constants.ConditionType
Re-export types from centralized location for backward compatibility
type Extractor ¶
type Extractor struct {
// contains filtered or unexported fields
}
Extractor extracts key conditions from code
func NewExtractor ¶
NewExtractor creates a new condition extractor for a language
func (*Extractor) ExtractFromCode ¶
func (e *Extractor) ExtractFromCode(code string, filePath string) []*KeyCondition
ExtractFromCode extracts key conditions from code text
func (*Extractor) GetConditionPathToLine ¶
func (e *Extractor) GetConditionPathToLine(conditions []*KeyCondition, targetLine int) *ConditionPath
GetConditionPathToLine finds all conditions that guard a specific line
func (*Extractor) SummarizeConditions ¶
func (e *Extractor) SummarizeConditions(conditions []*KeyCondition) map[string]any
SummarizeConditions creates a summary of conditions
type KeyCondition ¶
type KeyCondition struct {
// Location
FilePath string `json:"file_path"`
Line int `json:"line"`
Column int `json:"column"`
// Condition details
Expression string `json:"expression"` // The condition expression
Type ConditionType `json:"type"`
Effect ConditionEffect `json:"effect"`
IsNegated bool `json:"is_negated"` // If inside else or has !
// Variables involved
Variables []string `json:"variables"` // Variables referenced
TaintedVars []string `json:"tainted_vars"` // Which are tainted
// Scope
GuardsLines []int `json:"guards_lines"` // Lines guarded by this condition
NestingDepth int `json:"nesting_depth"` // How nested this condition is
ParentCondition *KeyCondition `json:"parent_condition,omitempty"`
}
KeyCondition represents a condition that guards code execution