SlideShare ist ein Scribd-Unternehmen logo
1 von 44
It’s Not a Bug, It’s a feature
How Misclassification Impacts Bug Prediction
Kim Herzig Andreas ZellerSascha Just
to reason about code quality.
Bug Reports are frequently used
issue tracker
version archive
source data
bug report
change set
Bug Prediction.
issue tracker
version archive
source data
mappings
link recovery
bug report
change set
Bug Prediction.
issue tracker
version archive
source data
mappings
link recovery
bug report
change set
Bug Prediction.
fix count
mark as fixed
issue tracker
version archive
source data
mappings
link recovery
bug report
change set
Predict
prediction model
defects per entity
Bug Prediction.
fix count
mark as fixed
issue tracker
version archive
mappings
Bug Prediction.
Predict
source data link recovery fix count prediction model
When is a bug a bug?
a defective behavior of a program that is fixed by a
semantic change to the source code
When reasoning about code quality, a bug is:
When is a bug a bug?
a defective behavior of a program that is fixed by a
semantic change to the source code
When reasoning about code quality, a bug is:
This may not match the perspective of a user or a developer.
User
The Developer-User-Analyst Triangle.
User
(contributor)
The Developer-User-Analyst Triangle.
Program does not
behave like I expected.
User
(contributor)
The Developer-User-Analyst Triangle.
The program has a BUG.
User
The Developer-User-Analyst Triangle.
User
issue tracker
Creates a new BUG
report.
The Developer-User-Analyst Triangle.
User Developer
issue tracker
The Developer-User-Analyst Triangle.
User Developer
issue tracker
The behavior was
intended, but I can change
this functionality.
The Developer-User-Analyst Triangle.
User Developer
issue tracker
The Developer-User-Analyst Triangle.
User Developer
issue tracker
The Developer-User-Analyst Triangle.
issue tracker
User Developer
version archive
The Developer-User-Analyst Triangle.
issue tracker
User Developer
Commits patch that
allows subclassing.
version archive
The Developer-User-Analyst Triangle.
issue tracker
User Developer
Commits patch that
allows subclassing.
version archiveThis is an
IMPROVEMENT
to our software.
The Developer-User-Analyst Triangle.
issue tracker
User Developer
Commits patch that
allows subclassing.
version archive
Report closed with
unchanged type BUG.
This is an
IMPROVEMENT
to our software.
The Developer-User-Analyst Triangle.
User Developer
Analyst
issue tracker version archive
User Developer
Analyst
We mark the changed
entities as fixed.
issue tracker version archive
User Developer
Analyst
We mark the changed
entities as fixed.
Report increases
bug count of
entities.
issue tracker version archive
User Developer
Analyst
We mark the changed
entities as fixed.
Report increases
bug count of
entities.But that’s wrong!
issue tracker version archive
User Developer
Analyst
Report increases
bug count of
entities.But that’s wrong!
issue tracker version archive
This is just a
REFACTORING
and does not change
functionality.
User Developer
Analyst
User Developer
Analyst
Depends on the
perspective!
communication platforms.
Bug Trackers are
communication platforms.
Bug Trackers are
Data
communication platforms.
Bug Trackers are
Data
meaning
Interpretation
Perspective
Point-of-view
Opinion
Classified issue reports
How many issue reports match the expectations
of an analyst?
Manually classified more than 7,000 bug reports on five open source projects.
TABLE III
CLASSIFICATION RULES
A report is categorized as BUG (Fix Request) if. . .
1) it reports a NullpointerException (NPE).
2) the discussion concludes that code had to be changed semantica
perform a corrective maintenance task.
3) it fixes runtime or memory issues cause by defects such as e
loops.
Example: Tomcat5 report 281473
is categorized as RFE but reports a bug that
a “JasperException for jsp files that are symbolic links”. The underlying iss
that tomcat used canonical instead of absolute paths. The applied fix touches o
replacing one method invocation. According to Rule 2, we classified the applie
change as a corrective maintenance task and thus the issue report as BUG.
A report is categorized as RFE (Feature Request) if. . .
1) it requests to implement a new access/getter method.
2) it requests to add new functionality.
3) it requests to support new object types, specifications, or standar
4
rule set
fits the needs of
a software miner
Classified issue reports
How many issue reports match the expectations
of an analyst?
What’s the impact on bug count models?
Manually classified more than 7,000 bug reports on five open source projects.
Are bug reports bug reports?
Manually classified more than 7,000 bug reports on five open source projects
-TrackerBugzilla
wrongly classified correctly classified
52% 48%
HTTPClient
62%
38%
Jackrabbit
54%
46%
Lucene-Java
57%
43%
Rhino
59%
41%
Tomcat5
-Tracker
Reclassification of BUG-Reports
Misclassified
Classified
Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined
BUG
RFE
DOC
IMPR
REFAC
OTHER
63.5% 75.1% 65.4% 59.2% 61.3% 66.2%
6.6% 1.9% 4.8% 6.0% 3.1% 3.9%
36.5% 24.9% 34.6% 40.8% 38.7% 33.8%
8.7% 1.5% 4.8% 0.0% 10.3% 5.1%
13.0% 5.9% 7.9% 8.8% 12.0% 9.0%
1.7% 0.9% 4.3% 10.2% 0.5% 2.8%
6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
Reclassification of BUG-Reports
Misclassified
Classified
Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined
BUG
RFE
DOC
IMPR
REFAC
OTHER
63.5% 75.1% 65.4% 59.2% 61.3% 66.2%
6.6% 1.9% 4.8% 6.0% 3.1% 3.9%
36.5% 24.9% 34.6% 40.8% 38.7% 33.8%
8.7% 1.5% 4.8% 0.0% 10.3% 5.1%
13.0% 5.9% 7.9% 8.8% 12.0% 9.0%
1.7% 0.9% 4.3% 10.2% 0.5% 2.8%
6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
Every 3rd bug should not
be considered a bug!*
Reclassification of BUG-Reports
Misclassified
Classified
Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined
BUG
RFE
DOC
IMPR
REFAC
OTHER
63.5% 75.1% 65.4% 59.2% 61.3% 66.2%
6.6% 1.9% 4.8% 6.0% 3.1% 3.9%
36.5% 24.9% 34.6% 40.8% 38.7% 33.8%
8.7% 1.5% 4.8% 0.0% 10.3% 5.1%
13.0% 5.9% 7.9% 8.8% 12.0% 9.0%
1.7% 0.9% 4.3% 10.2% 0.5% 2.8%
6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
Every 3rd bug should not
be considered a bug!*
* if we want to reason about code quality.
Classified issue reports
How many issue reports match the expectations
of an analyst?
What’s the impact on bug count models?
Manually classified more than 7,000 bug reports on five open source projects.
Cutoff-difference caused by misclassified bugs
HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5
0
10
20
30
40
TOP 5% TOP 10% TOP 15% TOP 20%
Cutoff-difference caused by misclassified bugs
HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5
0
10
20
30
40
TOP 5% TOP 10% TOP 15% TOP 20%
~37% of files have a different bug count.
Cutoff-difference caused by misclassified bugs
HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5
0
10
20
30
40
TOP 5% TOP 10% TOP 15% TOP 20%
~39% of files considered buggy, never had a bug.
~37% of files have a different bug count.
issue tracker
version archive
mappings
Bug Prediction.
Predict
source data link recovery fix count prediction model
User Developer
Analyst
Depends on the
perspective!
TABLE III
CLASSIFICATION RULES
A report is categorized as BUG (Fix Request) if...
1) it reports a NullpointerException (NPE).
2) the discussion concludes that code had to be changed semantically to
perform a corrective maintenance task.
3) it fixes runtime or memory issues cause by defects such as endless
loops.
Example: Tomcat5 report 281473
is categorized as RFE but reports a bug that causes
a “JasperException for jsp files that are symbolic links”. The underlying issue was
that tomcat used canonical instead of absolute paths. The applied fix touches one line
replacing one method invocation. According to Rule 2, we classified the applied code
change as a corrective maintenance task and thus the issue report as BUG.
A report is categorized as RFE (Feature Request) if...
1) it requests to implement a new access/getter method.
2) it requests to add new functionality.
3) it requests to support new object types, specifications, or standards.
Example: Lucene-Java report LUCENE-20744
is categorized as BUG. But the applied
patch and the discussion unveil that a new versioning mechanism had to be implemented.
The first comment by Uwe Schindler makes it explicit: “Here the patch. It uses an
interface containing the needed methods to easyliy [sic] switch between both impl. The
old one was deprecated [...]”. This is reclassified as RFE by Rule 2.
A report is categorized as IMPR (Improvement Request) if...
1) it discusses resource issues (time, memory) caused by non optimal
algorithms or garbage collection strategies.
2) it discusses semantics-preserving changes (typos, formatting) to code,
log messages, exception messages, or property fields.
3) it requests more or fewer log messages.
4) it requests changing the content of log messages.
5) it requests changing the type and/or the message of Exceptions to be
thrown.
6) it requests changes supporting new input or output formats (e.g. for
backward compatibility or user satisfaction).
7) it introduces concurrent versions of already existent functionalities.
8) it suggests upgrading or patching third party libraries to overcome issues
caused by third party libraries.
9) it requests changes that correct/synchronize an already implemented
feature according to specification/documentation.
Example: Jackrabbit report JCR-28925
is filed as BUG under the title “Large fetch sizes
have potentially deleterious effects on VM memory requirements when using Oracle”.
The algorithm fetches data from a database with a large amount of columns and rows,
which caused the Oracle driver to allocate a large buffer. The resolution was to develop
a new algorithm consuming less memory. This is an IMPR according to Rule 1 since no
new functionality was implemented and since the program did not contain any defect.
A report is categorized as DOC (Documentation Request) if...
1) its discussion unveils that the report was filed due to missing, ambigu-
ous, or outdated documentation.
Example: Tomcat5 bug report 300486
fixes the problem“Setting compressableMimeTypes
is ignored.” by “Docs updated in CVS to reflect correct spelling.” This is a DOC.
A report is categorized as REFAC (Refactoring Request) if...
1) it requests to move code into other packages, classes, or methods.
2) it requests to rename variables, methods, classes, packages, or config-
uration options.
Example: Tomcat5 report 282867
is filed as BUG and contains a patch adding a new
interface SSOValve. But in comment 4, Remy Maucherat refuses to apply the patch and
the idea to introduce a new interface. Instead, he commits a patch that refactors class
AuthenticatorBase to allow subclassing. This is a REFAC as per Rule 2.
A report is categorized as OTHER if...
1) it reports violations of JAVA contracts without causing failures (e.g.
“equals() but no hashCode()”).
2) complains about compatibility fixes (e.g. “should compile with GCJ”).
3) the task does not require changing source or documentation (like
packaging, configuration, download, etc.)
Example: Lucene-Java report LUCENE-18938
complains that “classes implement
equals() but not hashCode()”. This violated JAVA contracts but does not cause failures.
Lucene-Java report LUCENE-2899
requests “better support gcj compilation”. According
to our rules this is considered to be an compatibility improvement classified as OTHER.
NOISE RATES FOR A
Proj
HTT
Jack
Luc
Rhin
Tom
All
IV.
In this section, w
(with respect to iss
databases of the fiv
start analyzing the i
positive rates and
many issue reports
these misclassified
the impact and bia
to code changes an
how a simple mode
impacted by miscla
As overall noise
The false positive r
fied issue reports an
rate is independent
will discuss individ
noise rate, the highe
in approaches base
RQ1 Do bug datab
misclassificatio
Table IV shows
and for a combine
all five projects. Th
37% and 47% and
rate lies at 42.6%—
wrongly typed. This
approach based on
Over all five pro
issue
The noise rates o
variances are show
the categories DOC
of the analyzed bu
categories. The box
OTHER are based
does not support th
3https://issues.apache.
4https://issues.apache.
5https://issues.apache.
6https://issues.apache.
7https://issues.apache.
8https://issues.apache.
9https://issues.apache.
rule set
Reclassification of BUG-Reports
Misclassified
Classified
Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined
BUG
RFE
DOC
IMPR
REFAC
OTHER
63.5% 75.1% 65.4% 59.2% 61.3% 66.2%
6.6% 1.9% 4.8% 6.0% 3.1% 3.9%
36.5% 24.9% 34.6% 40.8% 38.7% 33.8%
8.7% 1.5% 4.8% 0.0% 10.3% 5.1%
13.0% 5.9% 7.9% 8.8% 12.0% 9.0%
1.7% 0.9% 4.3% 10.2% 0.5% 2.8%
6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
Every 3rd bug should not
be considered a bug!*
* if we want to reason about code quality.
Cutoff-difference caused by misclassified bugs
HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5
0
10
20
30
40
TOP 5% TOP 10% TOP 15% TOP 20%
~37% of files with different bug count.
~39% of files considered buggy never had a bug.
http://www.softevo.org/bugclassify
issue tracker
version archive
mappings
Bug Prediction.
Predict
source data link recovery fix count prediction model
User Developer
Analyst
Depends on the
perspective!
TABLE III
CLASSIFICATION RULES
A report is categorized as BUG (Fix Request) if...
1) it reports a NullpointerException (NPE).
2) the discussion concludes that code had to be changed semantically to
perform a corrective maintenance task.
3) it fixes runtime or memory issues cause by defects such as endless
loops.
Example: Tomcat5 report 281473
is categorized as RFE but reports a bug that causes
a “JasperException for jsp files that are symbolic links”. The underlying issue was
that tomcat used canonical instead of absolute paths. The applied fix touches one line
replacing one method invocation. According to Rule 2, we classified the applied code
change as a corrective maintenance task and thus the issue report as BUG.
A report is categorized as RFE (Feature Request) if...
1) it requests to implement a new access/getter method.
2) it requests to add new functionality.
3) it requests to support new object types, specifications, or standards.
Example: Lucene-Java report LUCENE-20744
is categorized as BUG. But the applied
patch and the discussion unveil that a new versioning mechanism had to be implemented.
The first comment by Uwe Schindler makes it explicit: “Here the patch. It uses an
interface containing the needed methods to easyliy [sic] switch between both impl. The
old one was deprecated [...]”. This is reclassified as RFE by Rule 2.
A report is categorized as IMPR (Improvement Request) if...
1) it discusses resource issues (time, memory) caused by non optimal
algorithms or garbage collection strategies.
2) it discusses semantics-preserving changes (typos, formatting) to code,
log messages, exception messages, or property fields.
3) it requests more or fewer log messages.
4) it requests changing the content of log messages.
5) it requests changing the type and/or the message of Exceptions to be
thrown.
6) it requests changes supporting new input or output formats (e.g. for
backward compatibility or user satisfaction).
7) it introduces concurrent versions of already existent functionalities.
8) it suggests upgrading or patching third party libraries to overcome issues
caused by third party libraries.
9) it requests changes that correct/synchronize an already implemented
feature according to specification/documentation.
Example: Jackrabbit report JCR-28925
is filed as BUG under the title “Large fetch sizes
have potentially deleterious effects on VM memory requirements when using Oracle”.
The algorithm fetches data from a database with a large amount of columns and rows,
which caused the Oracle driver to allocate a large buffer. The resolution was to develop
a new algorithm consuming less memory. This is an IMPR according to Rule 1 since no
new functionality was implemented and since the program did not contain any defect.
A report is categorized as DOC (Documentation Request) if...
1) its discussion unveils that the report was filed due to missing, ambigu-
ous, or outdated documentation.
Example: Tomcat5 bug report 300486
fixes the problem“Setting compressableMimeTypes
is ignored.” by “Docs updated in CVS to reflect correct spelling.” This is a DOC.
A report is categorized as REFAC (Refactoring Request) if...
1) it requests to move code into other packages, classes, or methods.
2) it requests to rename variables, methods, classes, packages, or config-
uration options.
Example: Tomcat5 report 282867
is filed as BUG and contains a patch adding a new
interface SSOValve. But in comment 4, Remy Maucherat refuses to apply the patch and
the idea to introduce a new interface. Instead, he commits a patch that refactors class
AuthenticatorBase to allow subclassing. This is a REFAC as per Rule 2.
A report is categorized as OTHER if...
1) it reports violations of JAVA contracts without causing failures (e.g.
“equals() but no hashCode()”).
2) complains about compatibility fixes (e.g. “should compile with GCJ”).
3) the task does not require changing source or documentation (like
packaging, configuration, download, etc.)
Example: Lucene-Java report LUCENE-18938
complains that “classes implement
equals() but not hashCode()”. This violated JAVA contracts but does not cause failures.
Lucene-Java report LUCENE-2899
requests “better support gcj compilation”. According
to our rules this is considered to be an compatibility improvement classified as OTHER.
NOISE RATES FOR A
Proj
HTT
Jack
Luc
Rhin
Tom
All
IV.
In this section, w
(with respect to iss
databases of the fiv
start analyzing the i
positive rates and
many issue reports
these misclassified
the impact and bia
to code changes an
how a simple mode
impacted by miscla
As overall noise
The false positive r
fied issue reports an
rate is independent
will discuss individ
noise rate, the highe
in approaches base
RQ1 Do bug datab
misclassificatio
Table IV shows
and for a combine
all five projects. Th
37% and 47% and
rate lies at 42.6%—
wrongly typed. This
approach based on
Over all five pro
issue
The noise rates o
variances are show
the categories DOC
of the analyzed bu
categories. The box
OTHER are based
does not support th
3https://issues.apache.
4https://issues.apache.
5https://issues.apache.
6https://issues.apache.
7https://issues.apache.
8https://issues.apache.
9https://issues.apache.
rule set
Reclassification of BUG-Reports
Misclassified
Classified
Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined
BUG
RFE
DOC
IMPR
REFAC
OTHER
63.5% 75.1% 65.4% 59.2% 61.3% 66.2%
6.6% 1.9% 4.8% 6.0% 3.1% 3.9%
36.5% 24.9% 34.6% 40.8% 38.7% 33.8%
8.7% 1.5% 4.8% 0.0% 10.3% 5.1%
13.0% 5.9% 7.9% 8.8% 12.0% 9.0%
1.7% 0.9% 4.3% 10.2% 0.5% 2.8%
6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
Every 3rd bug should not
be considered a bug!*
* if we want to reason about code quality.
Cutoff-difference caused by misclassified bugs
HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5
0
10
20
30
40
TOP 5% TOP 10% TOP 15% TOP 20%
~37% of files with different bug count.
~39% of files considered buggy never had a bug.

Weitere ähnliche Inhalte

Was ist angesagt?

Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Sung Kim
 
SE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and JunitSE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and JunitAmr E. Mohamed
 
Software testing: an introduction - 2017
Software testing: an introduction - 2017Software testing: an introduction - 2017
Software testing: an introduction - 2017XavierDevroey
 
Simple Railroad Command Protocol
Simple Railroad Command ProtocolSimple Railroad Command Protocol
Simple Railroad Command ProtocolAnkit Singh
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis Engineering Software Lab
 
Code coverage & tools
Code coverage & toolsCode coverage & tools
Code coverage & toolsRajesh Kumar
 
A Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution TechniquesA Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution TechniquesSung Kim
 
SE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingSE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingAmr E. Mohamed
 
Improving Code Review Effectiveness Through Reviewer Recommendations
Improving Code Review Effectiveness Through Reviewer RecommendationsImproving Code Review Effectiveness Through Reviewer Recommendations
Improving Code Review Effectiveness Through Reviewer RecommendationsThe University of Adelaide
 
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)Sung Kim
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Alexandre (Shura) Iline
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...Sung Kim
 
