SlideShare a Scribd company logo
1 of 50
Download to read offline
FaCoY – A code-to-code
search engine
Kisub Kim1, Dongsun Kim1,Tegawendé F. Bissyandé1,
Eunjong Choi2, Li Li3, Jacques Klein1, andYves Le Traon1
1SnT, University of Luxembourg - Luxembourg
2Nara Institute of Science and Technology (NAIST) - Japan
3Faculty of Information Technology, Monash University - Australia
1
01. 06. 2018
SerVal
3.1 - the Interdisciplinary Centre for
Security Reliability and Trust 1.1 - logotype of the University
of Luxembourg
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
I want to find a loop in a singly linked list
2
I want to find a loop in a singly linked list
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
Is this correct?
Any better implementation?
How can I improve my code?
3
Code-to-Code Search
Given a code fragment, find semantically similar code fragments
Input Code Fragment
4
Online Tools
5
searchcode.com
krugle.com
5
State-of-the-art
Static Approaches
Dynamic Approaches
- Code clone detection techniques.
- Mostly focus on textually, structurally or syntactically similar code.
- Leverage various intermediate representations to compute code similarity:
Static approaches tend to miss fragments that have similar behaviour.
- Identify programs that retrieve similar results for the same inputs.
- Generate random inputs, rely on symbolic, concolic execution, 

