SlideShare a Scribd company logo
1 of 52
Download to read offline
Failure-Preventing
Recommendations


               Adrian
             Schröter
The Problem
Why is it a Problem?

       The US economy lost in 2002
         60 billion dollar
        due to software defects




             http://www.nist.gov/public_affairs/releases/n02-10.htm
What has been
done, so far ...
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


import java.io.InputStream;

import java.util.HashMap;


import ca.uvic.segal.jazz.extraction.datastructures.Instances;


import com.ibm.team.filesystem.common.IFileItem;
import com.ibm.team.filesystem.common.IFileItemHandle;

import com.ibm.team.repository.common.IContent;
import com.ibm.team.repository.common.TeamRepositoryException;

import com.ibm.team.scm.common.IChange;
import com.ibm.team.scm.common.IFolder;

import com.ibm.team.scm.common.IFolderHandle;
import com.ibm.team.scm.common.IVersionableHandle;


public class SimpleChange {

	         private String kind = null;
	         private String changeSetId = null;

	
	         //private InputStream beforeFile = null;

	         private IFileItemHandle beforeFile = null;
	         private String beforeName = null;

	         private String beforeFolder = null;
	

	         //private InputStream afterFile = null;
	         private IFileItemHandle afterFile = null;

	         private String afterName = null;
	         private String afterFolder = null;

	
	         //private String filename = null;

	         //private String folder = null;
	

	         private boolean isFile = true;
	

	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
	

	         private Instances instances = null;
	

	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
	         	                           this.instances = instances;

	         	
	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
	         	

	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

change.beforeState(), instances);
	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

change.beforeState(), instances);
	         	                           	

	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
change.afterState(), instances);

	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
change.afterState(), instances);

	         	                           	
	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

change.item(), instances);
	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

instances);
	         	                           	

	         	                           	                                     this.isFile = true;
	         	                           }

	         	
	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
change.beforeState(), instances);

	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
change.afterState(), instances);

	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
instances);

	         	                           	                                     this.isFile = false;
	         	                           }

	         	
	         	                           this.changeSetId = changeSetId;

	         	                           this.kind = this.kindMap.get(change.kind());
	         }

	
	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
	         	                           	                                     IFileItem fileItem = (IFileItem)

instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
	         	

	         	                           	                                     return fileItem.getName();
	         	                           }

	         	
	         	                           return null;

	         }
	

	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
	         	                           if (_folderHandle != null) {

	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
	         	                           	                                     String folderName = "";

	         	                           	
	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

	         	                           	                                      	                                    IFolder folder = (IFolder)
instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

	         	                           	                                     	                                     folderName = folder.getName() +
"/" + folderName;

	         	                           	                                     	                                     folderHandle =
folder.getParent();

	         	                           	                                     }
	         	                           	

	         	                           	                                     return folderName.equals("") ? null : folderName;
	         	                           }

	         	                           return null;




                                               A.java
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                       import java.io.InputStream;

                                                       import java.util.HashMap;


                                                       import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                       import com.ibm.team.filesystem.common.IFileItem;
                                                       import com.ibm.team.filesystem.common.IFileItemHandle;

                                                       import com.ibm.team.repository.common.IContent;
                                                       import com.ibm.team.repository.common.TeamRepositoryException;

                                                       import com.ibm.team.scm.common.IChange;
                                                       import com.ibm.team.scm.common.IFolder;

                                                       import com.ibm.team.scm.common.IFolderHandle;
                                                       import com.ibm.team.scm.common.IVersionableHandle;


                                                       public class SimpleChange {

                                                       	         private String kind = null;
                                                       	         private String changeSetId = null;

                                                       	
                                                       	         //private InputStream beforeFile = null;

                                                       	         private IFileItemHandle beforeFile = null;
                                                       	         private String beforeName = null;

                                                       	         private String beforeFolder = null;
                                                       	

                                                       	         //private InputStream afterFile = null;
                                                       	         private IFileItemHandle afterFile = null;

                                                       	         private String afterName = null;
                                                       	         private String afterFolder = null;

                                                       	
                                                       	         //private String filename = null;

                                                       	         //private String folder = null;




                              size
                                                       	

                                                       	         private boolean isFile = true;
                                                       	

                                                       	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                       	

                                                       	         private Instances instances = null;
                                                       	

                                                       	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                       	         	                           this.instances = instances;

                                                       	         	
                                                       	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                       	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                       	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                       	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                       	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                       	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                       	         	

                                                       	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                       	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                       	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                       	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                       change.beforeState(), instances);
                                                       	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                       change.beforeState(), instances);
                                                       	         	                           	

                                                       	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                       	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                       	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	
                                                       	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                       change.item(), instances);
                                                       	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                       instances);
                                                       	         	                           	

                                                       	         	                           	                                     this.isFile = true;
                                                       	         	                           }

                                                       	         	
                                                       	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                       	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                       change.beforeState(), instances);

                                                       	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                       instances);

                                                       	         	                           	                                     this.isFile = false;
                                                       	         	                           }

                                                       	         	
                                                       	         	                           this.changeSetId = changeSetId;

                                                       	         	                           this.kind = this.kindMap.get(change.kind());
                                                       	         }

                                                       	
                                                       	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                       	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                       	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                       instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                       	         	

                                                       	         	                           	                                     return fileItem.getName();
                                                       	         	                           }

                                                       	         	
                                                       	         	                           return null;

                                                       	         }
                                                       	

                                                       	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                       	         	                           if (_folderHandle != null) {

                                                       	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                       	         	                           	                                     String folderName = "";

                                                       	         	                           	
                                                       	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                       	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                       instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                       	         	                           	                                     	                                     folderName = folder.getName() +
                                                       "/" + folderName;

                                                       	         	                           	                                     	                                     folderHandle =
                                                       folder.getParent();

                                                       	         	                           	                                     }
                                                       	         	                           	

                                                       	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                       	         	                           }

                                                       	         	                           return null;




                                                                                                      A.java