Code coverage for automation scripts
Code coverage for automation scriptsCode coverage for automation scripts
Code coverage for automation scriptsvodQA
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSung Kim
 
Using HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review AnalyticsUsing HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review AnalyticsThe University of Adelaide
 

Was ist angesagt? (20)

Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)
 
SE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and JunitSE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and Junit
 
Software testing: an introduction - 2017
Software testing: an introduction - 2017Software testing: an introduction - 2017
Software testing: an introduction - 2017
 
Code coverage
Code coverageCode coverage
Code coverage
 
Simple Railroad Command Protocol
Simple Railroad Command ProtocolSimple Railroad Command Protocol
Simple Railroad Command Protocol
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
 
Code coverage & tools
Code coverage & toolsCode coverage & tools
Code coverage & tools
 
A Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution TechniquesA Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution Techniques
 
Introduction to Parasoft C++TEST
Introduction to Parasoft C++TEST Introduction to Parasoft C++TEST
Introduction to Parasoft C++TEST
 
SE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingSE2_Lec 20_Software Testing
SE2_Lec 20_Software Testing
 
Code coverage
Code coverageCode coverage
Code coverage
 
Improving Code Review Effectiveness Through Reviewer Recommendations
Improving Code Review Effectiveness Through Reviewer RecommendationsImproving Code Review Effectiveness Through Reviewer Recommendations
Improving Code Review Effectiveness Through Reviewer Recommendations
 
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
 
