Skip to content

Commit 616ee6a

Browse files
aashishyadavallymallamanis
authored andcommitted
Create yadavally2024static-slicing.markdown
1 parent 782a648 commit 616ee6a

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
layout: publication
3+
title: "A Learning-Based Approach to Static Program Slicing"
4+
authors: Aashish Yadavally, Yi Li, Shaohua Wang, Tien N. Nguyen
5+
conference: OOPSLA
6+
year: 2024
7+
additional_links:
8+
- {name: "website", url: "https://aashishyadavally.github.io/assets/pdf/pub-oopsla2024.pdf"}
9+
- {name: "code", url: "https://github.com/aashishyadavally/ns-slicer"}
10+
tags: ["large language models", "program analysis", "static analysis", "tool"]
11+
---
12+
Traditional program slicing techniques are crucial for early bug detection and manual/automated debugging of online code snippets. Nevertheless, their inability to handle incomplete code hinders their real-world applicability in such scenarios. To overcome these challenges, we present NS-Slicer, a novel learning-based approach that predicts static program slices for both complete and partial code. Our tool leverages a pre-trained language model to exploit its understanding of fine-grained variable-statement dependencies within source code. With this knowledge, given a variable at a specific location and a statement in a code snippet, NS-Slicer determines whether the statement belongs to the backward slice or forward slice, respectively. We conducted a series of experiments to evaluate NS-Slicer’s performance. On complete code, it predicts the backward and forward slices with an F1-score of 97.41% and 95.82%, respectively, while achieving an overall F1-score of 96.77%. Notably, in 85.20% of the cases, the static program slices predicted by NS-Slicer exactly match entire slices from the oracle. For partial programs, it achieved an F1-score of 96.77%–97.49% for backward slicing, 92.14%–95.40% for forward slicing, and an overall F1-score of 94.66%–96.62%. Furthermore, we demonstrate NS-Slicer’s utility in vulnerability detection (VD), integrating its predicted slices into an automated VD tool. In this setup, the tool detected vulnerabilities in Java code with a high F1-score of 73.38%. We also include the analyses studying NS-Slicer’s promising performance and limitations, providing insights into its understanding of intrinsic code properties such as variable aliasing, leading to better slicing.

0 commit comments

Comments
 (0)