SlideShare a Scribd company logo
1 of 60
Download to read offline
Using Fuzzy Code Search to Link
Code Fragments in Discussions to
Source Code
Nicolas Bettenburg Stephen W. Thomas Ahmed E. Hassan
Queen’s University
Software Analysis and Intelligence Lab (SAIL)
Kingston, Ontario, Canada
2
“Given enough eyeballs,
all bugs are shallow.”
Eric S. Raymond - The Cathedral and the Bazaar
3
Which parts of the
source code did
developers
discuss?
Objective in this Study:
3
Which parts of the
source code did
developers
discuss?
Finding Associations of Discussions with Source Code Files
Objective in this Study:
Communication
Repository
4
Source Code
Archive
Communication
Repository
4
Source Code
Archive
Communication
Repository
4
Source Code
Archive
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Communication
Repository
4
Source Code
Archive
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Traceability
Links
5
5
5
org.eclipse.swt/Eclipse_SWT/win32/org/eclipse/swt/widgets/Button.java
Approaches in the Past
6
3
Change Log Analysis
Information Retrieval
Lightweight Textual Analysis
7
Change Log Analysis
LUCENE-2297: allow reader
pooling to be enabled (through
IndexWriterConfig) even if
you're not pulling NRT reader.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
SVN
7
Change Log Analysis
LUCENE-2297: allow reader
pooling to be enabled (through
IndexWriterConfig) even if
you're not pulling NRT reader.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
SVN
7
Change Log Analysis
LUCENE-2297: allow reader
pooling to be enabled (through
IndexWriterConfig) even if
you're not pulling NRT reader.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
SVN
Bug Report
#LUCENE-2297
7
Change Log Analysis
LUCENE-2297: allow reader
pooling to be enabled (through
IndexWriterConfig) even if
you're not pulling NRT reader.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
SVN
Bug Report
#LUCENE-2297
8
Map<Integer, BugReport> bugReports
= dbc.getReportsConcurrent(bugIDs,
Main.isCli_withDiscussions(),
Main.isCli_withAttachments(),
true); // Instantiate Output
Class // This time we will need to
use some XML Outputter for the
Stacktraces
Experiment_Structural_Logger logger
= new Experiment_Structural_Logger
(); DataExportUtility dexutil = new
DataExportUtility(); XMLOutputter
outputter = new XMLOutputter
(Format.getPrettyFormat()); Element
rootElement = new Element
("CVS"); // Process the Reports if
(Main.getCli_project
().equalsIgnoreCase("eclipse"))
{ for (int id : bugIDs) { }
BugReport currentReport =
bugReports.get(id); Element
reportElement = new Element
("Report"); Code
Description
Jared Burns 2002-11-01 14:56:40 EST
Build 20021031(, 30, and 29)
Linux-GTK
Very often (in recent builds), when I
perform an action that requires
establishing a connection to the
dev.eclipse.org CVS server, the
progress dialog appears but it stalls
before any progress is made. I have
to hit Cancel, wait 10+ seconds (I
just switch apps), and then try again
or it never
connects.
This happens to me most often when I
click the "Synchronize all CVS
projects..." button. The dialog
appears and says "Authenticating over
extssh", but the progress monitor
never budges.
Discussion
Information Retrieval
8
Map<Integer, BugReport> bugReports
= dbc.getReportsConcurrent(bugIDs,
Main.isCli_withDiscussions(),
Main.isCli_withAttachments(),
true); // Instantiate Output
Class // This time we will need to
use some XML Outputter for the
Stacktraces
Experiment_Structural_Logger logger
= new Experiment_Structural_Logger
(); DataExportUtility dexutil = new
DataExportUtility(); XMLOutputter
outputter = new XMLOutputter
(Format.getPrettyFormat()); Element
rootElement = new Element
("CVS"); // Process the Reports if
(Main.getCli_project
().equalsIgnoreCase("eclipse"))
{ for (int id : bugIDs) { }
BugReport currentReport =
bugReports.get(id); Element
reportElement = new Element
("Report"); Code
Description
Jared Burns 2002-11-01 14:56:40 EST
Build 20021031(, 30, and 29)
Linux-GTK
Very often (in recent builds), when I
perform an action that requires
establishing a connection to the
dev.eclipse.org CVS server, the
progress dialog appears but it stalls
before any progress is made. I have
to hit Cancel, wait 10+ seconds (I
just switch apps), and then try again
or it never
connects.
This happens to me most often when I
click the "Synchronize all CVS
projects..." button. The dialog
appears and says "Authenticating over
extssh", but the progress monitor
never budges.
Discussion
Information Retrieval
8
Map<Integer, BugReport> bugReports
= dbc.getReportsConcurrent(bugIDs,
Main.isCli_withDiscussions(),
Main.isCli_withAttachments(),
true); // Instantiate Output
Class // This time we will need to
use some XML Outputter for the
Stacktraces
Experiment_Structural_Logger logger
= new Experiment_Structural_Logger
(); DataExportUtility dexutil = new
DataExportUtility(); XMLOutputter
outputter = new XMLOutputter
(Format.getPrettyFormat()); Element
rootElement = new Element
("CVS"); // Process the Reports if
(Main.getCli_project
().equalsIgnoreCase("eclipse"))
{ for (int id : bugIDs) { }
BugReport currentReport =
bugReports.get(id); Element
reportElement = new Element
("Report"); Code
Description
Jared Burns 2002-11-01 14:56:40 EST
Build 20021031(, 30, and 29)
Linux-GTK
Very often (in recent builds), when I
perform an action that requires
establishing a connection to the
dev.eclipse.org CVS server, the
progress dialog appears but it stalls
before any progress is made. I have
to hit Cancel, wait 10+ seconds (I
just switch apps), and then try again
or it never
connects.
This happens to me most often when I
click the "Synchronize all CVS
projects..." button. The dialog
appears and says "Authenticating over
extssh", but the progress monitor
never budges.
Discussion
Information Retrieval
8
Map<Integer, BugReport> bugReports
= dbc.getReportsConcurrent(bugIDs,
Main.isCli_withDiscussions(),
Main.isCli_withAttachments(),
true); // Instantiate Output
Class // This time we will need to
use some XML Outputter for the
Stacktraces
Experiment_Structural_Logger logger
= new Experiment_Structural_Logger
(); DataExportUtility dexutil = new
DataExportUtility(); XMLOutputter
outputter = new XMLOutputter
(Format.getPrettyFormat()); Element
rootElement = new Element
("CVS"); // Process the Reports if
(Main.getCli_project
().equalsIgnoreCase("eclipse"))
{ for (int id : bugIDs) { }
BugReport currentReport =
bugReports.get(id); Element
reportElement = new Element
("Report"); Code
Description
Jared Burns 2002-11-01 14:56:40 EST
Build 20021031(, 30, and 29)
Linux-GTK
Very often (in recent builds), when I
perform an action that requires
establishing a connection to the
dev.eclipse.org CVS server, the
progress dialog appears but it stalls
before any progress is made. I have
to hit Cancel, wait 10+ seconds (I
just switch apps), and then try again
or it never
connects.
This happens to me most often when I
click the "Synchronize all CVS
projects..." button. The dialog
appears and says "Authenticating over
extssh", but the progress monitor
never budges.
Discussion
Information Retrieval
9
I20041130-0800
Wrong compiler error when interface overrides two methods with same signature
but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it
with "Unhandled exception type IOException".
public class Over {
void x() throws ZipException {
IandJ ij= new K();
ij.m(); //wrong compile error
}
void y() throws ZipException {
K k= new K();
k.m();
}
}
interface I { void m() throws IOException; }
interface J { void m() throws ZipException; }
interface IandJ extends I, J {} // swap I and J to make compile error disappear
class K implements IandJ { public void m() throws ZipException { } }
Lightweight Textual Analysis
9
I20041130-0800
Wrong compiler error when interface overrides two methods with same signature
but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it
with "Unhandled exception type IOException".
public class Over {
void x() throws ZipException {
IandJ ij= new K();
ij.m(); //wrong compile error
}
void y() throws ZipException {
K k= new K();
k.m();
}
}
interface I { void m() throws IOException; }
interface J { void m() throws ZipException; }
interface IandJ extends I, J {} // swap I and J to make compile error disappear
class K implements IandJ { public void m() throws ZipException { } }
Over.java
ZipExcept
ion.java
IOExcepti
on.java
I.java J.javaK.java
Lightweight Textual Analysis
10
10
Change Log AnalysisX
Only works for Bug ReportsGeneralizeability:
Associates complete discussion threadGranularity:
Link to all files changed in commitPrecision:
Ignores the actual discussions!Conceptual Mismatch:
10
Change Log AnalysisX
Only works for Bug ReportsGeneralizeability:
Associates complete discussion threadGranularity:
Link to all files changed in commitPrecision:
Ignores the actual discussions!Conceptual Mismatch:
Works for all kinds of documentsGeneralizeability:
Which granularity level to choose?Granularity:
Lots and lots of false positives!Precision:
Links unrelated documents!Conceptual Mismatch:
Information RetrievalX
10
Change Log AnalysisX
Only works for Bug ReportsGeneralizeability:
Associates complete discussion threadGranularity:
Link to all files changed in commitPrecision:
Ignores the actual discussions!Conceptual Mismatch:
Works for all kinds of documentsGeneralizeability:
Which granularity level to choose?Granularity:
Lots and lots of false positives!Precision:
Links unrelated documents!Conceptual Mismatch:
Information RetrievalX
Works for all kinds of documentsGeneralizeability:
Very fine-grainedGranularity:
Up to 95% precision [Bacchelli-ICSE10]Precision:
Links to every class mentionedConceptual Mismatch:
Lightweight Textual AnalysisX
11
In this Paper:
Fuzzy Code Search
I20041130-0800
Wrong compiler error when interface overrides two methods with same signature
but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it
with "Unhandled exception type IOException".
public class Over {
void x() throws ZipException {
IandJ ij= new K();
ij.m(); //wrong compile error
}
void y() throws ZipException {
K k= new K();
k.m();
}
}
interface I { void m() throws IOException; }
interface J { void m() throws ZipException; }
interface IandJ extends I, J {} // swap I and J to make compile error disappear
class K implements IandJ { public void m() throws ZipException { } }
Over.java
ZipExcept
ion.java
IOExcepti
on.javaI.java J.javaK.java
11
In this Paper:
Fuzzy Code Search
I20041130-0800
Wrong compiler error when interface overrides two methods with same signature
but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it
with "Unhandled exception type IOException".
public class Over {
void x() throws ZipException {
IandJ ij= new K();
ij.m(); //wrong compile error
}
void y() throws ZipException {
K k= new K();
k.m();
}
}
interface I { void m() throws IOException; }
interface J { void m() throws ZipException; }
interface IandJ extends I, J {} // swap I and J to make compile error disappear
class K implements IandJ { public void m() throws ZipException { } }
Over.java
ZipExcept
ion.java
IOExcepti
on.javaI.java J.javaK.java
11
In this Paper:
Fuzzy Code Search
I20041130-0800
Wrong compiler error when interface overrides two methods with same signature
but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it
with "Unhandled exception type IOException".
public class Over {
void x() throws ZipException {
IandJ ij= new K();
ij.m(); //wrong compile error
}
void y() throws ZipException {
K k= new K();
k.m();
}
}
interface I { void m() throws IOException; }
interface J { void m() throws ZipException; }
interface IandJ extends I, J {} // swap I and J to make compile error disappear
class K implements IandJ { public void m() throws ZipException { } }
X.java
Y.java
Over.java
ZipExcept
ion.java
IOExcepti
on.javaI.java J.javaK.java
12
Discussion
Fuzzy Code Search
Approach
12
Discussion
infoZilla tool
Fuzzy Code Search
Approach
12
Discussion
infoZilla tool
Code Fragments
Fuzzy Code Search
Approach
12
Discussion
infoZilla tool
Code Fragments
Clone DetectionPage 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Page 2 of 4
Untitled 12-03-15 2:55 PM
this.opt_withObsolete = opt_withObsolete;
}
/* (non-Javadoc)
* @see main.IExperiment#getDescription()
*/
public String getDescription() {
String description = "We want to run an experiment all those bug
reports.nt"
+ "We extract the complete stacktrace information to study fix
location and stacktrace interplay.nt";
return description;
}
/* (non-Javadoc)
* @see main.IExperiment#run()
*/
public boolean run() {
final boolean DEBUG = Main.isCli_withDebugMessages();
// Select an appropriate database name on the server depending on the
project demanded via command line options
String dbName = "";
if (Main.getCli_project().equalsIgnoreCase("eclipse"))
dbName = "eclipse-december-2007";
else {
System.out.println("We currently only support the Eclipse database
!");
System.exit(0);
}
// Create the Database Connection
DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(),
Main.getCli_dbUser(), Main.getCli_dbPass(), dbName);
dbc.initialize();
if (!dbc.connect()) {
System.out.println("Could not connect to database. Check host, port
, username and password.");
System.exit(1);
}
// Fetch a number of Bug Report unique IDs belonging to the following
query
String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs
WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC
LIMIT " + Main.getCli_amount();
int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery);
int lastID = bugIDs[bugIDs.length -1];
if (DEBUG)
System.out.println("* Attempting to fetch " + bugIDs.length + "
reports from " + Main.getCli_dbHost() + " starting with ID " +
Main.getCli_startID());
// Collect the bug reports from the database using up to 100 parallel
threads.
Fuzzy Code Search
Approach
13
Evaluation of our Approach
13
Evaluation of our Approach
1) Quantitative
Do developers talk about the things they
end up changing?
13
Evaluation of our Approach
1) Quantitative
Do developers talk about the things they
end up changing?
2) Qualitative
Which parts of the code do developers
talk about the most?
A B
14
Change-Log Analysis Fuzzy Code Search
Case Study: Eclipse 2.0 - 3.2
A B
14
Change-Log Analysis Fuzzy Code Search
Case Study: Eclipse 2.0 - 3.2
16,722 23,079
Discussions Files
A B
14
Change-Log Analysis Fuzzy Code Search
Case Study: Eclipse 2.0 - 3.2
16,722 23,079
Discussions Files
3,865
Discussions
13,581
Files
A B
Q: Is A a Superset of B ?
14
Change-Log Analysis Fuzzy Code Search
Case Study: Eclipse 2.0 - 3.2
16,722 23,079
Discussions Files
3,865
Discussions
13,581
Files
15
Bug Reports (211,843)
16
Bug Reports (211,843)
Bug Reports containing
Code (33,301)
17
Bug Reports (211,843)
Bug Reports containing
Code (33,301)
Clone Detection
Based Approach
(2,980)
A
18
Bug Reports (211,843)
Change Log Analysis
Based Approach
(16,722)
Bug Reports containing
Code (33,301)
Clone Detection
Based Approach
(2,980)
A B
19
Bug Reports (211,843)
Change Log Analysis
Based Approach
(16,722)
Bug Reports containing
Code (33,301)
507
Clone Detection
Based Approach
(2,980)
A B
19
Bug Reports (211,843)
Change Log Analysis
Based Approach
(16,722)
Bug Reports containing
Code (33,301)
507
Clone Detection
Based Approach
(2,980)
A B
Very small overlap: Links are
conceptually different!
20
20
20
In Eclipse: heavy re-use of code
snippets to create regression tests.
21
Fuzzy Code Search
21
Fuzzy Code Search
Finds conceptually different links:
21
Fuzzy Code Search
Finds conceptually different links:
What Developers really talk about
21
Fuzzy Code Search
Finds conceptually different links:
What Developers really talk about
Not what they end up changing
21
Fuzzy Code Search
Finds conceptually different links:
What Developers really talk about
Not what they end up changing
Not what their code references
22
22
22
22
22
22
Thanks!

More Related Content

What's hot

Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...Mumbai B.Sc.IT Study
 
Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]Devon Bernard
 