T. L. Graves, A. F. Karr, J. S. Marron, and H. P. Siy. Predicting fault incidence using software change history. IEEE Transactions on
Software Engineering, 26(7):653–661, 2000.
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                       import java.io.InputStream;

                                                       import java.util.HashMap;


                                                       import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                       import com.ibm.team.filesystem.common.IFileItem;
                                                       import com.ibm.team.filesystem.common.IFileItemHandle;

                                                       import com.ibm.team.repository.common.IContent;
                                                       import com.ibm.team.repository.common.TeamRepositoryException;

                                                       import com.ibm.team.scm.common.IChange;
                                                       import com.ibm.team.scm.common.IFolder;

                                                       import com.ibm.team.scm.common.IFolderHandle;
                                                       import com.ibm.team.scm.common.IVersionableHandle;


                                                       public class SimpleChange {

                                                       	         private String kind = null;
                                                       	         private String changeSetId = null;

                                                       	
                                                       	         //private InputStream beforeFile = null;

                                                       	         private IFileItemHandle beforeFile = null;
                                                       	         private String beforeName = null;

                                                       	         private String beforeFolder = null;
                                                       	

                                                       	         //private InputStream afterFile = null;
                                                       	         private IFileItemHandle afterFile = null;

                                                       	         private String afterName = null;
                                                       	         private String afterFolder = null;

                                                       	
                                                       	         //private String filename = null;

                                                       	         //private String folder = null;




                              size
                                                       	

                                                       	         private boolean isFile = true;
                                                       	

                                                       	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                       	

                                                       	         private Instances instances = null;
                                                       	

                                                       	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                       	         	                           this.instances = instances;

                                                       	         	
                                                       	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                       	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                       	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                       	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                       	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                       	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                       	         	

                                                       	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                       	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                       	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                       	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                       change.beforeState(), instances);
                                                       	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                       change.beforeState(), instances);
                                                       	         	                           	

                                                       	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                       	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                       	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	
                                                       	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                       change.item(), instances);
                                                       	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                       instances);
                                                       	         	                           	

                                                       	         	                           	                                     this.isFile = true;
                                                       	         	                           }

                                                       	         	
                                                       	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                       	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                       change.beforeState(), instances);




                      complexity
                                                       	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                       change.afterState(), instances);

                                                       	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                       instances);

                                                       	         	                           	                                     this.isFile = false;
                                                       	         	                           }

                                                       	         	
                                                       	         	                           this.changeSetId = changeSetId;

                                                       	         	                           this.kind = this.kindMap.get(change.kind());
                                                       	         }

                                                       	
                                                       	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                       	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                       	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                       instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                       	         	

                                                       	         	                           	                                     return fileItem.getName();
                                                       	         	                           }

                                                       	         	
                                                       	         	                           return null;

                                                       	         }
                                                       	

                                                       	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                       	         	                           if (_folderHandle != null) {

                                                       	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                       	         	                           	                                     String folderName = "";

                                                       	         	                           	
                                                       	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                       	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                       instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                       	         	                           	                                     	                                     folderName = folder.getName() +
                                                       "/" + folderName;

                                                       	         	                           	                                     	                                     folderHandle =
                                                       folder.getParent();

                                                       	         	                           	                                     }
                                                       	         	                           	

                                                       	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                       	         	                           }

                                                       	         	                           return null;




                                                                                                      A.java




