# Go Source Code Vulnerability Detection Method Based on Graph Neural Network
## 2 Related Work
### Taint Analysis-Based Vulnerability Detection  
Taint analysis is a program analysis technique used to track the flow of sensitive data [30]. It has been widely applied in fields such as vulnerability detection [31], cryptographic key misuse detection [32], and privacy leakage detection [33]. Additionally, taint analysis has been used to analyze various programming languages, including Java [34] and C [35], frameworks such as Android [36] and iOS, and microservices [37]. In vulnerability detection, research on taint analysis is mainly divided into static taint analysis and dynamic taint analysis.  
In the field of static taint analysis, PATA [38] introduced a path-aware taint analysis model capable of accurately identifying repeatedly occurring variables based on execution path information. [PERSON] [39] proposed a bi-modal taint analysis method that allows machine learning models to predict whether a taint flow is expected or unexpected based on the natural language information embedded within it. LATTE [40] combined large language models with static binary taint analysis, making it more cost-effective for vulnerability detection. However, these approaches have certain limitations. PATA integrates dynamic taint analysis, leading to significant performance overhead, and its complex path constraints hinder the effectiveness of fuzz testing. Fluffy is limited to JavaScript and relies on manually labeled evaluation data, which is prone to human error. LATTE struggles to analyze complex nested or jump-based code fragments, especially when public information about such vulnerabilities is lacking, making it difficult for large language models to analyze them effectively.  
In the field of dynamic taint analysis, Spectre [41] applies dynamic taint analysis at the system level to detect vulnerability fragments associated with Spectre-type attacks. Another approach [42] introduced an efficient container tagging scheme based on a simplified ordered binary decision diagram, accelerating container tag execution efficiency in areas such as protocol reverse engineering and fuzz testing. AirTaint [43] integrates basic block-level taint abstraction with assembly-level instrumentation, enabling faster and more efficient high-level dynamic taint analysis. However, these dynamic taint analysis techniques generally come with high performance overhead.  
Compared with the above-mentioned approaches, our proposed taint analysis strategy introduces several innovations and distinctions at the application level. Existing methods such as PATA, Fluffy, and LATTE rely on techniques like path constraint modeling, natural language inference, and large language model reasoning. However, these approaches are not well-suited to the structural characteristics of Go programs, suffering from high performance overhead, limited domain adaptability, and heavy reliance on manual effort. In contrast, our method is specifically tailored for Go language programs, integrating program structure pruning and syntax-based analysis. By leveraging Go's explicit API calls and well-defined static structure, we optimize the taint analysis process for this context.