Skip to content

Commit 0bde9fd

Browse files
update
1 parent 9522ab8 commit 0bde9fd

29 files changed

+243
-64
lines changed

README.md

+10-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# CodeLLM Paper <img src='https://img.shields.io/github/stars/PurCL/CodeLLMPaper' width="120" height="26" />
1+
# CodeLLM Paper
22

33
This repository provides a curated list of research papers focused on Large Language Models (LLMs) for code. It aims to facilitate researchers and practitioners in exploring the rapidly growing body of literature on this topic. The papers are systematically collected from various top-tier venues, categorized, and labeled for easier navigation.
44

5-
## 📍 News
6-
- :star: We updated the papers published in CCS 2024, USENIX Sec 2024, and NDSS 2025. (03/05/2025)
7-
85
## Table of Contents
96

107
- [A. Venues](#a-venues)
@@ -70,9 +67,9 @@ The papers in this repository are categorized along three dimensions: **Applicat
7067
This category focuses on typical tasks in Software Engineering (SE) and Programming Languages (PL).
7168

7269
- [General Coding Task](data/papers/labels/general_coding_task.md) (32)
73-
- [Code Generation](data/papers/labels/code_generation.md) (197)
70+
- [Code Generation](data/papers/labels/code_generation.md) (198)
7471
- [Program Synthesis](data/papers/labels/program_synthesis.md) (83)
75-
- [Code Completion](data/papers/labels/code_completion.md) (22)
72+
- [Code Completion](data/papers/labels/code_completion.md) (23)
7673
- [Program Repair](data/papers/labels/program_repair.md) (41)
7774
- [Program Transformation](data/papers/labels/program_transformation.md) (31)
7875
- [Program Testing](data/papers/labels/program_testing.md) (55)
@@ -88,16 +85,16 @@ This category focuses on typical tasks in Software Engineering (SE) and Programm
8885
- [Debugging](data/papers/labels/debugging.md) (9)
8986
- [Bug Reproduction](data/papers/labels/bug_reproduction.md) (2)
9087
- [Vulnerability Exploitation](data/papers/labels/vulnerability_exploitation.md) (6)
91-
- [Static Analysis](data/papers/labels/static_analysis.md) (143)
88+
- [Static Analysis](data/papers/labels/static_analysis.md) (145)
9289
- [Syntactic Analysis](data/papers/labels/syntactic_analysis.md) (1)
9390
- [Pointer Analysis](data/papers/labels/pointer_analysis.md) (3)
9491
- [Call Graph Analysis](data/papers/labels/call_graph_analysis.md) (2)
9592
- [Data-flow Analysis](data/papers/labels/data-flow_analysis.md) (8)
9693
- [Type Inference](data/papers/labels/type_inference.md) (3)
97-
- [Specification Inference](data/papers/labels/specification_inference.md) (15)
94+
- [Specification Inference](data/papers/labels/specification_inference.md) (16)
9895
- [Equivalence Checking](data/papers/labels/equivalence_checking.md) (1)
9996
- [Code Similarity Analysis](data/papers/labels/code_similarity_analysis.md) (5)
100-
- [Bug Detection](data/papers/labels/bug_detection.md) (73)
97+
- [Bug Detection](data/papers/labels/bug_detection.md) (74)
10198
- [Program Verification](data/papers/labels/program_verification.md) (20)
10299
- [Program Optimization](data/papers/labels/program_optimization.md) (4)
103100
- [Program Decompilation](data/papers/labels/program_decompilation.md) (9)
@@ -116,7 +113,7 @@ This category focuses on typical tasks in Software Engineering (SE) and Programm
116113

117114
This category concentrates on the LLMs' ability in understanding different forms of code and the non-functional properties of the LLMs (e.g., security and robustness). We also consider how to utilize the LLMs for general reasoning problems, such as typical agent-centric designs and specific PL designs for LLMs.
118115

119-
- [Code Model](data/papers/labels/code_model.md) (111)
116+
- [Code Model](data/papers/labels/code_model.md) (112)
120117
- [Code Model Training](data/papers/labels/code_model_training.md) (84)
121118
- [Source Code Model](data/papers/labels/source_code_model.md) (64)
122119
- [IR Code Model](data/papers/labels/IR_code_model.md) (5)
@@ -136,8 +133,8 @@ This category concentrates on the LLMs' ability in understanding different forms
136133

137134
This category includes studies on benchmarks, empirical evaluations, and surveys. The papers that do not belong to the following three categories are purely technical papers.
138135

139-
- [Benchmark](data/papers/labels/benchmark.md) (45)
140-
- [Empirical Study](data/papers/labels/empirical_study.md) (78)
136+
- [Benchmark](data/papers/labels/benchmark.md) (47)
137+
- [Empirical Study](data/papers/labels/empirical_study.md) (79)
141138
- [Survey](data/papers/labels/survey.md) (18)
142139

143140
## D. How to Contribute
@@ -171,4 +168,4 @@ To facilitate timely batch updates to the paper repository, we prefer to utilize
171168

172169
This paper repository is intended solely for research purposes. All raw data is sourced from publicly available information on ACM, IEEE, and corresponding conference websites. Any content involving additional copyright information, including full PDF versions of the papers, is not disclosed in this repository.
173170

174-
For any questions or suggestions, please contact [[email protected]](mailto:[email protected]) or [[email protected]](mailto:[email protected])
171+
For any questions or suggestions, please contact [[email protected]](mailto:[email protected]) or [[email protected]](mailto:[email protected])

data/labeldata/labeldata.json

+62
Original file line numberDiff line numberDiff line change
@@ -6516,6 +6516,68 @@
65166516
],
65176517
"url": "https://arxiv.org/pdf/2311.13721"
65186518
},
6519+
"Is Your Benchmark (Still) Useful? Dynamic Benchmarking for Code Language Models": {
6520+
"type": "article",
6521+
"key": "shaohua_arxiv25",
6522+
"title": "Is Your Benchmark (Still) Useful? Dynamic Benchmarking for Code Language Models",
6523+
"author": "Batu Guan, Xiao Wu, Yuanyuan Yuan, Shaohua Li",
6524+
"journal": "arXiv preprint arXiv:2503.06643",
6525+
"year": "2025",
6526+
"venue": "arXiv2025",
6527+
"abstract": "In this paper, we tackle a critical challenge in model evaluation: how to keep code benchmarks useful when models might have already seen them during training. We introduce a novel solution, dynamic benchmarking framework, to address this challenge. Given a code understanding or reasoning benchmark, our framework dynamically transforms each input, i.e., programs, with various semantic-preserving mutations to build a syntactically new while semantically identical benchmark. We evaluated ten popular language models on our dynamic benchmarks. Our evaluation reveals several interesting or surprising findings: (1) all models perform significantly worse than before, (2) the ranking between some models shifts dramatically, and (3) our dynamic benchmarks can resist against the data contamination problem.",
6528+
"labels": [
6529+
"benchmark"
6530+
],
6531+
"url": "https://arxiv.org/abs/2503.06643"
6532+
},
6533+
"KNighter: Transforming Static Analysis with LLM-Synthesized Checkers": {
6534+
"type": "article",
6535+
"key": "knighter_2025",
6536+
"title": "KNighter: Transforming Static Analysis with LLM-Synthesized Checkers",
6537+
"author": "Chenyuan Yang, Zijie Zhao, Zichen Xie, Haoyu Li, Lingming Zhang",
6538+
"journal": "arXiv preprint arXiv:2503.09002v1",
6539+
"year": "2025",
6540+
"venue": "arXiv2025",
6541+
"abstract": "Static analysis is a powerful technique for bug detection in critical systems like operating system kernels. However, designing and implementing static analyzers is challenging, timeconsuming, and typically limited to predefined bug patterns. While large language models (LLMs) have shown promise for static analysis, directly applying them to scan large codebases remains impractical due to computational constraints and contextual limitations. We present KNighter, the first approach that unlocks practical LLM-based static analysis by automatically synthesizing static analyzers from historical bug patterns. Rather than using LLMs to directly analyze massive codebases, our key insight is leveraging LLMs to generate specialized static analyzers guided by historical patch knowledge. KNighter implements this vision through a multi-stage synthesis pipeline that validates checker correctness against original patches and employs an automated refinement process to iteratively reduce false positives. Our evaluation on the Linux kernel demonstrates that KNighter generates high-precision checkers capable of detecting diverse bug patterns overlooked by existing human-written analyzers. To date, KNighter-synthesized checkers have discovered 70 new bugs/vulnerabilities in the Linux kernel, with 56 confirmed and 41 already fixed. 11 of these findings have been assigned CVE numbers. This work establishes an entirely new paradigm for scalable, reliable, and traceable LLM-based static analysis for real-world systems via checker synthesis.",
6542+
"labels": [
6543+
"static analysis",
6544+
"bug detection"
6545+
],
6546+
"url": "https://arxiv.org/pdf/2503.09002"
6547+
},
6548+
"Can LLMs Reason About Program Semantics? A Comprehensive Evaluation of LLMs on Formal Specification Inference": {
6549+
"type": "article",
6550+
"key": "knighter_2025",
6551+
"title": "Can LLMs Reason About Program Semantics? A Comprehensive Evaluation of LLMs on Formal Specification Inference",
6552+
"author": "Thanh Le-Cong, Bach Le, Toby Murray",
6553+
"journal": "arXiv preprint arXiv:2503.04779",
6554+
"year": "2025",
6555+
"venue": "arXiv2025",
6556+
"abstract": "Large Language Models (LLMs) are increasingly being used to automate programming tasks. Yet, LLMs' capabilities in reasoning about program semantics are still inadequately studied, leaving significant potential for further exploration. This paper introduces FormalBench, a comprehensive benchmark designed to evaluate LLMs' reasoning abilities on program semantics, particularly via the task of synthesizing formal program specifications to assist verifying program correctness. This task requires both comprehensive reasoning over all possible program executions and the generation of precise, syntactically correct expressions that adhere to formal syntax and semantics. Using this benchmark, we evaluated the ability of LLMs in synthesizing consistent and complete specifications. Our findings show that LLMs perform well with simple control flows but struggle with more complex structures, especially loops, even with advanced prompting. Additionally, LLMs exhibit limited robustness against semantic-preserving transformations. We also highlight common failure patterns and design self-repair prompts, improving success rates by 25%.",
6557+
"labels": [
6558+
"static analysis",
6559+
"specification inference",
6560+
"benchmark",
6561+
"empirical study"
6562+
],
6563+
"url": "https://arxiv.org/abs/2503.04779"
6564+
},
6565+
"Type-Aware Constraining for Code LLMs": {
6566+
"type": "article",
6567+
"key": "knighter_2025",
6568+
"title": "Type-Aware Constraining for Code LLMs",
6569+
"author": "Niels Mündler, Jingxuan He, Hao Wang, Koushik Sen, Dawn Song, Martin Vechev",
6570+
"journal": "ICLR 2025 workshop",
6571+
"year": "2025",
6572+
"venue": "ICLR2025",
6573+
"abstract": "Large Language Models (LLMs) have achieved notable success in code generation. However, they still frequently produce invalid code, as they do not precisely model formal aspects of programming languages. Constrained decoding is a promising approach to alleviate this issue and has been successfully applied to domain-specific languages and syntactic features, but is not able to enforce more semantic features, such as well-typedness. To address this issue, we introduce type-aware constrained decoding. We develop a novel prefix automata formalism and introduce a sound approach to guarantee existence of a type-safe completion of a partial program based on type inference and a search over inhabitable types. We implement type-aware constraining first for a foundational simply-typed language, then extend it to TypeScript. In our evaluation across state-of-the-art open-weight LLMs of up to 34B parameters and various model families, type-aware constraining reduces compilation errors by on average 70.9% and increases functional correctness by 16.2% in code synthesis, translation, and repair tasks.",
6574+
"labels": [
6575+
"code generation",
6576+
"code completion",
6577+
"code model"
6578+
],
6579+
"url": "https://openreview.net/forum?id=DNAapYMXkc"
6580+
},
65196581
"Evaluating the Effectiveness of Small Language Models in Detecting Refactoring Bugs": {
65206582
"type": "article",
65216583
"key": "Rohit2025arXiv",

data/papers/labels/agent_design.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
- **Labels**: [code generation](code_generation.md), [code completion](code_completion.md), [source code model](source_code_model.md), [agent design](agent_design.md), [prompt strategy](prompt_strategy.md), [retrieval-augmented generation](retrieval-augmented_generation.md)
2323

2424

25-
- [Hierarchical Repository-Level Code Summarization for Business Applications Using Local LLMs](../venues/arXiv2025/paper_7.md), ([arXiv2025](../venues/arXiv2025/README.md))
25+
- [Hierarchical Repository-Level Code Summarization for Business Applications Using Local LLMs](../venues/arXiv2025/paper_10.md), ([arXiv2025](../venues/arXiv2025/README.md))
2626

2727
- **Abstract**: In large-scale software development, understanding the functionality and intent behind complex codebases is critical for effective development and maintenance. While code summarization has been widely studied, existing methods primarily focus on smaller code units, such as functions, and struggle with larger code artifacts like files and packages. Additionally, current summarization models tend to emphasize low-level implementation details, often overlooking the domain and business context that ...
2828
- **Labels**: [static analysis](static_analysis.md), [code summarization](code_summarization.md), [agent design](agent_design.md), [prompt strategy](prompt_strategy.md), [retrieval-augmented generation](retrieval-augmented_generation.md)

data/papers/labels/benchmark.md

+5
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,11 @@
212212

213213
## Static Analysis
214214

215+
- [Can LLMs Reason About Program Semantics? A Comprehensive Evaluation of LLMs on Formal Specification Inference](../venues/arXiv2025/paper_5.md), ([arXiv2025](../venues/arXiv2025/README.md))
216+
217+
- **Abstract**: Large Language Models (LLMs) are increasingly being used to automate programming tasks. Yet, LLMs' capabilities in reasoning about program semantics are still inadequately studied, leaving significant potential for further exploration. This paper introduces FormalBench, a comprehensive benchmark designed to evaluate LLMs' reasoning abilities on program semantics, particularly via the task of synthesizing formal program specifications to assist verifying program correctness. This task requires bo...
218+
- **Labels**: [static analysis](static_analysis.md), [specification inference](specification_inference.md), [benchmark](benchmark.md), [empirical study](empirical_study.md)
219+
215220
- [CompilerGym: robust, performant compiler optimization environments for AI research](../venues/CGO2022/paper_1.md), ([CGO2022](../venues/CGO2022/README.md))
216221

217222
- **Abstract**: Interest in applying Artificial Intelligence (AI) techniques to compiler optimizations is increasing rapidly, but compiler research has a high entry barrier. Unlike in other domains, compiler and AI researchers do not have access to the datasets and frameworks that enable fast iteration and development of ideas, and getting started requires a significant engineering investment. What is needed is an easy, reusable experimental infrastructure for real world compiler optimization tasks that can ser...

data/papers/labels/bug_detection.md

+8-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md), [agent design](agent_design.md)
6161