T. L. Graves, A. F. Karr, J. S. Marron, and H. P. Siy. Predicting fault incidence using software change history. IEEE Transactions on
Software Engineering, 26(7):653–661, 2000.
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                    import java.io.InputStream;

                                                    import java.util.HashMap;


                                                    import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                    import com.ibm.team.filesystem.common.IFileItem;
                                                    import com.ibm.team.filesystem.common.IFileItemHandle;

                                                    import com.ibm.team.repository.common.IContent;
                                                    import com.ibm.team.repository.common.TeamRepositoryException;

                                                    import com.ibm.team.scm.common.IChange;
                                                    import com.ibm.team.scm.common.IFolder;

                                                    import com.ibm.team.scm.common.IFolderHandle;
                                                    import com.ibm.team.scm.common.IVersionableHandle;


                                                    public class SimpleChange {

                                                    	         private String kind = null;
                                                    	         private String changeSetId = null;

                                                    	
                                                    	         //private InputStream beforeFile = null;

                                                    	         private IFileItemHandle beforeFile = null;
                                                    	         private String beforeName = null;

                                                    	         private String beforeFolder = null;
                                                    	

                                                    	         //private InputStream afterFile = null;
                                                    	         private IFileItemHandle afterFile = null;

                                                    	         private String afterName = null;
                                                    	         private String afterFolder = null;

                                                    	
                                                    	         //private String filename = null;

                                                    	         //private String folder = null;




                             size                                                                                                                                                                       #developers
                                                    	

                                                    	         private boolean isFile = true;
                                                    	

                                                    	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                    	

                                                    	         private Instances instances = null;
                                                    	

                                                    	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                    	         	                           this.instances = instances;

                                                    	         	
                                                    	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                    	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                    	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                    	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                    	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                    	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                    	         	

                                                    	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                    	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                    	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                    	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                    change.beforeState(), instances);
                                                    	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                    change.beforeState(), instances);
                                                    	         	                           	

                                                    	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                    	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                    	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	
                                                    	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                    change.item(), instances);
                                                    	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                    instances);
                                                    	         	                           	

                                                    	         	                           	                                     this.isFile = true;
                                                    	         	                           }

                                                    	         	
                                                    	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                    	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                    change.beforeState(), instances);




                    complexity
                                                    	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                    instances);

                                                    	         	                           	                                     this.isFile = false;
                                                    	         	                           }

                                                    	         	
                                                    	         	                           this.changeSetId = changeSetId;

                                                    	         	                           this.kind = this.kindMap.get(change.kind());
                                                    	         }

                                                    	
                                                    	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                    	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                    	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                    instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                    	         	

                                                    	         	                           	                                     return fileItem.getName();
                                                    	         	                           }

                                                    	         	
                                                    	         	                           return null;

                                                    	         }
                                                    	

                                                    	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                    	         	                           if (_folderHandle != null) {

                                                    	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                    	         	                           	                                     String folderName = "";

                                                    	         	                           	
                                                    	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                    	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                    instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                    	         	                           	                                     	                                     folderName = folder.getName() +
                                                    "/" + folderName;

                                                    	         	                           	                                     	                                     folderHandle =
                                                    folder.getParent();

                                                    	         	                           	                                     }
                                                    	         	                           	

                                                    	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                    	         	                           }

                                                    	         	                           return null;




                                                                                                   A.java




E. Weyuker, T. Ostrand and R. Bell. Do too many cooks spoil the broth? Using the number of developers to enhance defect
prediction models. In Journal Empirical Software Engineering, pages 539–559, 2008.
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                    import java.io.InputStream;

                                                    import java.util.HashMap;


                                                    import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                    import com.ibm.team.filesystem.common.IFileItem;
                                                    import com.ibm.team.filesystem.common.IFileItemHandle;

                                                    import com.ibm.team.repository.common.IContent;
                                                    import com.ibm.team.repository.common.TeamRepositoryException;

                                                    import com.ibm.team.scm.common.IChange;
                                                    import com.ibm.team.scm.common.IFolder;

                                                    import com.ibm.team.scm.common.IFolderHandle;
                                                    import com.ibm.team.scm.common.IVersionableHandle;


                                                    public class SimpleChange {

                                                    	         private String kind = null;
                                                    	         private String changeSetId = null;

                                                    	
                                                    	         //private InputStream beforeFile = null;

                                                    	         private IFileItemHandle beforeFile = null;
                                                    	         private String beforeName = null;

                                                    	         private String beforeFolder = null;
                                                    	

                                                    	         //private InputStream afterFile = null;
                                                    	         private IFileItemHandle afterFile = null;

                                                    	         private String afterName = null;
                                                    	         private String afterFolder = null;

                                                    	
                                                    	         //private String filename = null;

                                                    	         //private String folder = null;




                            size                                                                                                                                                                        #developers
                                                    	

                                                    	         private boolean isFile = true;
                                                    	

                                                    	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                    	

                                                    	         private Instances instances = null;
                                                    	

                                                    	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                    	         	                           this.instances = instances;

                                                    	         	
                                                    	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                    	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                    	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                    	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                    	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                    	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                    	         	

                                                    	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                    	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                    	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                    	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                    change.beforeState(), instances);
                                                    	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                    change.beforeState(), instances);
                                                    	         	                           	

                                                    	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                    	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                    	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	
                                                    	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                    change.item(), instances);
                                                    	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                    instances);
                                                    	         	                           	

                                                    	         	                           	                                     this.isFile = true;
                                                    	         	                           }

                                                    	         	
                                                    	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                    	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                    change.beforeState(), instances);




                    complexity                                                                                                                                                                           #changes
                                                    	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                    change.afterState(), instances);

                                                    	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                    instances);

                                                    	         	                           	                                     this.isFile = false;
                                                    	         	                           }

                                                    	         	
                                                    	         	                           this.changeSetId = changeSetId;

                                                    	         	                           this.kind = this.kindMap.get(change.kind());
                                                    	         }

                                                    	
                                                    	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                    	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                    	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                    instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                    	         	

                                                    	         	                           	                                     return fileItem.getName();
                                                    	         	                           }

                                                    	         	
                                                    	         	                           return null;

                                                    	         }
                                                    	

                                                    	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                    	         	                           if (_folderHandle != null) {

                                                    	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                    	         	                           	                                     String folderName = "";

                                                    	         	                           	
                                                    	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                    	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                    instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                    	         	                           	                                     	                                     folderName = folder.getName() +
                                                    "/" + folderName;

                                                    	         	                           	                                     	                                     folderHandle =
                                                    folder.getParent();

                                                    	         	                           	                                     }
                                                    	         	                           	

                                                    	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                    	         	                           }

                                                    	         	                           return null;




                                                                                                   A.java