check abstract memory states.
- Compare instruction-level execution traces [DyCLINK @FSE16]
Dynamic approaches do not scale to large repositories and are not
always operational.
6
• Token-based [CCFinder @TSE02]
• AST-based [Deckard @ICSE07]
• Graph-based [GPLAG @KDD06]
Key Challenge
Semantically similar code rather than syntactically
7
“converToHex” is similar to “encode”
Intuition
8
Conceptual Steps
9
Code fragment
What functionality
is implemented?
What are related
implementations?
What are other representative
tokens for the functionality?
Q&A Posts (questions + code snippets)
Similar Code
fragments
Which code fragments best match
these tokens?
Target code base
Conceptual Steps
9
Code fragment
What functionality
is implemented?
What are related
implementations?
What are other representative
tokens for the functionality?
Q&A Posts (questions + code snippets)
Similar Code
fragments
Which code fragments best match
these tokens?
Target code base
Conceptual Steps
9
Code fragment
What functionality
is implemented?
What are related
implementations?
What are other representative
tokens for the functionality?
Q&A Posts (questions + code snippets)
Similar Code
fragments
Which code fragments best match
these tokens?
Target code base
Conceptual Steps
9
Code fragment
What functionality
is implemented?
What are related
implementations?
What are other representative
tokens for the functionality?
Q&A Posts (questions + code snippets)
Similar Code
fragments
Which code fragments best match
these tokens?
Target code base
Conceptual Steps
9
Code fragment
What functionality
is implemented?
What are related
implementations?
What are other representative
tokens for the functionality?
Q&A Posts (questions + code snippets)
Similar Code
fragments
Which code fragments best match
these tokens?
Target code base
FaCoYFind another Code other than Yours
10
http://code-search.uni.lu/facoy
How it works (Visually)
Input code
11
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
How it works (Visually)
Input code
11
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
used_classes : Node
used_classes : hasLoop
methods_called : next
class_instance_creation : currentNode
How it works (Visually)
Input code
Syntactically
similar code
11
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
used_classes : Node
used_classes : hasLoop
methods_called : next
class_instance_creation : currentNode
How it works (Visually)
Input code
Syntactically
similar code
Natural language
description
of input code
11
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
used_classes : Node
used_classes : hasLoop
methods_called : next
class_instance_creation : currentNode
How it works (Visually)
Input code
Syntactically
similar code
Natural language
description
of input code
11
function boolean hasLoop(Node startNode){
Node currentNode = startNode;
while (currentNode = currentNode.next());
return false;
}
used_classes : Node
used_classes : hasLoop
methods_called : next
class_instance_creation : currentNode
12
Similar
descriptions
12
Similar
descriptions
More code fragments
for
similar functionality
12
Natural language
description
of input code
13
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:System.exit
extends:Linked
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
methods_called:data
Alternate
queries
13
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:System.exit
extends:Linked
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
methods_called:data
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:System.exit
extends:Linked
used_classes:hasLoop
used_classes:Node
used_classes:HashMap
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
methods_called:data
…
An alternate query
Alternate
queries
13
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:CircularSet.add
typed_method_call:System.exit
extends:Runnable
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:System.exit
extends:Linked
used_classes:hasLoop
used_classes:Node
used_classes:Integer
used_classes:HashMap
used_classes:BufferedReader
used_classes:InputStreamReader
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
methods_called:data
typed_method_call:myLinkedList.insertFirstLink
typed_method_call:System.exit
extends:Linked
used_classes:hasLoop
used_classes:Node
used_classes:HashMap
used_classes:System
class_instance_creation:fast
class_instance_creation:nod
class_instance_creation:head
methods_called:next
methods_called:data
…
An alternate query
Alternate
queries
Search results
More code fragments
for
similar functionality 13
Step 0: Dataset Indexing
• Parse the code snippets from answer posts and
code files to generate an Abstract Syntax Tree (AST).
• Preprocess the natural language text from posts.
• Indexed as inverted indices.
Answer
Posts
Post Analyzer
Snippet
Index
Code Snippet
with Metadata
Question
Posts
Post Analyzer
Question
Index
Full Post
Information
Project
Repository
Codes
Code Analyzer
Project
Code Index
14
User Input
Code
Query
Code Fragment
Generating
Code Query
(1)
Step 1: Query Structuring
15
User Input
Answer Snippets
Code
Query
Code Fragment
(2)
Generating
Code Query
(1)
Question
Answer
Snippet
Searching for
Similar Code
Snippets
Stack
Overflow
Step 2: Syntactic Search in Q&A Answers
16
User Input
Answer Snippets
Code
Query
Code Fragment
(2)
(3)
Question Posts
Generating
Code Query
(1)
Question
Answer
Snippet
Question
Answer
Snippet
Searching for
Similar Code
Snippets
Searching for
Similar
Questions
Stack
Overflow
Step 3: Collection of Descriptive Natural
Language terms
17
User Input
Answer Snippets
Code
Query
Code Fragment
(2)
(3)
Question Posts
Generating
Code Query
(1)
Question
Answer
Snippet
Question
Answer
Snippet
Searching for
Similar Code
Snippets
Searching for
Similar
Questions
Stack
Overflow
Generating
Alternate
Code Query
Code
Queries
(4)
Step 4: Query Alternation
18
User Input
Answer Snippets
Code
Query
Code Fragment
(2)
(3)
Question Posts
Generating
Code Query
(1)
Question
Answer
Snippet
Question
Answer
Snippet
Searching for
Similar Code
Snippets
Searching for
Similar
Questions
Stack
Overflow
Generating
Alternate
Code Query
Code
Queries
(4)
GitHub Codebase
Search Results
(5)
Searching for
Code
Examples
Step 5: Results Retrieving from Codebase
19
User Input
Snippet
Index
Code
Index
Code
Query
Generating
Code Query
Code
Query
Code Fragment
Search Results
(2)
(3)
(4)(5)
Question
Index
Generating
Code Query
(1)
Question
Answer
Snippet
Question
Answer
Snippet
Searching for
Similar Code
Snippets
Searching for
Similar
Questions
Searching for
Code
Examples
Overview of the Approach
20
Evaluation
21
Front-endhttp://code-search.uni.lu/facoy
22
Recommendation Results
23
Recommendation Results
23
RQ1
How relevant are code examples found by FaCoY compared to other code-
to-code search engines?
RQ2
What is the effectiveness of FaCoY including semantic clones based on a
code clone benchmark?
RQ3
Do the semantically similar code fragments yielded by FaCoY exhibit
similar runtime behavior?
RQ4 Could FaCoY recommend correct code as alternative of buggy code?
Research Questions
24
Code Clone Type Definitions
Clone Type Definition
Type-1 Identical code fragments, except for white-space, layout, and comments
Type-2
Identical code fragments, except for identifier names and literal values
+ Type-1
Type-3
Syntactically similar, but statements are added, modified and/or
removed with respect to each other + Type-1 and Type-2
Type-4
Syntactically dissimilar, but the same functionality
= Semantic clones.
25
• Stefan Bellon, Rainer Koschke, Guildo Antoniol, Jens Krinke, and Ettore Merlo, 2007. Comparison and evaluation of clone detection tools. IEEE
Transactions on Software Engineering 22, 9 (2007), 557-591.
• Chanchal K Roy, James R Cordy, and Rainer Koschke, 2009. Comparison and evaluation of code clone detection techniques and tools: A qualitative
approach. Science of Computer Programming 74, 7 (2009), 470-395.
• Fang-Hsiang Su, Jonathan Bell, Kenneth Harvey, Simha Sethumadhavan, Gail Kaiser, and Tony Jebara, 2016. Code Relatives: Detecting similarly
Behaving Software. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2016).
ACM, 702-714.
RQ 1. Comparison with Code-to-Code
Search Engines
• Query tools with top 10 Stackoverflow snippets
• Manual checking
• Does FaCoY find similar code fragments?
• Syntactically or Semantically?
26
RQ 2. Benchmark Assessment
• IJaDataset 2.0 of 25,000 projects (> 3 M files)
• BigCloneBench annotates 8,345,104 clone pairs with 43 functionalities
• Can FaCoY find more semantic clones (MT3 or T4) than the state-of-the-art?
No initial user query
No query alternation
No query alternation &
No query structuring
27
Clone Types
T1 T2 VST3 ST3 MT3 WT3/T4 Total
# of samples 10 10 10 10 10 10 60
BigCloneBench
missed to include
4 1 2 25 32
• For the rest of the 28 files, FaCoY points 26 files correctly,
• But failed to locate in the files.
• In only 2 cases, FaCoY completely failed.
FaCoY can detect clones that BigCloneBench missed.
Double Checking FaCoY’s False Positives
28
F18: Play Sound
F19: Take Screenshot to File
F21: XMPP Send Message
FaCoY’s Limitation
Requiring external
APIs and libraries
Pure computation tasks
F7: Bubble Sort Array
F14: Binary Search
F41: Transpose a Matrix
29
FaCoY performs much better with code that are
requiring external APIs and Libraries.
RQ 3.Validating Semantic Clones
• Use DyCLINK - A dynamic approach that computes similarity of execution traces to detect code
relatives.
• Index the benchmark of DyCLINK: 411 pairs as code relatives.
• Results:
•FaCoY’s hit ratio is at 68% (278 out of 411 code fragments)
•FaCoY’s Mean Reciprocal Rank value is 0.18 (retrieves into lower rankings)
Google Code Jam
- 2011: Irregular Cake
- 2012: Perfect Game
- 2013: Cheaters
- 2014: Magical Tour
30
RQ 4. Recommending code for patches
Buggy code
• Buggy information
Project: Apache commons-lang
File path: projects/Lang/14/org/apache/commons/lang3/StringUtils.java
As maintainers, can we quickly find alternative implementations?
31
RQ 4. Recommending code for patches
Buggy code
Additionally, we consider more cases:
1. Are cs1 and cs2 nulls?
2. Are cs1 and cs2 have the same values?
3. Are cs1 and cs2 the same objects?
4. Are cs1 and cs2 are String objects?
5. If they are not pure String objects, check the equality character by character
32
RQ 4. Recommending code for patches
Fix
Buggy code
• Commit: cf7211f9 by Matthew Jason Benson, 01/23/2012 06:47 PM
• parent: c8afaa3e
• git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1234915
• Log: [LANG-786] StringUtils equals() relies on undefined behavior; thanks to Daniel Trebbien
33
RQ 4. Recommending code for patches
• 395 bugs in Defect4J repair benchmark [@ISSTA14]
• 21 FaCoY recommendations are correct (manual assessment)
Fix
Buggy code
34
Summary
35
36
Questions: kisub.kim@uni.lu
Github page: https://github.com/facoy/facoy
Web code search engine: http://code-search.uni.lu/facoy

