tsantalis / RefactoringMiner

MIT License
363 stars 137 forks source link

StringIndexOutOfBounds Apache/Hive 2283346 #571

Closed victorgveloso closed 8 months ago

victorgveloso commented 8 months ago

Exception thrown while analyzing https://github.com/apache/hive/commit/228334634f4ed28630757fb6f1d61adf933df3fb

178743769 [main] ERROR b.u.d.l.r.o.AnalyzeProjectsHandler - Error analyzing commit 228334634f4ed28630757fb6f1d61adf933df3fb
java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: begin 3, end 2, length 3
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205)
    at org.refactoringminer.rm1.GitHistoryRefactoringMinerImpl.detect(GitHistoryRefactoringMinerImpl.java:762)
    at org.refactoringminer.rm1.GitHistoryRefactoringMinerImpl.detectAll(GitHistoryRefactoringMinerImpl.java:808)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.AnalyzeAllCommits.lambda$analyzeProject$0(AnalyzeAllCommits.java:61)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.TaskWithProjectLock.extractProjectPath(TaskWithProjectLock.java:49)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.AnalyzeAllCommits.analyzeProject(AnalyzeAllCommits.java:52)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.AnalyzeAllCommits.doTask(AnalyzeAllCommits.java:45)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.TaskWithProjectLock.doTask(TaskWithProjectLock.java:75)
    at br.ufmg.dcc.labsoft.refactoringanalyzer.operations.AnalyzeAllCommits.main(AnalyzeAllCommits.java:27)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 3, end 2, length 3
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4606)
    at java.base/java.lang.String.substring(String.java:2709)
    at gr.uom.java.xmi.diff.MappingOptimizer.optimizeDuplicateMappings(MappingOptimizer.java:366)
    at gr.uom.java.xmi.diff.MappingOptimizer.optimizeDuplicateMappingsForExtract(MappingOptimizer.java:180)
    at gr.uom.java.xmi.diff.UMLClassBaseDiff.checkForExtractedOperations(UMLClassBaseDiff.java:2504)
    at gr.uom.java.xmi.diff.UMLClassBaseDiff.process(UMLClassBaseDiff.java:116)
    at gr.uom.java.xmi.diff.UMLModelDiff.checkForMovedClasses(UMLModelDiff.java:594)
    at gr.uom.java.xmi.UMLModel.diff(UMLModel.java:168)
    at org.refactoringminer.rm1.GitHistoryRefactoringMinerImpl.detectRefactorings(GitHistoryRefactoringMinerImpl.java:162)
    at org.refactoringminer.rm1.GitHistoryRefactoringMinerImpl.lambda$detect$3(GitHistoryRefactoringMinerImpl.java:760)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
tsantalis commented 8 months ago

@victorgveloso FIXED

Refactorings at 228334634f4ed28630757fb6f1d61adf933df3fb Move Class org.apache.hadoop.hive.ql.exec.DCLLItem moved to org.apache.hadoop.hive.ql.exec.persistence.DCLLItem Move Class org.apache.hadoop.hive.ql.exec.MRU moved to org.apache.hadoop.hive.ql.exec.persistence.MRU Move Class org.apache.hadoop.hive.ql.exec.MapJoinObjectKey moved to org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectKey Move Class org.apache.hadoop.hive.ql.exec.MapJoinObjectValue moved to org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Move Class org.apache.hadoop.hive.ql.exec.HashMapWrapper moved to org.apache.hadoop.hive.ql.exec.persistence.HashMapWrapper Rename Parameter obj : ArrayList to newObj : ArrayList in method public pushObj(newObj ArrayList) : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator.IntermediateObject Change Attribute Type dummyObjVectors : ArrayList<ArrayList>[] to dummyObjVectors : RowContainer<ArrayList>[] in class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Attribute Type storage : HashMap<Byte,ArrayList<ArrayList>> to storage : HashMap<Byte,RowContainer<ArrayList>> in class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type pos : int to pos : byte in method protected initializeOp(hconf Configuration) : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type values : ArrayList<ArrayList> to values : RowContainer<ArrayList> in method protected initializeOp(hconf Configuration) : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type aliasRes : Iterator<ArrayList> to aliasRes : RowContainer<ArrayList> in method private genObject(inputNulls ArrayList<boolean[]>, aliasNum int, intObj IntermediateObject, firstRow boolean) : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type alias : Iterator<ArrayList> to alias : RowContainer<ArrayList> in method private genUniqueJoinObject(aliasNum int, intObj IntermediateObject) : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type aliasRes : Iterator<ArrayList> to alw : RowContainer<ArrayList> in method protected checkAndGenObject() : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Rename Variable aliasRes : Iterator<ArrayList> to alw : RowContainer<ArrayList> in method protected checkAndGenObject() : void from class org.apache.hadoop.hive.ql.exec.CommonJoinOperator Change Variable Type res : ArrayList<ArrayList> to res : RowContainer in method public processOp(row Object, tag int) : void from class org.apache.hadoop.hive.ql.exec.MapJoinOperator Change Attribute Type obj : ArrayList<ArrayList> to obj : RowContainer in class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Change Parameter Type obj : ArrayList<ArrayList> to obj : RowContainer in method public MapJoinObjectValue(metadataTag int, obj RowContainer) from class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Change Variable Type res : ArrayList<ArrayList> to res : RowContainer in method public readExternal(in ObjectInput) : void from class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Change Variable Type v : ArrayList<ArrayList> to v : RowContainer<ArrayList> in method public writeExternal(out ObjectOutput) : void from class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Change Return Type ArrayList<ArrayList> to RowContainer in method public getObj() : RowContainer from class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Change Parameter Type obj : ArrayList<ArrayList> to obj : RowContainer in method public setObj(obj RowContainer) : void from class org.apache.hadoop.hive.ql.exec.persistence.MapJoinObjectValue Extract Method private getPersistentHash() : HTree extracted from public put(key K, value V) : void in class org.apache.hadoop.hive.ql.exec.persistence.HashMapWrapper