N. Nagappan and T. Ball. Use of Relative Code Churn Measures to Predict System Defect Density. In Proceedings of the 27th
International Conference on Software Engineering, pages 284–292, 2005.
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                     import java.io.InputStream;

                                                     import java.util.HashMap;


                                                     import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                     import com.ibm.team.filesystem.common.IFileItem;
                                                     import com.ibm.team.filesystem.common.IFileItemHandle;

                                                     import com.ibm.team.repository.common.IContent;
                                                     import com.ibm.team.repository.common.TeamRepositoryException;

                                                     import com.ibm.team.scm.common.IChange;
                                                     import com.ibm.team.scm.common.IFolder;

                                                     import com.ibm.team.scm.common.IFolderHandle;
                                                     import com.ibm.team.scm.common.IVersionableHandle;


                                                     public class SimpleChange {

                                                     	         private String kind = null;
                                                     	         private String changeSetId = null;

                                                     	
                                                     	         //private InputStream beforeFile = null;

                                                     	         private IFileItemHandle beforeFile = null;
                                                     	         private String beforeName = null;

                                                     	         private String beforeFolder = null;
                                                     	

                                                     	         //private InputStream afterFile = null;
                                                     	         private IFileItemHandle afterFile = null;

                                                     	         private String afterName = null;
                                                     	         private String afterFolder = null;

                                                     	
                                                     	         //private String filename = null;

                                                     	         //private String folder = null;




                     dev + code                                                                                                                                                                          #developers
                                                     	

                                                     	         private boolean isFile = true;
                                                     	

                                                     	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                     	

                                                     	         private Instances instances = null;
                                                     	

                                                     	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                     	         	                           this.instances = instances;

                                                     	         	
                                                     	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                     	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                     	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                     	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                     	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                     	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                     	         	

                                                     	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                     	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                     	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                     	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                     change.beforeState(), instances);
                                                     	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                     change.beforeState(), instances);
                                                     	         	                           	

                                                     	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                     	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                     	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                     change.afterState(), instances);

                                                     	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                     change.afterState(), instances);

                                                     	         	                           	
                                                     	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                     change.item(), instances);
                                                     	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                     instances);
                                                     	         	                           	

                                                     	         	                           	                                     this.isFile = true;
                                                     	         	                           }

                                                     	         	
                                                     	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                     	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                     change.beforeState(), instances);




                     complexity                                                                                                                                                                           #changes
                                                     	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                     change.afterState(), instances);

                                                     	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                     instances);

                                                     	         	                           	                                     this.isFile = false;
                                                     	         	                           }

                                                     	         	
                                                     	         	                           this.changeSetId = changeSetId;

                                                     	         	                           this.kind = this.kindMap.get(change.kind());
                                                     	         }

                                                     	
                                                     	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                     	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                     	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                     instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                     	         	

                                                     	         	                           	                                     return fileItem.getName();
                                                     	         	                           }

                                                     	         	
                                                     	         	                           return null;

                                                     	         }
                                                     	

                                                     	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                     	         	                           if (_folderHandle != null) {

                                                     	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                     	         	                           	                                     String folderName = "";

                                                     	         	                           	
                                                     	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                     	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                     instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                     	         	                           	                                     	                                     folderName = folder.getName() +
                                                     "/" + folderName;

                                                     	         	                           	                                     	                                     folderHandle =
                                                     folder.getParent();

                                                     	         	                           	                                     }
                                                     	         	                           	

                                                     	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                     	         	                           }

                                                     	         	                           return null;




                                                                                                    A.java