Advanced Java - Praticals
Advanced Java - PraticalsAdvanced Java - Praticals
Advanced Java - PraticalsFahad Shaikh
 
ShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlChema Alonso
 
201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programingwahyuseptiansyah
 
How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]Devon Bernard
 
Object Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassObject Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassSam Thomas
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitChris Oldwood
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeletonIram Ramrajkar
 
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMEREVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMERAndrey Karpov
 
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkSelenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkDavid Rajah Selvaraj
 
Owasp Indy Q2 2012 Advanced SQLi
Owasp Indy Q2 2012 Advanced SQLiOwasp Indy Q2 2012 Advanced SQLi
Owasp Indy Q2 2012 Advanced SQLiowaspindy
 
The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42Yevhen Bobrov
 
Rx for Android & iOS by Harin Trivedi
Rx for Android & iOS  by Harin TrivediRx for Android & iOS  by Harin Trivedi
Rx for Android & iOS by Harin Trivediharintrivedi
 

What's hot (19)

Code red SUM
Code red SUMCode red SUM
Code red SUM
 
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
 
Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]Lean React - Patterns for High Performance [ploneconf2017]
Lean React - Patterns for High Performance [ploneconf2017]
 
Ad java prac sol set
Ad java prac sol setAd java prac sol set
Ad java prac sol set
 
