SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
Carol V. Alexandru, Sebastiano Panichella, Harald C. Gall
Software Evolution and Architecture Lab
University of Zurich, Switzerland
{alexandru,panichella,gall}@ifi.uzh.ch
22.02.2017
SANER’17
Klagenfurt, Austria
The Problem Domain
• Static analysis (e.g. #Attr., McCabe, coupling...)
1
The Problem Domain
v0.7.0 v1.0.0 v1.3.0 v2.0.0 v3.0.0 v3.3.0 v3.5.0
2
• Static analysis (e.g. #Attr., McCabe, coupling...)
The Problem Domain
v0.7.0 v1.0.0 v1.3.0 v2.0.0 v3.0.0 v3.3.0 v3.5.0
2
• Static analysis (e.g. #Attr., McCabe, coupling...)
• Many revisions, fine-grained historical data
A Typical Analysis Process
3
www
clone
select project
A Typical Analysis Process
www
clone
checkout
select project
select revision
3
A Typical Analysis Process
www
clone
checkout analysis tool
Res
select project
select revision
apply
tool
store
analysis
results
3
A Typical Analysis Process
www
clone
checkout analysis tool
Res
select project
select revision
apply
tool
store
analysis
results
more revisions?
3
A Typical Analysis Process
www
clone
checkout analysis tool
Res
select project
select revision
apply
tool
store
analysis
results
more revisions?
more projects?
3
Redundancies all over...
4
Redundancies in
historical code analysis
Impact on Code
Study Tools
Redundancies all over...
Redundancies in
historical code analysis
Few files change
Only small parts of
a file change
Across Revisions
Impact on Code
Study Tools
4
Redundancies all over...
Redundancies in
historical code analysis
Few files change
Only small parts of
a file change
Across Revisions
Impact on Code
Study Tools
Repeated analysis
of "known" code
4
Redundancies all over...
Redundancies in
historical code analysis
Few files change
Only small parts of
a file change
Changes may not
even affect results
Across Revisions
Impact on Code
Study Tools
Repeated analysis
of "known" code
Storing redundant
results
4
Redundancies all over...
4
Redundancies in
historical code analysis
Few files change
Across Languages
Only small parts of
a file change
Changes may not
even affect results
Each language has
their own toolchain
Yet they share
many metrics
Across Revisions
Impact on Code
Study Tools
Repeated analysis
of "known" code
Storing redundant
results
Redundancies all over...
Redundancies in
historical code analysis
Few files change
Across Languages
Only small parts of
a file change
Changes may not
even affect results
Each language has
their own toolchain
Yet they share
many metrics
Across Revisions
Impact on Code
Study Tools
Repeated analysis
of "known" code
Storing redundant
results
Re-implementing
identical analyses
Generalizability is
expensive
4
Redundancies all over...
Redundancies in
historical code analysis
Few files change
Across Languages
Only small parts of
a file change
Changes may not
even affect results
Each language has
their own toolchain
Yet they share
many metrics
Across Revisions
Impact on Code
Study Tools
Repeated analysis
of "known" code
Storing redundant
results
Re-implementing
identical analyses
Generalizability is
expensive
5
Important!
6
Techniques
implemented
in LISA
Your
favourite
analysis
features
Pick what you like!
#1: Avoid Checkouts
Avoid checkouts
7
clone
Avoid checkouts
7
clone
checkout
read write
Avoid checkouts
7
clone
checkout
read
read write
analyze
Avoid checkouts
7
clone
checkout
read
For every file: 2 read ops + 1 write op
Checkout includes irrelevant files
Need 1 CWD for every revision to be analyzed in parallel
read write
analyze
Avoid checkouts
8
clone analyze
read
Avoid checkouts
8
clone analyze
Only read relevant files in a single read op
No write ops
No overhead for parallization
read
Avoid checkouts
8
clone analyze
Only read relevant files in a single read op
No write ops
No overhead for parallization
Git
Analysis Tool
File Abstraction Layer
read
Avoid checkouts
8
clone analyze
Only read relevant files in a single read op
No write ops
No overhead for parallization
Git
Analysis Tool
File Abstraction Layer
E.g. for the JDK Compiler:
class JavaSourceFromCharrArray(name: String, val code: CharBuffer)
extends SimpleJavaFileObject(URI.create("string:///" + name), Kind.SOURCE) {
override def getCharContent(): CharSequence = code
}
read
Avoid checkouts
clone analyze
Only read relevant files in a single read op
No write ops
No overhead for parallization
Git
Analysis Tool
File Abstraction Layer
E.g. for the JDK Compiler:
class JavaSourceFromCharrArray(name: String, val code: CharBuffer)
extends SimpleJavaFileObject(URI.create("string:///" + name), Kind.SOURCE) {
override def getCharContent(): CharSequence = code
}
read
9
#2: Use a multi-revision representation
of your sources
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
10
rev. 1
rev. 2
rev. 3
rev. 4
11
rev. 1
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
12
rev. 2
Merge ASTs
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
13
rev. 3
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
14
rev. 4
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
15
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
16
rev. range [1-4]
rev. range [1-2]
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
AspectJ (~440k LOC):
1 commit: 2.2M nodes
All >7000 commits: 6.5M nodes
17
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
AspectJ (~440k LOC):
1 commit: 2.2M nodes
All >7000 commits: 6.5M nodes
18
Merge ASTs
rev. 1
rev. 2
rev. 3
rev. 4
AspectJ (~440k LOC):
1 commit: 2.2M nodes
All >7000 commits: 6.5M nodes
19
#3: Store AST nodes only if
they're needed for analysis
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
What's the complexity (1+#forks)
and name for each method and
class?
20
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
140 AST nodes
(using ANTLR)
parse
What's the complexity (1+#forks)
and name for each method and
class?
20
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
140 AST nodes
(using ANTLR)
parse
CompilationUnit
TypeDeclaration
Modifiers
public
Members
Method
Modifiers
public
Name
run
Name
Demo
Parameters ReturnType
PrimitiveType
VOID
Body
Statements
...
...
What's the complexity (1+#forks)
and name for each method and
class?
20
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
What's the complexity (1+#forks)
and name for each method and
class?
140 AST nodes
(using ANTLR)
parse filtered parse
TypeDeclaration
Method
Name
run
Name
DemoForStatement
IfStatement
ConditionalExpression
7 AST nodes
(using ANTLR)
21
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
What's the complexity (1+#forks)
and name for eachmethod and
class?
140 AST nodes
(using ANTLR)
parse filtered parse
TypeDeclaration
Method
Name
run
Name
DemoForStatement
IfStatement
ConditionalExpression
7 AST nodes
(using ANTLR)
22
public class Demo {
public void run() {
for (int i = 1; i< 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i)
}
}
}
What's the complexity (1+#forks)
and name for eachmethod and
class?
140 AST nodes
(using ANTLR)
parse filtered parse
TypeDeclaration
Method
Name
run
Name
DemoForStatement
IfStatement
ConditionalExpression
7 AST nodes
(using ANTLR)
23
#4: Use non-duplicative data structures
to store your results
rev. 1
rev. 2
rev. 3
rev. 4
24
rev. 1
rev. 2
rev. 3
rev. 4
24
rev. 1
rev. 2
rev. 3
rev. 4
24
[1-1]
label
#attr
mcc
[4-4]
label
#attr
mcc
InnerClass
0 4
1 2 4
[2-3]
label
#attr
mcc
rev. 1
rev. 2
rev. 3
rev. 4 [1-1]
label
#attr
mcc
[4-4]
label
#attr
mcc
InnerClass
0 4
1 2 4
[2-3]
label
#attr
mcc
25
LISA also does:
#5: Parallel Parsing
#6: Asynchronous graph computation
#7: Generic graph computations
applying to ASTs from compatible
languages
26
To Summarize...
The LISA Analysis Process
27
www
clone
select project
The LISA Analysis Process
27
www
clone
parallel parse
into merged
graph
select project
Language Mappings
(Grammar to Analysis)
determines which AST
nodes are loaded
ANTLRv4
Grammar used by
Generates Parser
The LISA Analysis Process
27
www
clone
parallel parse
into merged
graph
Res
select project
store
analysis
results
Analysis formulated as
Graph Computation
Language Mappings
(Grammar to Analysis) used by
Async. compute
determines which AST
nodes are loaded
determines which
data is persisted
ANTLRv4
Grammar used by
Generates Parser
runs
on graph
The LISA Analysis Process
27
www
clone
parallel parse
into merged
graph
Res
select project
store
analysis
results
more projects?
Analysis formulated as
Graph Computation
Language Mappings
(Grammar to Analysis) used by
Async. compute
determines which AST
nodes are loaded
determines which
data is persisted
ANTLRv4
Grammar used by
Generates Parser
runs
on graph
How well does it work, then?
Marginal cost for +1 revision
41.670
4.633
0.525 0.109 0.082 0.071 0.052 0.041 0.032 0.033
0
5
10
15
20
25
30
35
40
45
50
1 10 100 1000 2000 3000 4000 5000 6000 7000
Average Parsing+Computation time per Revision when
analyzing n revisions of AspectJ (10 common metrics)
Seconds
# of revisions
28
Overall Performance Stats
29
Language Java C# JavScript
#Projects 100 100 100
#Revisions 646'261 489'764 204'301
#Files (parsed!) 3'235'852 3'234'178 507'612
#Lines (parsed!) 1'370'998'072 961'974'773 194'758'719
Total Runtime (RT)¹ 18:43h 52:12h 29:09h
Median RT¹ 2:15min 4:54min 3:43min
Tot. Avg. RT per Rev.² 84ms 401ms 531ms
Med. Avg. RT per Rev.² 30ms 116ms 166ms
¹ Including cloning and persisting results
² Excluding cloning and persisting results
What's the catch?
(There are a few...)
The (not so) minor stuff
• Must implement analyses from scratch
• No help from a compiler
• Non-file-local analyses need some effort
30
The (not so) minor stuff
• Must implement analyses from scratch
• No help from a compiler
• Non-file-local analyses need some effort
• Moved files/methods etc. add overhead
• Uniquely identifying files/entities is hard
• (No impact on results, though)
30
Language matters
31
Javascript C# Java
E.g.: Javascript takes longer because:
• Larger files, less modularization
• Slower parser (automatic semicolon-insertion)
LISA is EXTREME
32
complex
feature-rich
heavyweight
simple
generic
lightweight
Thank you for your attention
SANER ‘17, Klagenfurt, 22.02.2017
Read the paper: http://t.uzh.ch/Fj
Try the tool: http://t.uzh.ch/Fk
Get the slides: http://t.uzh.ch/Fm
Contact me: alexandru@ifi.uzh.ch

Más contenido relacionado

La actualidad más candente

stacks and queues class 12 in c++
stacks and  queues class 12 in c++stacks and  queues class 12 in c++
stacks and queues class 12 in c++Khushal Mehta
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDevexperts
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVMkensipe
 
Integrating the NCBI BLAST+ suite into Galaxy
Integrating the NCBI BLAST+ suite into GalaxyIntegrating the NCBI BLAST+ suite into Galaxy
Integrating the NCBI BLAST+ suite into Galaxypjacock
 
Advanced Production Debugging
Advanced Production DebuggingAdvanced Production Debugging
Advanced Production DebuggingTakipi
 
Dependent types (and other ideas for guaranteeing correctness with types)
Dependent types (and other ideas for guaranteeing correctness with types)Dependent types (and other ideas for guaranteeing correctness with types)
Dependent types (and other ideas for guaranteeing correctness with types)radexp
 
Enhanced Web Service Testing: A Better Mock Structure
Enhanced Web Service Testing: A Better Mock StructureEnhanced Web Service Testing: A Better Mock Structure
Enhanced Web Service Testing: A Better Mock StructureCRMScienceKirk
 
GTAC 2014: What lurks in test suites?
GTAC 2014: What lurks in test suites?GTAC 2014: What lurks in test suites?
GTAC 2014: What lurks in test suites?Patrick Lam
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiCysinfo Cyber Security Community
 
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...GangSeok Lee
 
Console applications IN C#
Console applications IN C#Console applications IN C#
Console applications IN C#Sireesh K
 
02 Java Language And OOP PART II
02 Java Language And OOP PART II02 Java Language And OOP PART II
02 Java Language And OOP PART IIHari Christian
 

La actualidad más candente (20)

Java I/O
Java I/OJava I/O
Java I/O
 
Python programming l2
Python programming l2Python programming l2
Python programming l2
 
stacks and queues class 12 in c++
stacks and  queues class 12 in c++stacks and  queues class 12 in c++
stacks and queues class 12 in c++
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programs
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
 
Integrating the NCBI BLAST+ suite into Galaxy
Integrating the NCBI BLAST+ suite into GalaxyIntegrating the NCBI BLAST+ suite into Galaxy
Integrating the NCBI BLAST+ suite into Galaxy
 
Advanced Production Debugging
Advanced Production DebuggingAdvanced Production Debugging
Advanced Production Debugging
 
Dependent types (and other ideas for guaranteeing correctness with types)
Dependent types (and other ideas for guaranteeing correctness with types)Dependent types (and other ideas for guaranteeing correctness with types)
Dependent types (and other ideas for guaranteeing correctness with types)
 
Stress test data pipeline
Stress test data pipelineStress test data pipeline
Stress test data pipeline
 
Java Language fundamental
Java Language fundamentalJava Language fundamental
Java Language fundamental
 
Enhanced Web Service Testing: A Better Mock Structure
Enhanced Web Service Testing: A Better Mock StructureEnhanced Web Service Testing: A Better Mock Structure
Enhanced Web Service Testing: A Better Mock Structure
 
GTAC 2014: What lurks in test suites?
GTAC 2014: What lurks in test suites?GTAC 2014: What lurks in test suites?
GTAC 2014: What lurks in test suites?
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
 
Streams in Java 8
Streams in Java 8Streams in Java 8
Streams in Java 8
 
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...
[2010 CodeEngn Conference 04] passket - Taint analysis for vulnerability disc...
 
Taint analysis
Taint analysisTaint analysis
Taint analysis
 
Java 8 streams
Java 8 streamsJava 8 streams
Java 8 streams
 
Java concurrency questions and answers
Java concurrency questions and answers Java concurrency questions and answers
Java concurrency questions and answers
 
Console applications IN C#
Console applications IN C#Console applications IN C#
Console applications IN C#
 
02 Java Language And OOP PART II
02 Java Language And OOP PART II02 Java Language And OOP PART II
02 Java Language And OOP PART II
 

Destacado

Analyzing Reviews and Code of Mobile Apps for Better Release Planning
Analyzing Reviews and Code of Mobile Apps for Better Release PlanningAnalyzing Reviews and Code of Mobile Apps for Better Release Planning
Analyzing Reviews and Code of Mobile Apps for Better Release PlanningSebastiano Panichella
 
Elixir and Dialyzer, Types and Typespecs, using and understanding them
Elixir and Dialyzer, Types and Typespecs, using and understanding themElixir and Dialyzer, Types and Typespecs, using and understanding them
Elixir and Dialyzer, Types and Typespecs, using and understanding themDan Janowski
 
Best TM Award Application
Best TM Award ApplicationBest TM Award Application
Best TM Award Applicationaiesechyderabad
 
Mengenal jarkom
Mengenal jarkomMengenal jarkom
Mengenal jarkomlabiebm
 
What Would Users Change in My App? Summarizing App Reviews for Recommending ...
What Would Users Change in My App? Summarizing App Reviews for Recommending ...What Would Users Change in My App? Summarizing App Reviews for Recommending ...
What Would Users Change in My App? Summarizing App Reviews for Recommending ...Sebastiano Panichella
 
Fmp research
Fmp researchFmp research
Fmp researchhalo4robo
 
Multi-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionMulti-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionSebastiano Panichella
 
Production log
Production logProduction log
Production loghalo4robo
 
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...Magdalena Górska
 

Destacado (20)

Analyzing Reviews and Code of Mobile Apps for Better Release Planning
Analyzing Reviews and Code of Mobile Apps for Better Release PlanningAnalyzing Reviews and Code of Mobile Apps for Better Release Planning
Analyzing Reviews and Code of Mobile Apps for Better Release Planning
 
Elixir and Dialyzer, Types and Typespecs, using and understanding them
Elixir and Dialyzer, Types and Typespecs, using and understanding themElixir and Dialyzer, Types and Typespecs, using and understanding them
Elixir and Dialyzer, Types and Typespecs, using and understanding them
 
Best TM Award Application
Best TM Award ApplicationBest TM Award Application
Best TM Award Application
 
The ballistate review
The ballistate reviewThe ballistate review
The ballistate review
 
Process Flow
Process FlowProcess Flow
Process Flow
 
Chair pdf
Chair pdfChair pdf
Chair pdf
 
Mengenal jarkom
Mengenal jarkomMengenal jarkom
Mengenal jarkom
 
The skeletal system
The skeletal systemThe skeletal system
The skeletal system
 
SlideShare
SlideShareSlideShare
SlideShare
 
Im
ImIm
Im
 
What Would Users Change in My App? Summarizing App Reviews for Recommending ...
What Would Users Change in My App? Summarizing App Reviews for Recommending ...What Would Users Change in My App? Summarizing App Reviews for Recommending ...
What Would Users Change in My App? Summarizing App Reviews for Recommending ...
 
Fmp research
Fmp researchFmp research
Fmp research
 
Multi-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionMulti-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect Prediction
 
Et agm 2013
Et agm 2013Et agm 2013
Et agm 2013
 
GIS- How to add people
GIS-  How to add peopleGIS-  How to add people
GIS- How to add people
 
Production log
Production logProduction log
Production log
 
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...
Rusz się Oława - wykład 2 - Budownictwo naturalne i zrównoważona urbanistyka ...
 
Change
ChangeChange
Change
 
Sona!!!!!!!!!
Sona!!!!!!!!!Sona!!!!!!!!!
Sona!!!!!!!!!
 
Planning
PlanningPlanning
Planning
 

Similar a Reducing Redundancies in Multi-Revision Code Analysis

DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...Felipe Prado
 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error predictionNIKHIL NAWATHE
 
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareUsing Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareLastline, Inc.
 
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | Prometheus
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | PrometheusCreating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | Prometheus
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | PrometheusInfluxData
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
 
Don't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesDon't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesJamund Ferguson
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)Andrey Karpov
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksYuki Ueda
 
Resilience Engineering: A field of study, a community, and some perspective s...
Resilience Engineering: A field of study, a community, and some perspective s...Resilience Engineering: A field of study, a community, and some perspective s...
Resilience Engineering: A field of study, a community, and some perspective s...John Allspaw
 
Kyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerAndrey Karpov
 
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTEclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTElena Laskavaia
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works奈良先端大 情報科学研究科
 
Continuous Integration - Live Static Analysis with Puma Scan
Continuous Integration - Live Static Analysis with Puma ScanContinuous Integration - Live Static Analysis with Puma Scan
Continuous Integration - Live Static Analysis with Puma ScanPuma Security, LLC
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareAndrey Karpov
 
Of Owls and IO Objects
Of Owls and IO ObjectsOf Owls and IO Objects
Of Owls and IO ObjectsFelix Morgner
 

Similar a Reducing Redundancies in Multi-Revision Code Analysis (20)

DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
 
Nzitf Velociraptor Workshop
Nzitf Velociraptor WorkshopNzitf Velociraptor Workshop
Nzitf Velociraptor Workshop
 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error prediction
 
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareUsing Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
 
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | Prometheus
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | PrometheusCreating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | Prometheus
Creating the PromQL Transpiler for Flux by Julius Volz, Co-Founder | Prometheus
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Don't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesDon't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax Trees
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works
 
Resilience Engineering: A field of study, a community, and some perspective s...
Resilience Engineering: A field of study, a community, and some perspective s...Resilience Engineering: A field of study, a community, and some perspective s...
Resilience Engineering: A field of study, a community, and some perspective s...
 
Kyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdf
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
 
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTEclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works
 
Continuous Integration - Live Static Analysis with Puma Scan
Continuous Integration - Live Static Analysis with Puma ScanContinuous Integration - Live Static Analysis with Puma Scan
Continuous Integration - Live Static Analysis with Puma Scan
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
 
CodeChecker summary 21062021
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
Of Owls and IO Objects
Of Owls and IO ObjectsOf Owls and IO Objects
Of Owls and IO Objects
 

Más de Sebastiano Panichella

The 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringThe 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringSebastiano Panichella
 
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...Sebastiano Panichella
 
SBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSebastiano Panichella
 
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation Track
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation TrackSBFT Tool Competition 2024 - CPS-UAV Test Case Generation Track
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation TrackSebastiano Panichella
 
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSimulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSebastiano Panichella
 
Testing with Fewer Resources: Toward Adaptive Approaches for Cost-effective ...
Testing with Fewer Resources:  Toward Adaptive Approaches for Cost-effective ...Testing with Fewer Resources:  Toward Adaptive Approaches for Cost-effective ...
Testing with Fewer Resources: Toward Adaptive Approaches for Cost-effective ...Sebastiano Panichella
 
COSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical SystemsCOSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical SystemsSebastiano Panichella
 
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...Sebastiano Panichella
 
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...Sebastiano Panichella
 
Automated Identification and Qualitative Characterization of Safety Concerns ...
Automated Identification and Qualitative Characterization of Safety Concerns ...Automated Identification and Qualitative Characterization of Safety Concerns ...
Automated Identification and Qualitative Characterization of Safety Concerns ...Sebastiano Panichella
 
The 2nd Intl. Workshop on NL-based Software Engineering
The 2nd Intl. Workshop on NL-based Software EngineeringThe 2nd Intl. Workshop on NL-based Software Engineering
The 2nd Intl. Workshop on NL-based Software EngineeringSebastiano Panichella
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingSebastiano Panichella
 
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...Sebastiano Panichella
 
Exposed! A case study on the vulnerability-proneness of Google Play Apps
Exposed! A case study on the vulnerability-proneness of Google Play AppsExposed! A case study on the vulnerability-proneness of Google Play Apps
Exposed! A case study on the vulnerability-proneness of Google Play AppsSebastiano Panichella
 
Search-based Software Testing (SBST) '22
Search-based Software Testing (SBST) '22Search-based Software Testing (SBST) '22
Search-based Software Testing (SBST) '22Sebastiano Panichella
 
NL-based Software Engineering (NLBSE) '22
NL-based Software Engineering (NLBSE) '22NL-based Software Engineering (NLBSE) '22
NL-based Software Engineering (NLBSE) '22Sebastiano Panichella
 
"An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.
 "An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.  "An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.
"An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021. Sebastiano Panichella
 
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...An Empirical Investigation of Relevant Changes and Automation Needs in Modern...
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...Sebastiano Panichella
 
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...Sebastiano Panichella
 

Más de Sebastiano Panichella (20)

The 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software EngineeringThe 3rd Intl. Workshop on NL-based Software Engineering
The 3rd Intl. Workshop on NL-based Software Engineering
 
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...
Diversity-guided Search Exploration for Self-driving Cars Test Generation thr...
 
SBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation TrackSBFT Tool Competition 2024 -- Python Test Case Generation Track
SBFT Tool Competition 2024 -- Python Test Case Generation Track
 
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation Track
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation TrackSBFT Tool Competition 2024 - CPS-UAV Test Case Generation Track
SBFT Tool Competition 2024 - CPS-UAV Test Case Generation Track
 
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with AerialistSimulation-based Testing of Unmanned Aerial Vehicles with Aerialist
Simulation-based Testing of Unmanned Aerial Vehicles with Aerialist
 
Testing with Fewer Resources: Toward Adaptive Approaches for Cost-effective ...
Testing with Fewer Resources:  Toward Adaptive Approaches for Cost-effective ...Testing with Fewer Resources:  Toward Adaptive Approaches for Cost-effective ...
Testing with Fewer Resources: Toward Adaptive Approaches for Cost-effective ...
 
COSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical SystemsCOSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical Systems
 
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...
Testing and Development Challenges for Complex Cyber-Physical Systems: Insigh...
 
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...
An Empirical Characterization of Software Bugs in Open-Source Cyber-Physical ...
 
Automated Identification and Qualitative Characterization of Safety Concerns ...
Automated Identification and Qualitative Characterization of Safety Concerns ...Automated Identification and Qualitative Characterization of Safety Concerns ...
Automated Identification and Qualitative Characterization of Safety Concerns ...
 
The 2nd Intl. Workshop on NL-based Software Engineering
The 2nd Intl. Workshop on NL-based Software EngineeringThe 2nd Intl. Workshop on NL-based Software Engineering
The 2nd Intl. Workshop on NL-based Software Engineering
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz Testing
 
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...
Simulation-based Test Case Generation for Unmanned Aerial Vehicles in the Nei...
 
Exposed! A case study on the vulnerability-proneness of Google Play Apps
Exposed! A case study on the vulnerability-proneness of Google Play AppsExposed! A case study on the vulnerability-proneness of Google Play Apps
Exposed! A case study on the vulnerability-proneness of Google Play Apps
 
Search-based Software Testing (SBST) '22
Search-based Software Testing (SBST) '22Search-based Software Testing (SBST) '22
Search-based Software Testing (SBST) '22
 
NL-based Software Engineering (NLBSE) '22
NL-based Software Engineering (NLBSE) '22NL-based Software Engineering (NLBSE) '22
NL-based Software Engineering (NLBSE) '22
 
NLBSE’22: Tool Competition
NLBSE’22: Tool CompetitionNLBSE’22: Tool Competition
NLBSE’22: Tool Competition
 
"An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.
 "An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.  "An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.
"An NLP-based Tool for Software Artifacts Analysis" at @ICSME2021.
 
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...An Empirical Investigation of Relevant Changes and Automation Needs in Modern...
An Empirical Investigation of Relevant Changes and Automation Needs in Modern...
 
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...
Search-Based Software Testing Tool Competition 2021 by Sebastiano Panichella,...
 

Último

The Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationThe Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationNathan Young
 
Event 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxEvent 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxaryanv1753
 
Genshin Impact PPT Template by EaTemp.pptx
Genshin Impact PPT Template by EaTemp.pptxGenshin Impact PPT Template by EaTemp.pptx
Genshin Impact PPT Template by EaTemp.pptxJohnree4
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Krijn Poppe
 
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comSaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comsaastr
 
Work Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxWork Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxmavinoikein
 
PHYSICS PROJECT BY MSC - NANOTECHNOLOGY
PHYSICS PROJECT BY MSC  - NANOTECHNOLOGYPHYSICS PROJECT BY MSC  - NANOTECHNOLOGY
PHYSICS PROJECT BY MSC - NANOTECHNOLOGYpruthirajnayak525
 
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power
 
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...marjmae69
 
Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Escort Service
 
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxGenesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxFamilyWorshipCenterD
 
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...漢銘 謝
 
miladyskindiseases-200705210221 2.!!pptx
miladyskindiseases-200705210221 2.!!pptxmiladyskindiseases-200705210221 2.!!pptx
miladyskindiseases-200705210221 2.!!pptxCarrieButtitta
 
Anne Frank A Beacon of Hope amidst darkness ppt.pptx
Anne Frank A Beacon of Hope amidst darkness ppt.pptxAnne Frank A Beacon of Hope amidst darkness ppt.pptx
Anne Frank A Beacon of Hope amidst darkness ppt.pptxnoorehahmad
 
call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@vikas rana
 
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.KathleenAnnCordero2
 
Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸mathanramanathan2005
 
James Joyce, Dubliners and Ulysses.ppt !
James Joyce, Dubliners and Ulysses.ppt !James Joyce, Dubliners and Ulysses.ppt !
James Joyce, Dubliners and Ulysses.ppt !risocarla2016
 

Último (19)

The Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationThe Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism Presentation
 
Event 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxEvent 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptx
 
Genshin Impact PPT Template by EaTemp.pptx
Genshin Impact PPT Template by EaTemp.pptxGenshin Impact PPT Template by EaTemp.pptx
Genshin Impact PPT Template by EaTemp.pptx
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
 
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comSaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
 
Work Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptxWork Remotely with Confluence ACE 2.pptx
Work Remotely with Confluence ACE 2.pptx
 
PHYSICS PROJECT BY MSC - NANOTECHNOLOGY
PHYSICS PROJECT BY MSC  - NANOTECHNOLOGYPHYSICS PROJECT BY MSC  - NANOTECHNOLOGY
PHYSICS PROJECT BY MSC - NANOTECHNOLOGY
 
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
 
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...
Gaps, Issues and Challenges in the Implementation of Mother Tongue Based-Mult...
 
Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170
 
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptxGenesis part 2 Isaiah Scudder 04-24-2024.pptx
Genesis part 2 Isaiah Scudder 04-24-2024.pptx
 
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
 
miladyskindiseases-200705210221 2.!!pptx
miladyskindiseases-200705210221 2.!!pptxmiladyskindiseases-200705210221 2.!!pptx
miladyskindiseases-200705210221 2.!!pptx
 
Anne Frank A Beacon of Hope amidst darkness ppt.pptx
Anne Frank A Beacon of Hope amidst darkness ppt.pptxAnne Frank A Beacon of Hope amidst darkness ppt.pptx
Anne Frank A Beacon of Hope amidst darkness ppt.pptx
 
call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@call girls in delhi malviya nagar @9811711561@
call girls in delhi malviya nagar @9811711561@
 
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Rohini Delhi 💯Call Us 🔝8264348440🔝
 
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
 
Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸
 
James Joyce, Dubliners and Ulysses.ppt !
James Joyce, Dubliners and Ulysses.ppt !James Joyce, Dubliners and Ulysses.ppt !
James Joyce, Dubliners and Ulysses.ppt !
 

Reducing Redundancies in Multi-Revision Code Analysis

  • 1. Carol V. Alexandru, Sebastiano Panichella, Harald C. Gall Software Evolution and Architecture Lab University of Zurich, Switzerland {alexandru,panichella,gall}@ifi.uzh.ch 22.02.2017 SANER’17 Klagenfurt, Austria
  • 2. The Problem Domain • Static analysis (e.g. #Attr., McCabe, coupling...) 1
  • 3. The Problem Domain v0.7.0 v1.0.0 v1.3.0 v2.0.0 v3.0.0 v3.3.0 v3.5.0 2 • Static analysis (e.g. #Attr., McCabe, coupling...)
  • 4. The Problem Domain v0.7.0 v1.0.0 v1.3.0 v2.0.0 v3.0.0 v3.3.0 v3.5.0 2 • Static analysis (e.g. #Attr., McCabe, coupling...) • Many revisions, fine-grained historical data
  • 5. A Typical Analysis Process 3 www clone select project
  • 6. A Typical Analysis Process www clone checkout select project select revision 3
  • 7. A Typical Analysis Process www clone checkout analysis tool Res select project select revision apply tool store analysis results 3
  • 8. A Typical Analysis Process www clone checkout analysis tool Res select project select revision apply tool store analysis results more revisions? 3
  • 9. A Typical Analysis Process www clone checkout analysis tool Res select project select revision apply tool store analysis results more revisions? more projects? 3
  • 10. Redundancies all over... 4 Redundancies in historical code analysis Impact on Code Study Tools
  • 11. Redundancies all over... Redundancies in historical code analysis Few files change Only small parts of a file change Across Revisions Impact on Code Study Tools 4
  • 12. Redundancies all over... Redundancies in historical code analysis Few files change Only small parts of a file change Across Revisions Impact on Code Study Tools Repeated analysis of "known" code 4
  • 13. Redundancies all over... Redundancies in historical code analysis Few files change Only small parts of a file change Changes may not even affect results Across Revisions Impact on Code Study Tools Repeated analysis of "known" code Storing redundant results 4
  • 14. Redundancies all over... 4 Redundancies in historical code analysis Few files change Across Languages Only small parts of a file change Changes may not even affect results Each language has their own toolchain Yet they share many metrics Across Revisions Impact on Code Study Tools Repeated analysis of "known" code Storing redundant results
  • 15. Redundancies all over... Redundancies in historical code analysis Few files change Across Languages Only small parts of a file change Changes may not even affect results Each language has their own toolchain Yet they share many metrics Across Revisions Impact on Code Study Tools Repeated analysis of "known" code Storing redundant results Re-implementing identical analyses Generalizability is expensive 4
  • 16. Redundancies all over... Redundancies in historical code analysis Few files change Across Languages Only small parts of a file change Changes may not even affect results Each language has their own toolchain Yet they share many metrics Across Revisions Impact on Code Study Tools Repeated analysis of "known" code Storing redundant results Re-implementing identical analyses Generalizability is expensive 5
  • 22. Avoid checkouts 7 clone checkout read For every file: 2 read ops + 1 write op Checkout includes irrelevant files Need 1 CWD for every revision to be analyzed in parallel read write analyze
  • 24. Avoid checkouts 8 clone analyze Only read relevant files in a single read op No write ops No overhead for parallization read
  • 25. Avoid checkouts 8 clone analyze Only read relevant files in a single read op No write ops No overhead for parallization Git Analysis Tool File Abstraction Layer read
  • 26. Avoid checkouts 8 clone analyze Only read relevant files in a single read op No write ops No overhead for parallization Git Analysis Tool File Abstraction Layer E.g. for the JDK Compiler: class JavaSourceFromCharrArray(name: String, val code: CharBuffer) extends SimpleJavaFileObject(URI.create("string:///" + name), Kind.SOURCE) { override def getCharContent(): CharSequence = code } read
  • 27. Avoid checkouts clone analyze Only read relevant files in a single read op No write ops No overhead for parallization Git Analysis Tool File Abstraction Layer E.g. for the JDK Compiler: class JavaSourceFromCharrArray(name: String, val code: CharBuffer) extends SimpleJavaFileObject(URI.create("string:///" + name), Kind.SOURCE) { override def getCharContent(): CharSequence = code } read 9
  • 28. #2: Use a multi-revision representation of your sources
  • 29. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 10
  • 30. rev. 1 rev. 2 rev. 3 rev. 4 11 rev. 1 Merge ASTs
  • 31. rev. 1 rev. 2 rev. 3 rev. 4 12 rev. 2 Merge ASTs
  • 32. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 13 rev. 3
  • 33. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 14 rev. 4
  • 34. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 15
  • 35. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 16 rev. range [1-4] rev. range [1-2]
  • 36. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 AspectJ (~440k LOC): 1 commit: 2.2M nodes All >7000 commits: 6.5M nodes 17
  • 37. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 AspectJ (~440k LOC): 1 commit: 2.2M nodes All >7000 commits: 6.5M nodes 18
  • 38. Merge ASTs rev. 1 rev. 2 rev. 3 rev. 4 AspectJ (~440k LOC): 1 commit: 2.2M nodes All >7000 commits: 6.5M nodes 19
  • 39. #3: Store AST nodes only if they're needed for analysis
  • 40. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } What's the complexity (1+#forks) and name for each method and class? 20
  • 41. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } 140 AST nodes (using ANTLR) parse What's the complexity (1+#forks) and name for each method and class? 20
  • 42. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } 140 AST nodes (using ANTLR) parse CompilationUnit TypeDeclaration Modifiers public Members Method Modifiers public Name run Name Demo Parameters ReturnType PrimitiveType VOID Body Statements ... ... What's the complexity (1+#forks) and name for each method and class? 20
  • 43. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } What's the complexity (1+#forks) and name for each method and class? 140 AST nodes (using ANTLR) parse filtered parse TypeDeclaration Method Name run Name DemoForStatement IfStatement ConditionalExpression 7 AST nodes (using ANTLR) 21
  • 44. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } What's the complexity (1+#forks) and name for eachmethod and class? 140 AST nodes (using ANTLR) parse filtered parse TypeDeclaration Method Name run Name DemoForStatement IfStatement ConditionalExpression 7 AST nodes (using ANTLR) 22
  • 45. public class Demo { public void run() { for (int i = 1; i< 100; i++) { if (i % 3 == 0 || i % 5 == 0) { System.out.println(i) } } } What's the complexity (1+#forks) and name for eachmethod and class? 140 AST nodes (using ANTLR) parse filtered parse TypeDeclaration Method Name run Name DemoForStatement IfStatement ConditionalExpression 7 AST nodes (using ANTLR) 23
  • 46. #4: Use non-duplicative data structures to store your results
  • 47. rev. 1 rev. 2 rev. 3 rev. 4 24
  • 48. rev. 1 rev. 2 rev. 3 rev. 4 24
  • 49. rev. 1 rev. 2 rev. 3 rev. 4 24 [1-1] label #attr mcc [4-4] label #attr mcc InnerClass 0 4 1 2 4 [2-3] label #attr mcc
  • 50. rev. 1 rev. 2 rev. 3 rev. 4 [1-1] label #attr mcc [4-4] label #attr mcc InnerClass 0 4 1 2 4 [2-3] label #attr mcc 25
  • 51. LISA also does: #5: Parallel Parsing #6: Asynchronous graph computation #7: Generic graph computations applying to ASTs from compatible languages 26
  • 53. The LISA Analysis Process 27 www clone select project
  • 54. The LISA Analysis Process 27 www clone parallel parse into merged graph select project Language Mappings (Grammar to Analysis) determines which AST nodes are loaded ANTLRv4 Grammar used by Generates Parser
  • 55. The LISA Analysis Process 27 www clone parallel parse into merged graph Res select project store analysis results Analysis formulated as Graph Computation Language Mappings (Grammar to Analysis) used by Async. compute determines which AST nodes are loaded determines which data is persisted ANTLRv4 Grammar used by Generates Parser runs on graph
  • 56. The LISA Analysis Process 27 www clone parallel parse into merged graph Res select project store analysis results more projects? Analysis formulated as Graph Computation Language Mappings (Grammar to Analysis) used by Async. compute determines which AST nodes are loaded determines which data is persisted ANTLRv4 Grammar used by Generates Parser runs on graph
  • 57. How well does it work, then?
  • 58. Marginal cost for +1 revision 41.670 4.633 0.525 0.109 0.082 0.071 0.052 0.041 0.032 0.033 0 5 10 15 20 25 30 35 40 45 50 1 10 100 1000 2000 3000 4000 5000 6000 7000 Average Parsing+Computation time per Revision when analyzing n revisions of AspectJ (10 common metrics) Seconds # of revisions 28
  • 59. Overall Performance Stats 29 Language Java C# JavScript #Projects 100 100 100 #Revisions 646'261 489'764 204'301 #Files (parsed!) 3'235'852 3'234'178 507'612 #Lines (parsed!) 1'370'998'072 961'974'773 194'758'719 Total Runtime (RT)¹ 18:43h 52:12h 29:09h Median RT¹ 2:15min 4:54min 3:43min Tot. Avg. RT per Rev.² 84ms 401ms 531ms Med. Avg. RT per Rev.² 30ms 116ms 166ms ¹ Including cloning and persisting results ² Excluding cloning and persisting results
  • 60. What's the catch? (There are a few...)
  • 61. The (not so) minor stuff • Must implement analyses from scratch • No help from a compiler • Non-file-local analyses need some effort 30
  • 62. The (not so) minor stuff • Must implement analyses from scratch • No help from a compiler • Non-file-local analyses need some effort • Moved files/methods etc. add overhead • Uniquely identifying files/entities is hard • (No impact on results, though) 30
  • 63. Language matters 31 Javascript C# Java E.g.: Javascript takes longer because: • Larger files, less modularization • Slower parser (automatic semicolon-insertion)
  • 65. Thank you for your attention SANER ‘17, Klagenfurt, 22.02.2017 Read the paper: http://t.uzh.ch/Fj Try the tool: http://t.uzh.ch/Fk Get the slides: http://t.uzh.ch/Fm Contact me: alexandru@ifi.uzh.ch