6262

63-
- [Combining Large Language Models with Static Analyzers for Code Review Generation](../venues/arXiv2025/paper_4.md), ([arXiv2025](../venues/arXiv2025/README.md))
63+
- [Combining Large Language Models with Static Analyzers for Code Review Generation](../venues/arXiv2025/paper_7.md), ([arXiv2025](../venues/arXiv2025/README.md))
6464

6565
- **Abstract**: Code review is a crucial but often complex, subjective, and time-consuming activity in software development. Over the past decades, significant efforts have been made to automate this process. Early approaches focused on knowledge-based systems (KBS) that apply rule-based mechanisms to detect code issues, providing precise feedback but struggling with complex, context-dependent cases. More recent work has shifted toward fine-tuning pre-trained language models for code review, enabling broader is...
6666
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md)
@@ -120,7 +120,7 @@
120120
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md)
121121

122122

123-
- [Evaluating the Effectiveness of Small Language Models in Detecting Refactoring Bugs](../venues/arXiv2025/paper_3.md), ([arXiv2025](../venues/arXiv2025/README.md))
123+
- [Evaluating the Effectiveness of Small Language Models in Detecting Refactoring Bugs](../venues/arXiv2025/paper_6.md), ([arXiv2025](../venues/arXiv2025/README.md))
124124