Advanced Java - Praticals
Advanced Java - PraticalsAdvanced Java - Praticals
Advanced Java - Praticals
 
ShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)Sql
 
201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing
 
How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]How to Design a Great API (using flask) [ploneconf2017]
How to Design a Great API (using flask) [ploneconf2017]
 
Object Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassObject Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypass
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing Toolkit
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeleton
 
Core Java - Quiz Questions - Bug Hunt
Core Java - Quiz Questions - Bug HuntCore Java - Quiz Questions - Bug Hunt
Core Java - Quiz Questions - Bug Hunt
 
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMEREVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
 
Spock
SpockSpock
Spock
 
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkSelenium Webdriver with data driven framework
Selenium Webdriver with data driven framework
 
Owasp Indy Q2 2012 Advanced SQLi
Owasp Indy Q2 2012 Advanced SQLiOwasp Indy Q2 2012 Advanced SQLi
Owasp Indy Q2 2012 Advanced SQLi
 
Excelsheet
ExcelsheetExcelsheet
Excelsheet
 
The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42
 
Rx for Android & iOS by Harin Trivedi
Rx for Android & iOS  by Harin TrivediRx for Android & iOS  by Harin Trivedi
Rx for Android & iOS by Harin Trivedi
 

Similar to Csmr2012 bettenburg presentation

Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
 