MTV15
MTV15MTV15
MTV15
 
Embedded Testing 2015
Embedded Testing 2015Embedded Testing 2015
Embedded Testing 2015
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
 
Code coverage for automation scripts
Code coverage for automation scriptsCode coverage for automation scripts
Code coverage for automation scripts
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
Using HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review AnalyticsUsing HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review Analytics
 

Ähnlich wie It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction

Creation of a Test Bed Environment for Core Java Applications using White Box...
Creation of a Test Bed Environment for Core Java Applications using White Box...Creation of a Test Bed Environment for Core Java Applications using White Box...
Creation of a Test Bed Environment for Core Java Applications using White Box...cscpconf
 
Microservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingMicroservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingAraf Karsh Hamid
 
Java Performance & Profiling
Java Performance & ProfilingJava Performance & Profiling
Java Performance & ProfilingIsuru Perera
 
wp-25tips-oltscripts-2287467
wp-25tips-oltscripts-2287467wp-25tips-oltscripts-2287467
wp-25tips-oltscripts-2287467Yutaka Takatsu
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaAli Muzaffar
 
A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software developmentMartin Pinzger
 
Being Reactive with Spring
Being Reactive with SpringBeing Reactive with Spring
Being Reactive with SpringKris Galea
 
JAVA LOGGING for JAVA APPLICATION PERFORMANCE
JAVA LOGGING for JAVA APPLICATION PERFORMANCEJAVA LOGGING for JAVA APPLICATION PERFORMANCE
JAVA LOGGING for JAVA APPLICATION PERFORMANCERajendra Ladkat
 