C. Bird, N. Nagappan, H. Gall, B. Murphy and P. Devanbu. Putting It All Together: Using Socio-technical Networks to Predict
Failures. In Proceedings of the 20th International Symposium on Software Reliability Engineering, pages 109–119, 2009.
package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes;


                                                   import java.io.InputStream;

                                                   import java.util.HashMap;


                                                   import ca.uvic.segal.jazz.extraction.datastructures.Instances;


                                                   import com.ibm.team.filesystem.common.IFileItem;
                                                   import com.ibm.team.filesystem.common.IFileItemHandle;

                                                   import com.ibm.team.repository.common.IContent;
                                                   import com.ibm.team.repository.common.TeamRepositoryException;

                                                   import com.ibm.team.scm.common.IChange;
                                                   import com.ibm.team.scm.common.IFolder;

                                                   import com.ibm.team.scm.common.IFolderHandle;
                                                   import com.ibm.team.scm.common.IVersionableHandle;


                                                   public class SimpleChange {

                                                   	         private String kind = null;
                                                   	         private String changeSetId = null;

                                                   	
                                                   	         //private InputStream beforeFile = null;

                                                   	         private IFileItemHandle beforeFile = null;
                                                   	         private String beforeName = null;

                                                   	         private String beforeFolder = null;
                                                   	

                                                   	         //private InputStream afterFile = null;
                                                   	         private IFileItemHandle afterFile = null;

                                                   	         private String afterName = null;
                                                   	         private String afterFolder = null;

                                                   	
                                                   	         //private String filename = null;

                                                   	         //private String folder = null;




                    dev + code                                                                                                                                                                         #developers
                                                   	

                                                   	         private boolean isFile = true;
                                                   	

                                                   	         private HashMap<Integer,String> kindMap = new HashMap<Integer,String>();
                                                   	

                                                   	         private Instances instances = null;
                                                   	

                                                   	         public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException {
                                                   	         	                           this.instances = instances;

                                                   	         	
                                                   	         	                           this.kindMap.put(new Integer(IChange.ADD), "ADD");

                                                   	         	                           this.kindMap.put(new Integer(IChange.DELETE), "DELETE");
                                                   	         	                           this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY");

                                                   	         	                           this.kindMap.put(new Integer(IChange.NONE), "NONE");
                                                   	         	                           this.kindMap.put(new Integer(IChange.RENAME), "RENAME");

                                                   	         	                           this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT");
                                                   	         	

                                                   	         	                           if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) {
                                                   	         	                           	                                     //this.beforeFile = this.getFile(change.beforeState(), instances);

                                                   	         	                           	                                     this.beforeFile = (IFileItemHandle) change.beforeState();
                                                   	         	                           	                                     this.beforeFolder = this.extractFolder((IFileItemHandle)

                                                   change.beforeState(), instances);
                                                   	         	                           	                                     this.beforeName = this.extractFileName((IFileItemHandle)

                                                   change.beforeState(), instances);
                                                   	         	                           	

                                                   	         	                           	                                     //this.afterFile = this.getFile(change.afterState(), instances);
                                                   	         	                           	                                     this.afterFile = (IFileItemHandle) change.afterState();

                                                   	         	                           	                                     this.afterFolder = this.extractFolder((IFileItemHandle)
                                                   change.afterState(), instances);

                                                   	         	                           	                                     this.afterName = this.extractFileName((IFileItemHandle)
                                                   change.afterState(), instances);

                                                   	         	                           	
                                                   	         	                           	                                     //this.filename = this.extractFileName((IFileItemHandle)

                                                   change.item(), instances);
                                                   	         	                           	                                     //this.folder = this.extractFolder((IFileItemHandle) change.item(),

                                                   instances);
                                                   	         	                           	

                                                   	         	                           	                                     this.isFile = true;
                                                   	         	                           }

                                                   	         	
                                                   	         	                           if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) {

                                                   	         	                           	                                     this.beforeFolder = this.extractFolder((IFolderHandle)
                                                   change.beforeState(), instances);




                   dependency                                                                                                                                                                           #changes
                                                   	         	                           	                                     this.afterFolder = this.extractFolder((IFolderHandle)
                                                   change.afterState(), instances);

                                                   	         	                           	                                     //this.folder = this.extractFolder((IFolderHandle) change.item(),
                                                   instances);

                                                   	         	                           	                                     this.isFile = false;
                                                   	         	                           }

                                                   	         	
                                                   	         	                           this.changeSetId = changeSetId;

                                                   	         	                           this.kind = this.kindMap.get(change.kind());
                                                   	         }

                                                   	
                                                   	         public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException {

                                                   	         	                           if (fileHandle != null && fileHandle.getStateId() != null) {
                                                   	         	                           	                                     IFileItem fileItem = (IFileItem)

                                                   instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor);
                                                   	         	

                                                   	         	                           	                                     return fileItem.getName();
                                                   	         	                           }

                                                   	         	
                                                   	         	                           return null;

                                                   	         }
                                                   	

                                                   	         public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException {
                                                   	         	                           if (_folderHandle != null) {

                                                   	         	                           	                                     IFolderHandle folderHandle = _folderHandle;
                                                   	         	                           	                                     String folderName = "";

                                                   	         	                           	
                                                   	         	                           	                                     while (folderHandle != null && folderHandle.getStateId() != null) {

                                                   	         	                           	                                      	                                    IFolder folder = (IFolder)
                                                   instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor);

                                                   	         	                           	                                     	                                     folderName = folder.getName() +
                                                   "/" + folderName;

                                                   	         	                           	                                     	                                     folderHandle =
                                                   folder.getParent();

                                                   	         	                           	                                     }
                                                   	         	                           	

                                                   	         	                           	                                     return folderName.equals("") ? null : folderName;
                                                   	         	                           }

                                                   	         	                           return null;




                                                                                                  A.java