Spock: Test Well and Prosper
Spock: Test Well and ProsperSpock: Test Well and Prosper
Spock: Test Well and ProsperKen Kousen
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
Building node.js applications with Database Jones
Building node.js applications with Database JonesBuilding node.js applications with Database Jones
Building node.js applications with Database JonesJohn David Duncan
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bfinalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bChereCheek752
 
Writing code that writes code - Nguyen Luong
Writing code that writes code - Nguyen LuongWriting code that writes code - Nguyen Luong
Writing code that writes code - Nguyen LuongVu Huy
 
TechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
TechkTalk #12 Grokking: Writing code that writes code – Nguyen LuongTechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
TechkTalk #12 Grokking: Writing code that writes code – Nguyen LuongGrokking VN
 
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018Codemotion
 
Java networking programs socket based
Java networking programs socket basedJava networking programs socket based
Java networking programs socket basedMukesh Tekwani
 

Similar to Csmr2012 bettenburg presentation (20)

Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
 
Spock: Test Well and Prosper
Spock: Test Well and ProsperSpock: Test Well and Prosper
Spock: Test Well and Prosper
 
srgoc
srgocsrgoc
srgoc
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
Jdbc tutorial
Jdbc tutorialJdbc tutorial
Jdbc tutorial
 
Building node.js applications with Database Jones
Building node.js applications with Database JonesBuilding node.js applications with Database Jones
Building node.js applications with Database Jones
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Sequelize
SequelizeSequelize
Sequelize
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 
Java
JavaJava
Java
 
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bfinalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
 