Advanced Tips and Tricks for Debugging React Applications
Advanced Tips and Tricks for Debugging React ApplicationsAdvanced Tips and Tricks for Debugging React Applications
Advanced Tips and Tricks for Debugging React ApplicationsInexture Solutions
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatVMware Hyperic
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...Gui Padua
 
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications neirew J
 
Error isolation and management in agile
Error isolation and management in agileError isolation and management in agile
Error isolation and management in agileijccsa
 
Practical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedPractical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedRob Vesse
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEQAware GmbH
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...Amine Barrak
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation DefenseSung Kim
 
React gsg presentation with ryan jung & elias malik
React   gsg presentation with ryan jung & elias malikReact   gsg presentation with ryan jung & elias malik
React gsg presentation with ryan jung & elias malikLama K Banna
 

Ähnlich wie It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction (20)

Creation of a Test Bed Environment for Core Java Applications using White Box...
Creation of a Test Bed Environment for Core Java Applications using White Box...Creation of a Test Bed Environment for Core Java Applications using White Box...
Creation of a Test Bed Environment for Core Java Applications using White Box...
 
Microservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive ProgrammingMicroservices Part 4: Functional Reactive Programming
Microservices Part 4: Functional Reactive Programming
 
Java Performance & Profiling
Java Performance & ProfilingJava Performance & Profiling
Java Performance & Profiling
 