More Related Content

Similar to FaCoY – A Code-to-Code Search Engine

S D D Program Development Tools
S D D  Program  Development  ToolsS D D  Program  Development  Tools
S D D Program Development Tools
gavhays
 

Similar to FaCoY – A Code-to-Code Search Engine (20)

Advanced full text searching techniques using Lucene
Advanced full text searching techniques using LuceneAdvanced full text searching techniques using Lucene
Advanced full text searching techniques using Lucene
 
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and VocabulariesHaystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
 
Named Entity Recognition For Hindi-English code-mixed Twitter Text
Named Entity Recognition For Hindi-English code-mixed Twitter Text Named Entity Recognition For Hindi-English code-mixed Twitter Text
Named Entity Recognition For Hindi-English code-mixed Twitter Text
 
AI: Logic in AI
AI: Logic in AIAI: Logic in AI
AI: Logic in AI
 
AI: Logic in AI
AI: Logic in AIAI: Logic in AI
AI: Logic in AI
 
Phpconf2008 Sphinx En
Phpconf2008 Sphinx EnPhpconf2008 Sphinx En
Phpconf2008 Sphinx En
 
Webinar: Simpler Semantic Search with Solr
Webinar: Simpler Semantic Search with SolrWebinar: Simpler Semantic Search with Solr
Webinar: Simpler Semantic Search with Solr
 
Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)
 
