Static Code Analysis

  1. Types of Static Analysis
    1. By Analysis Scope
      1. Intra-procedural Analysis (Within a Single Function)
        1. Local Variable Analysis
          1. Variable Lifetime Tracking
            1. Scope-Based Analysis
            2. Function-Level Control Flow
              1. Local Path Analysis
                1. Return Path Verification
                2. Parameter Validation
                  1. Local Resource Management
                  2. Inter-procedural Analysis (Across Function Boundaries)
                    1. Function Call Relationships
                      1. Call Chain Analysis
                        1. Parameter Passing Tracking
                        2. Global Variable Tracking
                          1. Cross-Function State Changes
                            1. Global State Consistency
                            2. Return Value Propagation
                              1. Side Effect Analysis
                              2. Whole-Program Analysis
                                1. Complete Application Coverage
                                  1. Cross-Module Dependencies
                                    1. System-Wide Property Verification
                                  2. By Analysis Sensitivity
                                    1. Flow-sensitive Analysis
                                      1. Order of Statement Execution
                                        1. Sequential Program Point Analysis
                                          1. Statement Ordering Dependencies
                                          2. Flow-insensitive Analysis
                                            1. Order-Independent Analysis
                                              1. Performance Optimization Benefits
                                              2. Path-sensitive Analysis
                                                1. Distinct Execution Paths
                                                  1. Conditional Branch Tracking
                                                    1. Path Explosion Management
                                                    2. Path-insensitive Analysis
                                                      1. Path Merging Strategies
                                                        1. Scalability Advantages
                                                        2. Context-sensitive Analysis
                                                          1. Function Call Contexts
                                                            1. Call String Approach
                                                              1. Call Site Sensitivity
                                                              2. Recursion Handling
                                                                1. Bounded Context Sensitivity
                                                                  1. Cycle Detection
                                                                2. Context-insensitive Analysis
                                                                  1. Single Context Assumption
                                                                    1. Efficiency Benefits
                                                                  2. By Target Representation
                                                                    1. Source Code Analysis
                                                                      1. Language-Specific Considerations
                                                                        1. Syntax Variations
                                                                          1. Language Feature Support
                                                                          2. Preprocessing Requirements
                                                                            1. Multi-Language Project Support
                                                                            2. Bytecode Analysis
                                                                              1. Platform Independence
                                                                                1. Intermediate Language Benefits
                                                                                  1. Optimization Impact Analysis
                                                                                  2. Binary Analysis
                                                                                    1. Reverse Engineering
                                                                                      1. Disassembly Techniques
                                                                                        1. Symbol Recovery
                                                                                        2. Platform-Specific Challenges
                                                                                          1. Architecture Dependencies
                                                                                            1. Compiler Optimization Effects
                                                                                            2. Executable Format Parsing