wp-25tips-oltscripts-2287467
wp-25tips-oltscripts-2287467wp-25tips-oltscripts-2287467
wp-25tips-oltscripts-2287467
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJava
 
IJET-V2I6P28
IJET-V2I6P28IJET-V2I6P28
IJET-V2I6P28
 
A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software development
 
Being Reactive with Spring
Being Reactive with SpringBeing Reactive with Spring
Being Reactive with Spring
 
JAVA LOGGING for JAVA APPLICATION PERFORMANCE
JAVA LOGGING for JAVA APPLICATION PERFORMANCEJAVA LOGGING for JAVA APPLICATION PERFORMANCE
JAVA LOGGING for JAVA APPLICATION PERFORMANCE
 
Advanced Tips and Tricks for Debugging React Applications
Advanced Tips and Tricks for Debugging React ApplicationsAdvanced Tips and Tricks for Debugging React Applications
Advanced Tips and Tricks for Debugging React Applications
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
 
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications
Error Isolation and Management in Agile Multi-Tenant Cloud Based Applications
 
Error isolation and management in agile
Error isolation and management in agileError isolation and management in agile
Error isolation and management in agile
 
Practical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedPractical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking Revisited
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation Defense
 
React gsg presentation with ryan jung & elias malik
React   gsg presentation with ryan jung & elias malikReact   gsg presentation with ryan jung & elias malik
React gsg presentation with ryan jung & elias malik
 