Junit and testNG
Junit and testNGJunit and testNG
Junit and testNG
 
JDBC in Servlets
JDBC in ServletsJDBC in Servlets
JDBC in Servlets
 
3 database-jdbc(1)
3 database-jdbc(1)3 database-jdbc(1)
3 database-jdbc(1)
 
Writing code that writes code - Nguyen Luong
Writing code that writes code - Nguyen LuongWriting code that writes code - Nguyen Luong
Writing code that writes code - Nguyen Luong
 
TechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
TechkTalk #12 Grokking: Writing code that writes code – Nguyen LuongTechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
TechkTalk #12 Grokking: Writing code that writes code – Nguyen Luong
 
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
 
Java networking programs socket based
Java networking programs socket basedJava networking programs socket based
Java networking programs socket based
 
spring-tutorial
spring-tutorialspring-tutorial
spring-tutorial
 

More from SAIL_QU

Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...SAIL_QU
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...SAIL_QU
 
Improving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load testsImproving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load testsSAIL_QU
 
Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...SAIL_QU
 
Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...SAIL_QU
 
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...SAIL_QU
 
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...SAIL_QU
 
Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...SAIL_QU
 
Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?SAIL_QU
 
Towards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log ChangesTowards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log ChangesSAIL_QU
 
The Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution AnalysesThe Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution AnalysesSAIL_QU
 
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...SAIL_QU
 
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...SAIL_QU
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...SAIL_QU
 
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...SAIL_QU
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...SAIL_QU
 
What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?SAIL_QU
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...SAIL_QU
 
Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...SAIL_QU
 
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with ProfessionalsMeasuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with ProfessionalsSAIL_QU
 

More from SAIL_QU (20)

Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
 
Improving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load testsImproving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load tests
 
Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...
 
Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...
 
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
 
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
 
Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...
 
Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?
 
Towards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log ChangesTowards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log Changes
 
The Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution AnalysesThe Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution Analyses
 
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
 
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
 
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
 
What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
 
Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...
 
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with ProfessionalsMeasuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
 