S D D Program Development Tools
S D D  Program  Development  ToolsS D D  Program  Development  Tools
S D D Program Development Tools
 
Textual programming in key stage 3
Textual programming in key stage 3Textual programming in key stage 3
Textual programming in key stage 3
 
PyCon 2013 - Experiments in data mining, entity disambiguation and how to thi...
PyCon 2013 - Experiments in data mining, entity disambiguation and how to thi...PyCon 2013 - Experiments in data mining, entity disambiguation and how to thi...
PyCon 2013 - Experiments in data mining, entity disambiguation and how to thi...
 
IRJET- Semantic Question Matching
IRJET- Semantic Question MatchingIRJET- Semantic Question Matching
IRJET- Semantic Question Matching
 
Symbolic Execution And KLEE
Symbolic Execution And KLEESymbolic Execution And KLEE
Symbolic Execution And KLEE
 
Grammarly AI-NLP Club #6 - Sequence Tagging using Neural Networks - Artem Che...
Grammarly AI-NLP Club #6 - Sequence Tagging using Neural Networks - Artem Che...Grammarly AI-NLP Club #6 - Sequence Tagging using Neural Networks - Artem Che...
Grammarly AI-NLP Club #6 - Sequence Tagging using Neural Networks - Artem Che...
 
Search Me: Using Lucene.Net
Search Me: Using Lucene.NetSearch Me: Using Lucene.Net
Search Me: Using Lucene.Net
 
Empowerment Technologies Lecture 5 (Philippines SHS)
Empowerment Technologies Lecture 5 (Philippines SHS)Empowerment Technologies Lecture 5 (Philippines SHS)
Empowerment Technologies Lecture 5 (Philippines SHS)
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)
 
Devry CIS 355A Full Course Latest
Devry CIS 355A Full Course LatestDevry CIS 355A Full Course Latest
Devry CIS 355A Full Course Latest
 
Finding Some "Good" iOS Interview Questions for Employers
Finding Some "Good" iOS Interview Questions for EmployersFinding Some "Good" iOS Interview Questions for Employers
Finding Some "Good" iOS Interview Questions for Employers
 
Apps
AppsApps
Apps
 

More from Dongsun Kim