T. Zimmermann and N. Nagappan. Predicting defects using network analysis on dependency graphs. In Proceedings of the 30th
International Conference on Software Engineering, pages 531–540, 2008.
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy
Candidacy

More Related Content

What's hot

Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Lukas Ruebbelke
 
Bdd for ios with kiwi
Bdd for ios with kiwiBdd for ios with kiwi
Bdd for ios with kiwiGnat
 
Jquery 1.3 cheatsheet_v1
Jquery 1.3 cheatsheet_v1Jquery 1.3 cheatsheet_v1
Jquery 1.3 cheatsheet_v1Sultan Khan
 
Jquery 13 cheatsheet_v1
Jquery 13 cheatsheet_v1Jquery 13 cheatsheet_v1
Jquery 13 cheatsheet_v1ilesh raval
 
Undoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesUndoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesSébastien Mosser
 
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019corehard_by
 
A clean(er) architecture
A clean(er) architectureA clean(er) architecture
A clean(er) architectureAndreaMaglie
 
究極のコントローラを目指す
究極のコントローラを目指す究極のコントローラを目指す
究極のコントローラを目指すYasuo Harada
 
eROSE: Guiding programmers in Eclipse
eROSE: Guiding programmers in EclipseeROSE: Guiding programmers in Eclipse
eROSE: Guiding programmers in EclipseThomas Zimmermann
 
HATARI: Raising Risk Awareness
HATARI: Raising Risk AwarenessHATARI: Raising Risk Awareness
HATARI: Raising Risk AwarenessThomas Zimmermann
 

What's hot (11)

Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015
 
Bdd for ios with kiwi
Bdd for ios with kiwiBdd for ios with kiwi
Bdd for ios with kiwi
 
Attribute
AttributeAttribute
Attribute
 
Jquery 1.3 cheatsheet_v1
Jquery 1.3 cheatsheet_v1Jquery 1.3 cheatsheet_v1
Jquery 1.3 cheatsheet_v1
 
Jquery 13 cheatsheet_v1
Jquery 13 cheatsheet_v1Jquery 13 cheatsheet_v1
Jquery 13 cheatsheet_v1
 
Undoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesUndoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business Processes
 
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019
Как приготовить std::system_error. Юрий Ефимочев. CoreHard Spring 2019
 
A clean(er) architecture
A clean(er) architectureA clean(er) architecture
A clean(er) architecture
 
究極のコントローラを目指す
究極のコントローラを目指す究極のコントローラを目指す
究極のコントローラを目指す
 
eROSE: Guiding programmers in Eclipse
eROSE: Guiding programmers in EclipseeROSE: Guiding programmers in Eclipse
eROSE: Guiding programmers in Eclipse
 
HATARI: Raising Risk Awareness
HATARI: Raising Risk AwarenessHATARI: Raising Risk Awareness
HATARI: Raising Risk Awareness
 

Similar to Candidacy

import javaawt import javaxswing import javaxswing.pdf
import javaawt import javaxswing import javaxswing.pdfimport javaawt import javaxswing import javaxswing.pdf
import javaawt import javaxswing import javaxswing.pdfADITIEYEWEAR
 
Soundreader.classpathSoundreader.project Soundre.docx
Soundreader.classpathSoundreader.project  Soundre.docxSoundreader.classpathSoundreader.project  Soundre.docx
Soundreader.classpathSoundreader.project Soundre.docxwhitneyleman54422
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Developmentjsmith92
 
Coding using jscript test complete
Coding using jscript test completeCoding using jscript test complete
Coding using jscript test completeViresh Doshi
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency GotchasAlex Miller
 
JavaScript Classes and Inheritance
JavaScript Classes and InheritanceJavaScript Classes and Inheritance
JavaScript Classes and Inheritancemarcheiligers
 
VISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEVISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEDarwin Durand
 
dcs plus Catalogue 2015
dcs plus Catalogue 2015dcs plus Catalogue 2015
dcs plus Catalogue 2015dcs plus
 
Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Oliver Klee
 
Failure-Preventing Recommendations
Failure-Preventing RecommendationsFailure-Preventing Recommendations
Failure-Preventing RecommendationsAdrian Schroeter
 
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docx
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docxsrcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docx
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docxwhitneyleman54422
 
How do I make my JTable non editableimport java.awt.; import j.pdf
How do I make my JTable non editableimport java.awt.; import j.pdfHow do I make my JTable non editableimport java.awt.; import j.pdf
How do I make my JTable non editableimport java.awt.; import j.pdfforwardcom41
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3Oliver Klee
 

Similar to Candidacy (20)

import javaawt import javaxswing import javaxswing.pdf
import javaawt import javaxswing import javaxswing.pdfimport javaawt import javaxswing import javaxswing.pdf
import javaawt import javaxswing import javaxswing.pdf
 
EMF Tips n Tricks
EMF Tips n TricksEMF Tips n Tricks
EMF Tips n Tricks
 
Soundreader.classpathSoundreader.project Soundre.docx
Soundreader.classpathSoundreader.project  Soundre.docxSoundreader.classpathSoundreader.project  Soundre.docx
Soundreader.classpathSoundreader.project Soundre.docx
 
Google guava
Google guavaGoogle guava
Google guava
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
 
Coding using jscript test complete
Coding using jscript test completeCoding using jscript test complete
Coding using jscript test complete
 
Jtreenotes
JtreenotesJtreenotes
Jtreenotes
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency Gotchas
 
JavaScript Classes and Inheritance
JavaScript Classes and InheritanceJavaScript Classes and Inheritance
JavaScript Classes and Inheritance
 
VISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEVISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLE
 
dcs plus Catalogue 2015
dcs plus Catalogue 2015dcs plus Catalogue 2015
dcs plus Catalogue 2015
 
Easy Button
Easy ButtonEasy Button
Easy Button
 
Concurrency gotchas
Concurrency gotchasConcurrency gotchas
Concurrency gotchas
 
Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)
 
