Skip to content

Commit

Permalink
Update attribute oracle with initializer changes
Browse files Browse the repository at this point in the history
  • Loading branch information
tsantalis committed Jun 29, 2024
1 parent 0a7893c commit 3f0acdf
Show file tree
Hide file tree
Showing 79 changed files with 1,312 additions and 79 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/codetracker/AttributeTrackerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public History<Attribute> track() throws Exception {
historyReport.gitLogCommandCallsPlusPlus();
analysedCommits.clear();
}
if (analysedCommits.containsAll(commits))
if (commits == null || analysedCommits.containsAll(commits))
break;
for (String commitId : commits) {
if (analysedCommits.contains(commitId))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@
import org.codetracker.api.CodeElementNotFoundException;
import org.codetracker.api.History;
import org.codetracker.api.Version;
import org.codetracker.change.ChangeFactory;
import org.codetracker.change.Change.Type;
import org.codetracker.element.Attribute;
import org.refactoringminer.api.Refactoring;
import org.refactoringminer.api.RefactoringType;
import org.refactoringminer.rm1.GitHistoryRefactoringMinerImpl;

import gr.uom.java.xmi.UMLModel;
import gr.uom.java.xmi.decomposition.AbstractExpression;
import gr.uom.java.xmi.diff.MoveAttributeRefactoring;
import gr.uom.java.xmi.diff.RenameAttributeRefactoring;
import gr.uom.java.xmi.diff.UMLModelDiff;
Expand Down Expand Up @@ -77,7 +80,7 @@ public History<Attribute> track() throws Exception {
historyReport.gitLogCommandCallsPlusPlus();
analysedCommits.clear();
}
if (analysedCommits.containsAll(commits))
if (commits == null || analysedCommits.containsAll(commits))
break;
for (String commitId : commits) {
if (analysedCommits.contains(commitId))
Expand Down Expand Up @@ -111,6 +114,23 @@ public History<Attribute> track() throws Exception {
Attribute leftAttribute = getAttribute(leftModel, parentVersion, rightAttribute::equalIdentifierIgnoringVersion);
if (leftAttribute != null) {
historyReport.step2PlusPlus();
//check if initializer changed
AbstractExpression leftInitializer = leftAttribute.getUmlAttribute().getVariableDeclaration().getInitializer();
AbstractExpression rightInitializer = rightAttribute.getUmlAttribute().getVariableDeclaration().getInitializer();
if (leftInitializer != null && rightInitializer != null) {
if (!leftInitializer.getString().equals(rightInitializer.getString())) {
changeHistory.get().addChange(leftAttribute, rightAttribute, ChangeFactory.forAttribute(Type.INITIALIZER_CHANGE));
attributes.add(leftAttribute);
}
}
else if (leftInitializer == null && rightInitializer != null) {
changeHistory.get().addChange(leftAttribute, rightAttribute, ChangeFactory.forAttribute(Type.INITIALIZER_ADDED));
attributes.add(leftAttribute);
}
else if (leftInitializer != null && rightInitializer == null) {
changeHistory.get().addChange(leftAttribute, rightAttribute, ChangeFactory.forAttribute(Type.INITIALIZER_REMOVED));
attributes.add(leftAttribute);
}
continue;
}

Expand Down
36 changes: 34 additions & 2 deletions src/main/java/org/codetracker/BaseTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,29 @@ public BaseTracker(Repository repository, String startCommitId, String filePath)
}

protected static List<String> getCommits(Repository repository, String startCommitId, String filePath, Git git) throws IOException, GitAPIException {
LogCommand logCommandFile = git.log().add(repository.resolve(startCommitId)).addPath(filePath).setRevFilter(RevFilter.ALL);
if (startCommitId.equals("0")) {
return Collections.emptyList();
}
LogCommand logCommandFile = git.log().add(repository.resolve(startCommitId)).addPath(filePath).setRevFilter(RevFilter.ALL);
Iterable<RevCommit> fileRevisions = logCommandFile.call();
return StreamSupport.stream(fileRevisions.spliterator(), false).map(revCommit -> revCommit.getId().getName()).collect(Collectors.toList());
List<String> list = StreamSupport.stream(fileRevisions.spliterator(), false).map(revCommit -> revCommit.getId().getName()).collect(Collectors.toList());
/*
if(jsonFile.exists()) {
final ObjectMapper mapper = new ObjectMapper();
GitLog gitLog = mapper.readValue(jsonFile, GitLog.class);
Map<String, List<String>> map = gitLog.getCommitLogMap();
map.put(startCommitId, list);
jsonFile.delete();
mapper.writeValue(jsonFile, gitLog);
}
else {
Map<String, List<String>> map = new LinkedHashMap<>();
map.put(startCommitId, list);
final ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(jsonFile, new GitLog(map));
}
*/
return list;
}

public static UMLModel getUMLModel(Repository repository, String commitId, Set<String> fileNames) throws Exception {
Expand Down Expand Up @@ -113,4 +133,16 @@ private CommitModel getCommitModel(RevCommit parentCommit1, RevCommit parentComm

return new CommitModel(parentCommit1.getId().getName(), repositoryDirectoriesBefore, fileContentsBefore, fileContentsBeforeTrimmed, repositoryDirectoriesCurrent, fileContentsCurrent, fileContentsCurrentTrimmed, renamedFilesHint, moveSourceFolderRefactorings);
}
/*
private static final String REPOS = System.getProperty("user.dir") + "/oracle/commits";
protected void populateWithGitHubAPIAndSaveFiles(Repository repository, String commitId) throws IOException, InterruptedException {
Set<String> repositoryDirectoriesBefore = ConcurrentHashMap.newKeySet();
Set<String> repositoryDirectoriesCurrent = ConcurrentHashMap.newKeySet();
Map<String, String> fileContentsBefore = new ConcurrentHashMap<String, String>();
Map<String, String> fileContentsCurrent = new ConcurrentHashMap<String, String>();
Map<String, String> renamedFilesHint = new ConcurrentHashMap<String, String>();
GitHistoryRefactoringMinerImpl.populateWithLocalRepositoryAndSaveFiles(repository, commitId,
fileContentsBefore, fileContentsCurrent, renamedFilesHint, repositoryDirectoriesBefore, repositoryDirectoriesCurrent, new File(REPOS));
}
*/
}
3 changes: 3 additions & 0 deletions src/main/java/org/codetracker/BaseTrackerWithLocalFiles.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ public BaseTrackerWithLocalFiles(String cloneURL, String startCommitId, String f
}

protected static List<String> getCommits(String commitId, File jsonFile) throws IOException, GitAPIException {
if (commitId.equals("0")) {
return Collections.emptyList();
}
if(jsonFile.exists()) {
final ObjectMapper mapper = new ObjectMapper();
GitLog gitLog = mapper.readValue(jsonFile, GitLog.class);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/codetracker/ChangeHistory.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ public void handleAdd(T leftSide, T rightSide, String comment) {
if (leftSide == null || rightSide == null)
return;
changeHistoryGraph.addNode(rightSide);
if (!changeHistoryGraph.predecessors(rightSide).isEmpty())
return;
//if (!changeHistoryGraph.predecessors(rightSide).isEmpty())
// return;
leftSide.setAdded(true);
addChange(leftSide, rightSide, ChangeFactory.of(AbstractChange.Type.INTRODUCED).comment(comment).codeElement(rightSide));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@
"attributeKey": "src/main/java/org.apache.commons.io.output.DemuxOutputStream@outputStreamThreadLocal:InheritableThreadLocal<OutputStream>(27)",
"attributeDeclarationLine": 27,
"expectedChanges": [
{
"parentCommitId": "fedbfc171fdfcb2b5e36a73e56f86d2d233f2439",
"commitId": "51f13c846dae950e1d27693c9e23c1063945210f",
"commitTime": 1464881775,
"changeType": "initializer change",
"elementFileBefore": "src/main/java/org/apache/commons/io/output/DemuxOutputStream.java",
"elementNameBefore": "src/main/java/org.apache.commons.io.output.DemuxOutputStream@(final)(private)outputStreamThreadLocal:InheritableThreadLocal<OutputStream>(28)",
"elementFileAfter": "src/main/java/org/apache/commons/io/output/DemuxOutputStream.java",
"elementNameAfter": "src/main/java/org.apache.commons.io.output.DemuxOutputStream@(final)(private)outputStreamThreadLocal:InheritableThreadLocal<OutputStream>(28)",
"comment": "initializer change"
},
{
"parentCommitId": "8f06c0ddc6fb9d17075e688265ac3767259bc5e4",
"commitId": "1d031d6eb6e6861f38e228bd587ff74e7f6fcce8",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,17 @@
"elementNameAfter": "core/src/main/java/org.elasticsearch.action.bulk.BulkRequest@(final)(package)requests:List<ActionRequest<?>>(59)",
"comment": "Change Attribute Type requests : List<ActionRequest> to requests : List<ActionRequest<?>> in class org.elasticsearch.action.bulk.BulkRequest"
},
{
"parentCommitId": "2b87d7d9198688e75a0b418bb68ea4297542a4f3",
"commitId": "3067cacb66879428664d0e34e594842e30fcf90c",
"commitTime": 1440728073,
"changeType": "initializer change",
"elementFileBefore": "core/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java",
"elementNameBefore": "core/src/main/java/org.elasticsearch.action.bulk.BulkRequest@(final)(package)requests:List<ActionRequest>(60)",
"elementFileAfter": "core/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java",
"elementNameAfter": "core/src/main/java/org.elasticsearch.action.bulk.BulkRequest@(final)(package)requests:List<ActionRequest>(58)",
"comment": "initializer change"
},
{
"parentCommitId": "7ccc193a666e2ae888e7ac93d677a2143e5e07c3",
"commitId": "15a62448343fd24f8e63f43b1e4b16f50005e4a5",
Expand Down
Loading

0 comments on commit 3f0acdf

Please sign in to comment.