LeakPair: Proactive Repairing of Leaks in Single Page Web Applications
LeakPair: Proactive Repairing of Leaks in Single Page Web ApplicationsLeakPair: Proactive Repairing of Leaks in Single Page Web Applications
LeakPair: Proactive Repairing of Leaks in Single Page Web Applications
Dongsun Kim
 
iFixR: Bug Report Driven Program Repair
iFixR: Bug Report Driven Program RepairiFixR: Bug Report Driven Program Repair
iFixR: Bug Report Driven Program Repair
Dongsun Kim
 
Mining Fix Patterns for FindBugs Violations
Mining Fix Patterns for FindBugs ViolationsMining Fix Patterns for FindBugs Violations
Mining Fix Patterns for FindBugs Violations
Dongsun Kim
 
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
Dongsun Kim
 
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis ViolationsAVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
Dongsun Kim
 
Automatic Patch Generation Learned from Human-Written Patches
Automatic Patch Generation Learned from Human-Written PatchesAutomatic Patch Generation Learned from Human-Written Patches
Automatic Patch Generation Learned from Human-Written Patches
Dongsun Kim
 

More from Dongsun Kim (14)

LeakPair: Proactive Repairing of Leaks in Single Page Web Applications
LeakPair: Proactive Repairing of Leaks in Single Page Web ApplicationsLeakPair: Proactive Repairing of Leaks in Single Page Web Applications
LeakPair: Proactive Repairing of Leaks in Single Page Web Applications
 
iFixR: Bug Report Driven Program Repair
iFixR: Bug Report Driven Program RepairiFixR: Bug Report Driven Program Repair
iFixR: Bug Report Driven Program Repair
 
TBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program RepairTBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program Repair
 
Mining Fix Patterns for FindBugs Violations
Mining Fix Patterns for FindBugs ViolationsMining Fix Patterns for FindBugs Violations
Mining Fix Patterns for FindBugs Violations
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method Names
 
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
You Cannot Fix What You Cannot Find! --- An Investigation of Fault Localizati...
 
A Closer Look at Real-World Patches
A Closer Look at Real-World PatchesA Closer Look at Real-World Patches
A Closer Look at Real-World Patches
 
LSRepair: Live Search of Fix Ingredients for Automated Program Repair
LSRepair: Live Search of Fix Ingredients for Automated Program RepairLSRepair: Live Search of Fix Ingredients for Automated Program Repair
LSRepair: Live Search of Fix Ingredients for Automated Program Repair
 
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis ViolationsAVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations
 
Bench4BL: Reproducibility Study on the Performance of IR-Based Bug Localization
Bench4BL: Reproducibility Study on the Performance of IR-Based Bug LocalizationBench4BL: Reproducibility Study on the Performance of IR-Based Bug Localization
Bench4BL: Reproducibility Study on the Performance of IR-Based Bug Localization
 
Impact of Tool Support in Patch Construction
Impact of Tool Support in Patch ConstructionImpact of Tool Support in Patch Construction
Impact of Tool Support in Patch Construction
 
Augmenting and structuring user queries to support efficient free-form code s...
Augmenting and structuring user queries to support efficient free-form code s...Augmenting and structuring user queries to support efficient free-form code s...
Augmenting and structuring user queries to support efficient free-form code s...
 
Good Hunting: Locating, Prioritizing, and Fixing Bugs Automatically (Keynote,...
Good Hunting: Locating, Prioritizing, and Fixing Bugs Automatically (Keynote,...Good Hunting: Locating, Prioritizing, and Fixing Bugs Automatically (Keynote,...
Good Hunting: Locating, Prioritizing, and Fixing Bugs Automatically (Keynote,...
 
Automatic Patch Generation Learned from Human-Written Patches
Automatic Patch Generation Learned from Human-Written PatchesAutomatic Patch Generation Learned from Human-Written Patches
Automatic Patch Generation Learned from Human-Written Patches
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 

FaCoY – A Code-to-Code Search Engine