Csmr2012 bettenburg presentation

  • 1. Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code Nicolas Bettenburg Stephen W. Thomas Ahmed E. Hassan Queen’s University Software Analysis and Intelligence Lab (SAIL) Kingston, Ontario, Canada
  • 2. 2 “Given enough eyeballs, all bugs are shallow.” Eric S. Raymond - The Cathedral and the Bazaar
  • 3. 3 Which parts of the source code did developers discuss? Objective in this Study:
  • 4. 3 Which parts of the source code did developers discuss? Finding Associations of Discussions with Source Code Files Objective in this Study:
  • 7. Communication Repository 4 Source Code Archive Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads.
  • 8. Communication Repository 4 Source Code Archive Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Traceability Links
  • 9. 5
  • 10. 5
  • 12. Approaches in the Past 6 3 Change Log Analysis Information Retrieval Lightweight Textual Analysis
  • 13. 7 Change Log Analysis LUCENE-2297: allow reader pooling to be enabled (through IndexWriterConfig) even if you're not pulling NRT reader. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. SVN
  • 14. 7 Change Log Analysis LUCENE-2297: allow reader pooling to be enabled (through IndexWriterConfig) even if you're not pulling NRT reader. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. SVN
  • 15. 7 Change Log Analysis LUCENE-2297: allow reader pooling to be enabled (through IndexWriterConfig) even if you're not pulling NRT reader. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. SVN Bug Report #LUCENE-2297
  • 16. 7 Change Log Analysis LUCENE-2297: allow reader pooling to be enabled (through IndexWriterConfig) even if you're not pulling NRT reader. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. SVN Bug Report #LUCENE-2297
  • 17. 8 Map<Integer, BugReport> bugReports = dbc.getReportsConcurrent(bugIDs, Main.isCli_withDiscussions(), Main.isCli_withAttachments(), true); // Instantiate Output Class // This time we will need to use some XML Outputter for the Stacktraces Experiment_Structural_Logger logger = new Experiment_Structural_Logger (); DataExportUtility dexutil = new DataExportUtility(); XMLOutputter outputter = new XMLOutputter (Format.getPrettyFormat()); Element rootElement = new Element ("CVS"); // Process the Reports if (Main.getCli_project ().equalsIgnoreCase("eclipse")) { for (int id : bugIDs) { } BugReport currentReport = bugReports.get(id); Element reportElement = new Element ("Report"); Code Description Jared Burns 2002-11-01 14:56:40 EST Build 20021031(, 30, and 29) Linux-GTK Very often (in recent builds), when I perform an action that requires establishing a connection to the dev.eclipse.org CVS server, the progress dialog appears but it stalls before any progress is made. I have to hit Cancel, wait 10+ seconds (I just switch apps), and then try again or it never connects. This happens to me most often when I click the "Synchronize all CVS projects..." button. The dialog appears and says "Authenticating over extssh", but the progress monitor never budges. Discussion Information Retrieval
  • 18. 8 Map<Integer, BugReport> bugReports = dbc.getReportsConcurrent(bugIDs, Main.isCli_withDiscussions(), Main.isCli_withAttachments(), true); // Instantiate Output Class // This time we will need to use some XML Outputter for the Stacktraces Experiment_Structural_Logger logger = new Experiment_Structural_Logger (); DataExportUtility dexutil = new DataExportUtility(); XMLOutputter outputter = new XMLOutputter (Format.getPrettyFormat()); Element rootElement = new Element ("CVS"); // Process the Reports if (Main.getCli_project ().equalsIgnoreCase("eclipse")) { for (int id : bugIDs) { } BugReport currentReport = bugReports.get(id); Element reportElement = new Element ("Report"); Code Description Jared Burns 2002-11-01 14:56:40 EST Build 20021031(, 30, and 29) Linux-GTK Very often (in recent builds), when I perform an action that requires establishing a connection to the dev.eclipse.org CVS server, the progress dialog appears but it stalls before any progress is made. I have to hit Cancel, wait 10+ seconds (I just switch apps), and then try again or it never connects. This happens to me most often when I click the "Synchronize all CVS projects..." button. The dialog appears and says "Authenticating over extssh", but the progress monitor never budges. Discussion Information Retrieval
  • 19. 8 Map<Integer, BugReport> bugReports = dbc.getReportsConcurrent(bugIDs, Main.isCli_withDiscussions(), Main.isCli_withAttachments(), true); // Instantiate Output Class // This time we will need to use some XML Outputter for the Stacktraces Experiment_Structural_Logger logger = new Experiment_Structural_Logger (); DataExportUtility dexutil = new DataExportUtility(); XMLOutputter outputter = new XMLOutputter (Format.getPrettyFormat()); Element rootElement = new Element ("CVS"); // Process the Reports if (Main.getCli_project ().equalsIgnoreCase("eclipse")) { for (int id : bugIDs) { } BugReport currentReport = bugReports.get(id); Element reportElement = new Element ("Report"); Code Description Jared Burns 2002-11-01 14:56:40 EST Build 20021031(, 30, and 29) Linux-GTK Very often (in recent builds), when I perform an action that requires establishing a connection to the dev.eclipse.org CVS server, the progress dialog appears but it stalls before any progress is made. I have to hit Cancel, wait 10+ seconds (I just switch apps), and then try again or it never connects. This happens to me most often when I click the "Synchronize all CVS projects..." button. The dialog appears and says "Authenticating over extssh", but the progress monitor never budges. Discussion Information Retrieval
  • 20. 8 Map<Integer, BugReport> bugReports = dbc.getReportsConcurrent(bugIDs, Main.isCli_withDiscussions(), Main.isCli_withAttachments(), true); // Instantiate Output Class // This time we will need to use some XML Outputter for the Stacktraces Experiment_Structural_Logger logger = new Experiment_Structural_Logger (); DataExportUtility dexutil = new DataExportUtility(); XMLOutputter outputter = new XMLOutputter (Format.getPrettyFormat()); Element rootElement = new Element ("CVS"); // Process the Reports if (Main.getCli_project ().equalsIgnoreCase("eclipse")) { for (int id : bugIDs) { } BugReport currentReport = bugReports.get(id); Element reportElement = new Element ("Report"); Code Description Jared Burns 2002-11-01 14:56:40 EST Build 20021031(, 30, and 29) Linux-GTK Very often (in recent builds), when I perform an action that requires establishing a connection to the dev.eclipse.org CVS server, the progress dialog appears but it stalls before any progress is made. I have to hit Cancel, wait 10+ seconds (I just switch apps), and then try again or it never connects. This happens to me most often when I click the "Synchronize all CVS projects..." button. The dialog appears and says "Authenticating over extssh", but the progress monitor never budges. Discussion Information Retrieval
  • 21. 9 I20041130-0800 Wrong compiler error when interface overrides two methods with same signature but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it with "Unhandled exception type IOException". public class Over { void x() throws ZipException { IandJ ij= new K(); ij.m(); //wrong compile error } void y() throws ZipException { K k= new K(); k.m(); } } interface I { void m() throws IOException; } interface J { void m() throws ZipException; } interface IandJ extends I, J {} // swap I and J to make compile error disappear class K implements IandJ { public void m() throws ZipException { } } Lightweight Textual Analysis
  • 22. 9 I20041130-0800 Wrong compiler error when interface overrides two methods with same signature but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it with "Unhandled exception type IOException". public class Over { void x() throws ZipException { IandJ ij= new K(); ij.m(); //wrong compile error } void y() throws ZipException { K k= new K(); k.m(); } } interface I { void m() throws IOException; } interface J { void m() throws ZipException; } interface IandJ extends I, J {} // swap I and J to make compile error disappear class K implements IandJ { public void m() throws ZipException { } } Over.java ZipExcept ion.java IOExcepti on.java I.java J.javaK.java Lightweight Textual Analysis
  • 23. 10
  • 24. 10 Change Log AnalysisX Only works for Bug ReportsGeneralizeability: Associates complete discussion threadGranularity: Link to all files changed in commitPrecision: Ignores the actual discussions!Conceptual Mismatch:
  • 25. 10 Change Log AnalysisX Only works for Bug ReportsGeneralizeability: Associates complete discussion threadGranularity: Link to all files changed in commitPrecision: Ignores the actual discussions!Conceptual Mismatch: Works for all kinds of documentsGeneralizeability: Which granularity level to choose?Granularity: Lots and lots of false positives!Precision: Links unrelated documents!Conceptual Mismatch: Information RetrievalX
  • 26. 10 Change Log AnalysisX Only works for Bug ReportsGeneralizeability: Associates complete discussion threadGranularity: Link to all files changed in commitPrecision: Ignores the actual discussions!Conceptual Mismatch: Works for all kinds of documentsGeneralizeability: Which granularity level to choose?Granularity: Lots and lots of false positives!Precision: Links unrelated documents!Conceptual Mismatch: Information RetrievalX Works for all kinds of documentsGeneralizeability: Very fine-grainedGranularity: Up to 95% precision [Bacchelli-ICSE10]Precision: Links to every class mentionedConceptual Mismatch: Lightweight Textual AnalysisX
  • 27. 11 In this Paper: Fuzzy Code Search I20041130-0800 Wrong compiler error when interface overrides two methods with same signature but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it with "Unhandled exception type IOException". public class Over { void x() throws ZipException { IandJ ij= new K(); ij.m(); //wrong compile error } void y() throws ZipException { K k= new K(); k.m(); } } interface I { void m() throws IOException; } interface J { void m() throws ZipException; } interface IandJ extends I, J {} // swap I and J to make compile error disappear class K implements IandJ { public void m() throws ZipException { } } Over.java ZipExcept ion.java IOExcepti on.javaI.java J.javaK.java
  • 28. 11 In this Paper: Fuzzy Code Search I20041130-0800 Wrong compiler error when interface overrides two methods with same signature but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it with "Unhandled exception type IOException". public class Over { void x() throws ZipException { IandJ ij= new K(); ij.m(); //wrong compile error } void y() throws ZipException { K k= new K(); k.m(); } } interface I { void m() throws IOException; } interface J { void m() throws ZipException; } interface IandJ extends I, J {} // swap I and J to make compile error disappear class K implements IandJ { public void m() throws ZipException { } } Over.java ZipExcept ion.java IOExcepti on.javaI.java J.javaK.java
  • 29. 11 In this Paper: Fuzzy Code Search I20041130-0800 Wrong compiler error when interface overrides two methods with same signature but different thrown exceptions: The call to ij.m() is OK, but eclipse flags it with "Unhandled exception type IOException". public class Over { void x() throws ZipException { IandJ ij= new K(); ij.m(); //wrong compile error } void y() throws ZipException { K k= new K(); k.m(); } } interface I { void m() throws IOException; } interface J { void m() throws ZipException; } interface IandJ extends I, J {} // swap I and J to make compile error disappear class K implements IandJ { public void m() throws ZipException { } } X.java Y.java Over.java ZipExcept ion.java IOExcepti on.javaI.java J.javaK.java
  • 33. 12 Discussion infoZilla tool Code Fragments Clone DetectionPage 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Page 2 of 4 Untitled 12-03-15 2:55 PM this.opt_withObsolete = opt_withObsolete; } /* (non-Javadoc) * @see main.IExperiment#getDescription() */ public String getDescription() { String description = "We want to run an experiment all those bug reports.nt" + "We extract the complete stacktrace information to study fix location and stacktrace interplay.nt"; return description; } /* (non-Javadoc) * @see main.IExperiment#run() */ public boolean run() { final boolean DEBUG = Main.isCli_withDebugMessages(); // Select an appropriate database name on the server depending on the project demanded via command line options String dbName = ""; if (Main.getCli_project().equalsIgnoreCase("eclipse")) dbName = "eclipse-december-2007"; else { System.out.println("We currently only support the Eclipse database !"); System.exit(0); } // Create the Database Connection DatabaseConnector dbc = new DatabaseConnector(Main.getCli_dbHost(), Main.getCli_dbUser(), Main.getCli_dbPass(), dbName); dbc.initialize(); if (!dbc.connect()) { System.out.println("Could not connect to database. Check host, port , username and password."); System.exit(1); } // Fetch a number of Bug Report unique IDs belonging to the following query String setSelectionQuery = "SELECT DISTINCT bug_id FROM bugzilla_bugs WHERE bug_id > " + Main.getCli_startID() + " ORDER BY bug_id ASC LIMIT " + Main.getCli_amount(); int[] bugIDs = dbc.getIdSetByQuery(setSelectionQuery); int lastID = bugIDs[bugIDs.length -1]; if (DEBUG) System.out.println("* Attempting to fetch " + bugIDs.length + " reports from " + Main.getCli_dbHost() + " starting with ID " + Main.getCli_startID()); // Collect the bug reports from the database using up to 100 parallel threads. Fuzzy Code Search Approach
  • 35. 13 Evaluation of our Approach 1) Quantitative Do developers talk about the things they end up changing?
  • 36. 13 Evaluation of our Approach 1) Quantitative Do developers talk about the things they end up changing? 2) Qualitative Which parts of the code do developers talk about the most?
  • 37. A B 14 Change-Log Analysis Fuzzy Code Search Case Study: Eclipse 2.0 - 3.2
  • 38. A B 14 Change-Log Analysis Fuzzy Code Search Case Study: Eclipse 2.0 - 3.2 16,722 23,079 Discussions Files
  • 39. A B 14 Change-Log Analysis Fuzzy Code Search Case Study: Eclipse 2.0 - 3.2 16,722 23,079 Discussions Files 3,865 Discussions 13,581 Files
  • 40. A B Q: Is A a Superset of B ? 14 Change-Log Analysis Fuzzy Code Search Case Study: Eclipse 2.0 - 3.2 16,722 23,079 Discussions Files 3,865 Discussions 13,581 Files
  • 42. 16 Bug Reports (211,843) Bug Reports containing Code (33,301)
  • 43. 17 Bug Reports (211,843) Bug Reports containing Code (33,301) Clone Detection Based Approach (2,980) A
  • 44. 18 Bug Reports (211,843) Change Log Analysis Based Approach (16,722) Bug Reports containing Code (33,301) Clone Detection Based Approach (2,980) A B
  • 45. 19 Bug Reports (211,843) Change Log Analysis Based Approach (16,722) Bug Reports containing Code (33,301) 507 Clone Detection Based Approach (2,980) A B
  • 46. 19 Bug Reports (211,843) Change Log Analysis Based Approach (16,722) Bug Reports containing Code (33,301) 507 Clone Detection Based Approach (2,980) A B Very small overlap: Links are conceptually different!
  • 47. 20
  • 48. 20
  • 49. 20 In Eclipse: heavy re-use of code snippets to create regression tests.
  • 51. 21 Fuzzy Code Search Finds conceptually different links:
  • 52. 21 Fuzzy Code Search Finds conceptually different links: What Developers really talk about
  • 53. 21 Fuzzy Code Search Finds conceptually different links: What Developers really talk about Not what they end up changing
  • 54. 21 Fuzzy Code Search Finds conceptually different links: What Developers really talk about Not what they end up changing Not what their code references
  • 55. 22
  • 56. 22
  • 57. 22
  • 58. 22
  • 59. 22