5 dépôts
Analysis technique that transforms code into a form where each variable is assigned exactly once.
Distinct from Variable Assignments: Specific static analysis technique for data flow tracking, distinct from general variable assignment primitives.
Explore 5 awesome GitHub repositories matching programming languages & runtimes · Static Single Assignment Analysis. Refine with filters or upvote what's useful.
gosec is a static analysis security tool designed to scan Go source code for vulnerabilities and common coding flaws. It functions as a security analyzer that inspects the abstract syntax tree to identify insecure function calls, API usage, and potential security risks. The tool distinguishes itself by mapping detected vulnerabilities to Common Weakness Enumeration identifiers for standardized reporting and integrating with external AI models to suggest code fixes for identified issues. Its capabilities cover the detection of injection vulnerabilities, hardcoded credentials, weak cryptograph
Tracks variable assignments and data flow to identify vulnerabilities that depend on value changes.
Binaryen is a WebAssembly compiler toolchain and optimizer designed to transform, validate, and shrink binary modules. It provides a comprehensive intermediate representation framework that converts binary code into a single-assignment form to enable advanced program analysis and code transformation. The project includes a specialized transformation engine that applies iterative optimization passes to increase execution speed and reduce binary size. Additionally, it functions as a transpiler that translates WebAssembly binary modules into executable JavaScript for environments that lack nativ
Transforms code into single-assignment form so each variable has one assignment to simplify optimization.
go-ast-book est une collection de ressources éducatives et techniques axées sur l'analyse des arbres de syntaxe abstraite (AST), le développement de compilateurs et la vérification de code statique. Il fournit des guides et manuels pour parser, parcourir et analyser le code source Go afin d'en extraire la signification sémantique. Le projet sert de référence pour construire des frontends de compilateurs, couvrant la traduction de code de haut niveau en représentations intermédiaires et en formes d'assignation statique unique (SSA). Il fournit également des instructions pour utiliser ces techniques afin de développer des outils de langage et effectuer de l'analyse de code statique. Les ressources couvrent un large éventail de capacités d'analyse statique, incluant la tokenisation lexicale, le parsing structurel des expressions et déclarations, et le suivi des coordonnées pour les fichiers sources. Il détaille également les processus d'analyse sémantique tels que la résolution d'identifiants, la vérification de la correction des types et l'analyse du flux de contrôle pour la concurrence et l'exécution différée.
Implements analysis techniques that transform high-level code into a form where each variable is assigned exactly once.
Nilaway is a static analysis tool and linter plugin for Go designed to identify potential nil pointer dereferences in source code to prevent runtime panics. It functions as an inter-procedural pointer analyzer that tracks data flow across functions and packages to detect memory safety issues. The tool differentiates itself by tracking pointer states through anonymous functions, closures, and struct initializations. It employs a pointer analysis framework that monitors how values flow through a program to determine if a variable is safe to dereference at a specific point. The analyzer can be
Uses Static Single Assignment (SSA) form to track how pointer values flow through the program.
SVF is an open-source static program analysis framework and points-to analysis library that tracks memory references, variable aliases, and data dependencies across whole programs. The platform translates compiled intermediate code formats into unified internal representations, constructing constraint graphs, call graphs, and control-flow graphs to model interprocedural execution behavior and memory state. The framework incorporates specialized engines for flow-sensitive, flow-insensitive, and context-sensitive pointer analysis alongside sparse value-flow graph generation. It features memory
Constructs detailed program assignment graphs representing pointer values and memory objects.