125125
- **Abstract**: Popular IDEs frequently contain bugs in their refactoring implementations. Ensuring that a transformation preserves a program's behavior is a complex task. Traditional detection methods rely on predefined preconditions for each refactoring type, limiting their scalability and adaptability to new transformations. These methods often require extensive static and dynamic analyses, which are computationally expensive, time-consuming, and may still fail to detect certain refactoring bugs. This study ...
126126
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md)
@@ -198,6 +198,12 @@
198198
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md), [code model](code_model.md), [code model training](code_model_training.md), [binary code model](binary_code_model.md)
199199

200200

201+
- [KNighter: Transforming Static Analysis with LLM-Synthesized Checkers](../venues/arXiv2025/paper_4.md), ([arXiv2025](../venues/arXiv2025/README.md))
202+
203+
- **Abstract**: Static analysis is a powerful technique for bug detection in critical systems like operating system kernels. However, designing and implementing static analyzers is challenging, timeconsuming, and typically limited to predefined bug patterns. While large language models (LLMs) have shown promise for static analysis, directly applying them to scan large codebases remains impractical due to computational constraints and contextual limitations. We present KNighter, the first approach that unlocks p...
204+
- **Labels**: [static analysis](static_analysis.md), [bug detection](bug_detection.md)
205+
206+
201207
- [LAMD: Context-driven Android Malware Detection and Classification with LLMs](../venues/arXiv2025/paper_1.md), ([arXiv2025](../venues/arXiv2025/README.md))
202208

203209
- **Abstract**: The rapid growth of mobile applications has escalated Android malware threats. Although there are numerous detection methods, they often struggle with evolving attacks, dataset biases, and limited explainability. Large Language Models (LLMs) offer a promising alternative with their zero-shot inference and reasoning capabilities. However, applying LLMs to Android malware detection presents two key challenges: (1)the extensive support code in Android applications, often spanning thousands of class...

0 commit comments

Comments
 (0)