Kürzlich hochgeladen

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Kürzlich hochgeladen (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction

  • 1. It’s Not a Bug, It’s a feature How Misclassification Impacts Bug Prediction Kim Herzig Andreas ZellerSascha Just
  • 2. to reason about code quality. Bug Reports are frequently used
  • 3. issue tracker version archive source data bug report change set Bug Prediction.
  • 4. issue tracker version archive source data mappings link recovery bug report change set Bug Prediction.
  • 5. issue tracker version archive source data mappings link recovery bug report change set Bug Prediction. fix count mark as fixed
  • 6. issue tracker version archive source data mappings link recovery bug report change set Predict prediction model defects per entity Bug Prediction. fix count mark as fixed
  • 7. issue tracker version archive mappings Bug Prediction. Predict source data link recovery fix count prediction model
  • 8. When is a bug a bug? a defective behavior of a program that is fixed by a semantic change to the source code When reasoning about code quality, a bug is:
  • 9. When is a bug a bug? a defective behavior of a program that is fixed by a semantic change to the source code When reasoning about code quality, a bug is: This may not match the perspective of a user or a developer.
  • 12. Program does not behave like I expected. User (contributor) The Developer-User-Analyst Triangle.
  • 13. The program has a BUG. User The Developer-User-Analyst Triangle.
  • 14. User issue tracker Creates a new BUG report. The Developer-User-Analyst Triangle.
  • 15. User Developer issue tracker The Developer-User-Analyst Triangle.
  • 16. User Developer issue tracker The behavior was intended, but I can change this functionality. The Developer-User-Analyst Triangle.
  • 17. User Developer issue tracker The Developer-User-Analyst Triangle.
  • 18. User Developer issue tracker The Developer-User-Analyst Triangle.
  • 19. issue tracker User Developer version archive The Developer-User-Analyst Triangle.
  • 20. issue tracker User Developer Commits patch that allows subclassing. version archive The Developer-User-Analyst Triangle.
  • 21. issue tracker User Developer Commits patch that allows subclassing. version archiveThis is an IMPROVEMENT to our software. The Developer-User-Analyst Triangle.
  • 22. issue tracker User Developer Commits patch that allows subclassing. version archive Report closed with unchanged type BUG. This is an IMPROVEMENT to our software. The Developer-User-Analyst Triangle.
  • 24. User Developer Analyst We mark the changed entities as fixed. issue tracker version archive
  • 25. User Developer Analyst We mark the changed entities as fixed. Report increases bug count of entities. issue tracker version archive
  • 26. User Developer Analyst We mark the changed entities as fixed. Report increases bug count of entities.But that’s wrong! issue tracker version archive
  • 27. User Developer Analyst Report increases bug count of entities.But that’s wrong! issue tracker version archive This is just a REFACTORING and does not change functionality.
  • 32. communication platforms. Bug Trackers are Data meaning Interpretation Perspective Point-of-view Opinion
  • 33. Classified issue reports How many issue reports match the expectations of an analyst? Manually classified more than 7,000 bug reports on five open source projects. TABLE III CLASSIFICATION RULES A report is categorized as BUG (Fix Request) if. . . 1) it reports a NullpointerException (NPE). 2) the discussion concludes that code had to be changed semantica perform a corrective maintenance task. 3) it fixes runtime or memory issues cause by defects such as e loops. Example: Tomcat5 report 281473 is categorized as RFE but reports a bug that a “JasperException for jsp files that are symbolic links”. The underlying iss that tomcat used canonical instead of absolute paths. The applied fix touches o replacing one method invocation. According to Rule 2, we classified the applie change as a corrective maintenance task and thus the issue report as BUG. A report is categorized as RFE (Feature Request) if. . . 1) it requests to implement a new access/getter method. 2) it requests to add new functionality. 3) it requests to support new object types, specifications, or standar 4 rule set fits the needs of a software miner
  • 34. Classified issue reports How many issue reports match the expectations of an analyst? What’s the impact on bug count models? Manually classified more than 7,000 bug reports on five open source projects.
  • 35. Are bug reports bug reports? Manually classified more than 7,000 bug reports on five open source projects -TrackerBugzilla wrongly classified correctly classified 52% 48% HTTPClient 62% 38% Jackrabbit 54% 46% Lucene-Java 57% 43% Rhino 59% 41% Tomcat5 -Tracker
  • 36. Reclassification of BUG-Reports Misclassified Classified Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined BUG RFE DOC IMPR REFAC OTHER 63.5% 75.1% 65.4% 59.2% 61.3% 66.2% 6.6% 1.9% 4.8% 6.0% 3.1% 3.9% 36.5% 24.9% 34.6% 40.8% 38.7% 33.8% 8.7% 1.5% 4.8% 0.0% 10.3% 5.1% 13.0% 5.9% 7.9% 8.8% 12.0% 9.0% 1.7% 0.9% 4.3% 10.2% 0.5% 2.8% 6.4% 14.7% 12.7% 15.8% 12.9% 13.0%
  • 37. Reclassification of BUG-Reports Misclassified Classified Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined BUG RFE DOC IMPR REFAC OTHER 63.5% 75.1% 65.4% 59.2% 61.3% 66.2% 6.6% 1.9% 4.8% 6.0% 3.1% 3.9% 36.5% 24.9% 34.6% 40.8% 38.7% 33.8% 8.7% 1.5% 4.8% 0.0% 10.3% 5.1% 13.0% 5.9% 7.9% 8.8% 12.0% 9.0% 1.7% 0.9% 4.3% 10.2% 0.5% 2.8% 6.4% 14.7% 12.7% 15.8% 12.9% 13.0% Every 3rd bug should not be considered a bug!*
  • 38. Reclassification of BUG-Reports Misclassified Classified Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined BUG RFE DOC IMPR REFAC OTHER 63.5% 75.1% 65.4% 59.2% 61.3% 66.2% 6.6% 1.9% 4.8% 6.0% 3.1% 3.9% 36.5% 24.9% 34.6% 40.8% 38.7% 33.8% 8.7% 1.5% 4.8% 0.0% 10.3% 5.1% 13.0% 5.9% 7.9% 8.8% 12.0% 9.0% 1.7% 0.9% 4.3% 10.2% 0.5% 2.8% 6.4% 14.7% 12.7% 15.8% 12.9% 13.0% Every 3rd bug should not be considered a bug!* * if we want to reason about code quality.
  • 39. Classified issue reports How many issue reports match the expectations of an analyst? What’s the impact on bug count models? Manually classified more than 7,000 bug reports on five open source projects.
  • 40. Cutoff-difference caused by misclassified bugs HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 0 10 20 30 40 TOP 5% TOP 10% TOP 15% TOP 20%
  • 41. Cutoff-difference caused by misclassified bugs HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 0 10 20 30 40 TOP 5% TOP 10% TOP 15% TOP 20% ~37% of files have a different bug count.
  • 42. Cutoff-difference caused by misclassified bugs HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 0 10 20 30 40 TOP 5% TOP 10% TOP 15% TOP 20% ~39% of files considered buggy, never had a bug. ~37% of files have a different bug count.
  • 43. issue tracker version archive mappings Bug Prediction. Predict source data link recovery fix count prediction model User Developer Analyst Depends on the perspective! TABLE III CLASSIFICATION RULES A report is categorized as BUG (Fix Request) if... 1) it reports a NullpointerException (NPE). 2) the discussion concludes that code had to be changed semantically to perform a corrective maintenance task. 3) it fixes runtime or memory issues cause by defects such as endless loops. Example: Tomcat5 report 281473 is categorized as RFE but reports a bug that causes a “JasperException for jsp files that are symbolic links”. The underlying issue was that tomcat used canonical instead of absolute paths. The applied fix touches one line replacing one method invocation. According to Rule 2, we classified the applied code change as a corrective maintenance task and thus the issue report as BUG. A report is categorized as RFE (Feature Request) if... 1) it requests to implement a new access/getter method. 2) it requests to add new functionality. 3) it requests to support new object types, specifications, or standards. Example: Lucene-Java report LUCENE-20744 is categorized as BUG. But the applied patch and the discussion unveil that a new versioning mechanism had to be implemented. The first comment by Uwe Schindler makes it explicit: “Here the patch. It uses an interface containing the needed methods to easyliy [sic] switch between both impl. The old one was deprecated [...]”. This is reclassified as RFE by Rule 2. A report is categorized as IMPR (Improvement Request) if... 1) it discusses resource issues (time, memory) caused by non optimal algorithms or garbage collection strategies. 2) it discusses semantics-preserving changes (typos, formatting) to code, log messages, exception messages, or property fields. 3) it requests more or fewer log messages. 4) it requests changing the content of log messages. 5) it requests changing the type and/or the message of Exceptions to be thrown. 6) it requests changes supporting new input or output formats (e.g. for backward compatibility or user satisfaction). 7) it introduces concurrent versions of already existent functionalities. 8) it suggests upgrading or patching third party libraries to overcome issues caused by third party libraries. 9) it requests changes that correct/synchronize an already implemented feature according to specification/documentation. Example: Jackrabbit report JCR-28925 is filed as BUG under the title “Large fetch sizes have potentially deleterious effects on VM memory requirements when using Oracle”. The algorithm fetches data from a database with a large amount of columns and rows, which caused the Oracle driver to allocate a large buffer. The resolution was to develop a new algorithm consuming less memory. This is an IMPR according to Rule 1 since no new functionality was implemented and since the program did not contain any defect. A report is categorized as DOC (Documentation Request) if... 1) its discussion unveils that the report was filed due to missing, ambigu- ous, or outdated documentation. Example: Tomcat5 bug report 300486 fixes the problem“Setting compressableMimeTypes is ignored.” by “Docs updated in CVS to reflect correct spelling.” This is a DOC. A report is categorized as REFAC (Refactoring Request) if... 1) it requests to move code into other packages, classes, or methods. 2) it requests to rename variables, methods, classes, packages, or config- uration options. Example: Tomcat5 report 282867 is filed as BUG and contains a patch adding a new interface SSOValve. But in comment 4, Remy Maucherat refuses to apply the patch and the idea to introduce a new interface. Instead, he commits a patch that refactors class AuthenticatorBase to allow subclassing. This is a REFAC as per Rule 2. A report is categorized as OTHER if... 1) it reports violations of JAVA contracts without causing failures (e.g. “equals() but no hashCode()”). 2) complains about compatibility fixes (e.g. “should compile with GCJ”). 3) the task does not require changing source or documentation (like packaging, configuration, download, etc.) Example: Lucene-Java report LUCENE-18938 complains that “classes implement equals() but not hashCode()”. This violated JAVA contracts but does not cause failures. Lucene-Java report LUCENE-2899 requests “better support gcj compilation”. According to our rules this is considered to be an compatibility improvement classified as OTHER. NOISE RATES FOR A Proj HTT Jack Luc Rhin Tom All IV. In this section, w (with respect to iss databases of the fiv start analyzing the i positive rates and many issue reports these misclassified the impact and bia to code changes an how a simple mode impacted by miscla As overall noise The false positive r fied issue reports an rate is independent will discuss individ noise rate, the highe in approaches base RQ1 Do bug datab misclassificatio Table IV shows and for a combine all five projects. Th 37% and 47% and rate lies at 42.6%— wrongly typed. This approach based on Over all five pro issue The noise rates o variances are show the categories DOC of the analyzed bu categories. The box OTHER are based does not support th 3https://issues.apache. 4https://issues.apache. 5https://issues.apache. 6https://issues.apache. 7https://issues.apache. 8https://issues.apache. 9https://issues.apache. rule set Reclassification of BUG-Reports Misclassified Classified Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined BUG RFE DOC IMPR REFAC OTHER 63.5% 75.1% 65.4% 59.2% 61.3% 66.2% 6.6% 1.9% 4.8% 6.0% 3.1% 3.9% 36.5% 24.9% 34.6% 40.8% 38.7% 33.8% 8.7% 1.5% 4.8% 0.0% 10.3% 5.1% 13.0% 5.9% 7.9% 8.8% 12.0% 9.0% 1.7% 0.9% 4.3% 10.2% 0.5% 2.8% 6.4% 14.7% 12.7% 15.8% 12.9% 13.0% Every 3rd bug should not be considered a bug!* * if we want to reason about code quality. Cutoff-difference caused by misclassified bugs HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 0 10 20 30 40 TOP 5% TOP 10% TOP 15% TOP 20% ~37% of files with different bug count. ~39% of files considered buggy never had a bug.
  • 44. http://www.softevo.org/bugclassify issue tracker version archive mappings Bug Prediction. Predict source data link recovery fix count prediction model User Developer Analyst Depends on the perspective! TABLE III CLASSIFICATION RULES A report is categorized as BUG (Fix Request) if... 1) it reports a NullpointerException (NPE). 2) the discussion concludes that code had to be changed semantically to perform a corrective maintenance task. 3) it fixes runtime or memory issues cause by defects such as endless loops. Example: Tomcat5 report 281473 is categorized as RFE but reports a bug that causes a “JasperException for jsp files that are symbolic links”. The underlying issue was that tomcat used canonical instead of absolute paths. The applied fix touches one line replacing one method invocation. According to Rule 2, we classified the applied code change as a corrective maintenance task and thus the issue report as BUG. A report is categorized as RFE (Feature Request) if... 1) it requests to implement a new access/getter method. 2) it requests to add new functionality. 3) it requests to support new object types, specifications, or standards. Example: Lucene-Java report LUCENE-20744 is categorized as BUG. But the applied patch and the discussion unveil that a new versioning mechanism had to be implemented. The first comment by Uwe Schindler makes it explicit: “Here the patch. It uses an interface containing the needed methods to easyliy [sic] switch between both impl. The old one was deprecated [...]”. This is reclassified as RFE by Rule 2. A report is categorized as IMPR (Improvement Request) if... 1) it discusses resource issues (time, memory) caused by non optimal algorithms or garbage collection strategies. 2) it discusses semantics-preserving changes (typos, formatting) to code, log messages, exception messages, or property fields. 3) it requests more or fewer log messages. 4) it requests changing the content of log messages. 5) it requests changing the type and/or the message of Exceptions to be thrown. 6) it requests changes supporting new input or output formats (e.g. for backward compatibility or user satisfaction). 7) it introduces concurrent versions of already existent functionalities. 8) it suggests upgrading or patching third party libraries to overcome issues caused by third party libraries. 9) it requests changes that correct/synchronize an already implemented feature according to specification/documentation. Example: Jackrabbit report JCR-28925 is filed as BUG under the title “Large fetch sizes have potentially deleterious effects on VM memory requirements when using Oracle”. The algorithm fetches data from a database with a large amount of columns and rows, which caused the Oracle driver to allocate a large buffer. The resolution was to develop a new algorithm consuming less memory. This is an IMPR according to Rule 1 since no new functionality was implemented and since the program did not contain any defect. A report is categorized as DOC (Documentation Request) if... 1) its discussion unveils that the report was filed due to missing, ambigu- ous, or outdated documentation. Example: Tomcat5 bug report 300486 fixes the problem“Setting compressableMimeTypes is ignored.” by “Docs updated in CVS to reflect correct spelling.” This is a DOC. A report is categorized as REFAC (Refactoring Request) if... 1) it requests to move code into other packages, classes, or methods. 2) it requests to rename variables, methods, classes, packages, or config- uration options. Example: Tomcat5 report 282867 is filed as BUG and contains a patch adding a new interface SSOValve. But in comment 4, Remy Maucherat refuses to apply the patch and the idea to introduce a new interface. Instead, he commits a patch that refactors class AuthenticatorBase to allow subclassing. This is a REFAC as per Rule 2. A report is categorized as OTHER if... 1) it reports violations of JAVA contracts without causing failures (e.g. “equals() but no hashCode()”). 2) complains about compatibility fixes (e.g. “should compile with GCJ”). 3) the task does not require changing source or documentation (like packaging, configuration, download, etc.) Example: Lucene-Java report LUCENE-18938 complains that “classes implement equals() but not hashCode()”. This violated JAVA contracts but does not cause failures. Lucene-Java report LUCENE-2899 requests “better support gcj compilation”. According to our rules this is considered to be an compatibility improvement classified as OTHER. NOISE RATES FOR A Proj HTT Jack Luc Rhin Tom All IV. In this section, w (with respect to iss databases of the fiv start analyzing the i positive rates and many issue reports these misclassified the impact and bia to code changes an how a simple mode impacted by miscla As overall noise The false positive r fied issue reports an rate is independent will discuss individ noise rate, the highe in approaches base RQ1 Do bug datab misclassificatio Table IV shows and for a combine all five projects. Th 37% and 47% and rate lies at 42.6%— wrongly typed. This approach based on Over all five pro issue The noise rates o variances are show the categories DOC of the analyzed bu categories. The box OTHER are based does not support th 3https://issues.apache. 4https://issues.apache. 5https://issues.apache. 6https://issues.apache. 7https://issues.apache. 8https://issues.apache. 9https://issues.apache. rule set Reclassification of BUG-Reports Misclassified Classified Category HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 combined BUG RFE DOC IMPR REFAC OTHER 63.5% 75.1% 65.4% 59.2% 61.3% 66.2% 6.6% 1.9% 4.8% 6.0% 3.1% 3.9% 36.5% 24.9% 34.6% 40.8% 38.7% 33.8% 8.7% 1.5% 4.8% 0.0% 10.3% 5.1% 13.0% 5.9% 7.9% 8.8% 12.0% 9.0% 1.7% 0.9% 4.3% 10.2% 0.5% 2.8% 6.4% 14.7% 12.7% 15.8% 12.9% 13.0% Every 3rd bug should not be considered a bug!* * if we want to reason about code quality. Cutoff-difference caused by misclassified bugs HTTPClient Jackrabbit Lucene-Java Rhino Tomcat5 0 10 20 30 40 TOP 5% TOP 10% TOP 15% TOP 20% ~37% of files with different bug count. ~39% of files considered buggy never had a bug.