The document discusses associating discussions from communication repositories with source code files. It describes past approaches like change log analysis, information retrieval, and lightweight textual analysis. The objective of the study is to find these associations between discussions and source code using fuzzy code search to link code fragments in discussions to source code.
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
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
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
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?
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
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!
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