Failure-Preventing Recommendations
Failure-Preventing RecommendationsFailure-Preventing Recommendations
Failure-Preventing Recommendations
 
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docx
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docxsrcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docx
srcArtifact.javasrcArtifact.javaclassArtifactextendsCave{pub.docx
 
How do I make my JTable non editableimport java.awt.; import j.pdf
How do I make my JTable non editableimport java.awt.; import j.pdfHow do I make my JTable non editableimport java.awt.; import j.pdf
How do I make my JTable non editableimport java.awt.; import j.pdf
 
"this" in JavaScript
"this" in JavaScript"this" in JavaScript
"this" in JavaScript
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 

More from Adrian Schroeter

Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012Adrian Schroeter
 
Predicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in JazzPredicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in JazzAdrian Schroeter
 
Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?Adrian Schroeter
 
MSA - building socio-technical networks
MSA - building socio-technical networksMSA - building socio-technical networks
MSA - building socio-technical networksAdrian Schroeter
 
Mining Jazz: An Experience Report
Mining Jazz: An Experience ReportMining Jazz: An Experience Report
Mining Jazz: An Experience ReportAdrian Schroeter
 

More from Adrian Schroeter (6)

Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012Talk or Not to Talk @ CSCW 2012
Talk or Not to Talk @ CSCW 2012
 
Predicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in JazzPredicting Buildoutcome using Developer Interaction in Jazz
Predicting Buildoutcome using Developer Interaction in Jazz
 
Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?Do Stack Traces Help Developers Fix Bugs?
Do Stack Traces Help Developers Fix Bugs?
 
MSA - building socio-technical networks
MSA - building socio-technical networksMSA - building socio-technical networks
MSA - building socio-technical networks
 
Boolean Games
Boolean GamesBoolean Games
Boolean Games
 
Mining Jazz: An Experience Report
Mining Jazz: An Experience ReportMining Jazz: An Experience Report
Mining Jazz: An Experience Report
 

Candidacy

  • 2.
  • 4. Why is it a Problem? The US economy lost in 2002 60 billion dollar due to software defects http://www.nist.gov/public_affairs/releases/n02-10.htm
  • 5. What has been done, so far ...
  • 6. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java
  • 7. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; size private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java T. L. Graves, A. F. Karr, J. S. Marron, and H. P. Siy. Predicting fault incidence using software change history. IEEE Transactions on Software Engineering, 26(7):653–661, 2000.
  • 8. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; size private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); complexity this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java T. L. Graves, A. F. Karr, J. S. Marron, and H. P. Siy. Predicting fault incidence using software change history. IEEE Transactions on Software Engineering, 26(7):653–661, 2000.
  • 9. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; size #developers private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); complexity this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java E. Weyuker, T. Ostrand and R. Bell. Do too many cooks spoil the broth? Using the number of developers to enhance defect prediction models. In Journal Empirical Software Engineering, pages 539–559, 2008.
  • 10. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; size #developers private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); complexity #changes this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java N. Nagappan and T. Ball. Use of Relative Code Churn Measures to Predict System Defect Density. In Proceedings of the 27th International Conference on Software Engineering, pages 284–292, 2005.
  • 11. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; dev + code #developers private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); complexity #changes this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java C. Bird, N. Nagappan, H. Gall, B. Murphy and P. Devanbu. Putting It All Together: Using Socio-technical Networks to Predict Failures. In Proceedings of the 20th International Symposium on Software Reliability Engineering, pages 109–119, 2009.
  • 12. package ca.uvic.segal.jazz.extraction.datastructures.artifacts.changes; import java.io.InputStream; import java.util.HashMap; import ca.uvic.segal.jazz.extraction.datastructures.Instances; import com.ibm.team.filesystem.common.IFileItem; import com.ibm.team.filesystem.common.IFileItemHandle; import com.ibm.team.repository.common.IContent; import com.ibm.team.repository.common.TeamRepositoryException; import com.ibm.team.scm.common.IChange; import com.ibm.team.scm.common.IFolder; import com.ibm.team.scm.common.IFolderHandle; import com.ibm.team.scm.common.IVersionableHandle; public class SimpleChange { private String kind = null; private String changeSetId = null; //private InputStream beforeFile = null; private IFileItemHandle beforeFile = null; private String beforeName = null; private String beforeFolder = null; //private InputStream afterFile = null; private IFileItemHandle afterFile = null; private String afterName = null; private String afterFolder = null; //private String filename = null; //private String folder = null; dev + code #developers private boolean isFile = true; private HashMap<Integer,String> kindMap = new HashMap<Integer,String>(); private Instances instances = null; public SimpleChange(IChange change, String changeSetId, Instances instances) throws TeamRepositoryException { this.instances = instances; this.kindMap.put(new Integer(IChange.ADD), "ADD"); this.kindMap.put(new Integer(IChange.DELETE), "DELETE"); this.kindMap.put(new Integer(IChange.MODIFY), "MODIFY"); this.kindMap.put(new Integer(IChange.NONE), "NONE"); this.kindMap.put(new Integer(IChange.RENAME), "RENAME"); this.kindMap.put(new Integer(IChange.REPARENT), "REPARENT"); if (change.item().getItemType().equals(IFileItem.ITEM_TYPE)) { //this.beforeFile = this.getFile(change.beforeState(), instances); this.beforeFile = (IFileItemHandle) change.beforeState(); this.beforeFolder = this.extractFolder((IFileItemHandle) change.beforeState(), instances); this.beforeName = this.extractFileName((IFileItemHandle) change.beforeState(), instances); //this.afterFile = this.getFile(change.afterState(), instances); this.afterFile = (IFileItemHandle) change.afterState(); this.afterFolder = this.extractFolder((IFileItemHandle) change.afterState(), instances); this.afterName = this.extractFileName((IFileItemHandle) change.afterState(), instances); //this.filename = this.extractFileName((IFileItemHandle) change.item(), instances); //this.folder = this.extractFolder((IFileItemHandle) change.item(), instances); this.isFile = true; } if (change.item().getItemType().equals(IFolder.ITEM_TYPE)) { this.beforeFolder = this.extractFolder((IFolderHandle) change.beforeState(), instances); dependency #changes this.afterFolder = this.extractFolder((IFolderHandle) change.afterState(), instances); //this.folder = this.extractFolder((IFolderHandle) change.item(), instances); this.isFile = false; } this.changeSetId = changeSetId; this.kind = this.kindMap.get(change.kind()); } public String extractFileName(IFileItemHandle fileHandle, Instances instances) throws TeamRepositoryException { if (fileHandle != null && fileHandle.getStateId() != null) { IFileItem fileItem = (IFileItem) instances.workspaceManager.versionableManager().fetchCompleteState( fileHandle, instances.iProgressMonitor); return fileItem.getName(); } return null; } public String extractFolder(IFolderHandle _folderHandle, Instances instances) throws TeamRepositoryException { if (_folderHandle != null) { IFolderHandle folderHandle = _folderHandle; String folderName = ""; while (folderHandle != null && folderHandle.getStateId() != null) { IFolder folder = (IFolder) instances.workspaceManager.versionableManager().fetchCompleteState( folderHandle, instances.iProgressMonitor); folderName = folder.getName() + "/" + folderName; folderHandle = folder.getParent(); } return folderName.equals("") ? null : folderName; } return null; A.java T. Zimmermann and N. Nagappan. Predicting defects using network analysis on dependency graphs. In Proceedings of the 30th International Conference on Software Engineering, pages 531–540, 2008.