tsantalis / RefactoringMiner

MIT License
363 stars 137 forks source link

StackOverflow hapifhir/hapi-fhir 5600ba67 #579

Closed victorgveloso closed 8 months ago

victorgveloso commented 8 months ago

StackOverflow thrown while analyzing https://github.com/hapifhir/hapi-fhir/commit/5600ba67637461aba27aa395dc069e098dac55d7

80337118 [main] ERROR b.u.d.l.r.o.AnalyzeProjectsHandler - Error analyzing commit 5600ba67637461aba27aa395dc069e098dac55d7
java.util.concurrent.ExecutionException: java.lang.StackOverflowError
    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.StackOverflowError: null
    at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4322)
    at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4329)
    at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4329)
    at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:4820)
    at java.base/java.util.regex.Pattern$BranchConn.match(Pattern.java:4698)
    at java.base/java.util.regex.Pattern$Slice.match(Pattern.java:4088)
    at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4734)
    at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4789)
    at java.base/java.util.regex.Matcher.match(Matcher.java:1755)
    at java.base/java.util.regex.Matcher.matches(Matcher.java:712)
    at gr.uom.java.xmi.decomposition.StringBasedHeuristics.containsMethodSignatureOfAnonymousClass(StringBasedHeuristics.java:66)
    at gr.uom.java.xmi.decomposition.ReplacementUtil.performReplacement(ReplacementUtil.java:123)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacements(UMLOperationBodyMapper.java:11239)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:7804)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.init(UMLAttributeDiff.java:123)
    at gr.uom.java.xmi.diff.UMLAttributeDiff.<init>(UMLAttributeDiff.java:46)
    at gr.uom.java.xmi.diff.UMLAbstractClassDiff.getRefactorings(UMLAbstractClassDiff.java:751)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymous(UMLOperationBodyMapper.java:10880)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processAnonymousAndLambdas(UMLOperationBodyMapper.java:10686)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.findReplacementsWithExactMatching(UMLOperationBodyMapper.java:8583)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.processLeaves(UMLOperationBodyMapper.java:4802)
    at gr.uom.java.xmi.decomposition.UMLOperationBodyMapper.<init>(UMLOperationBodyMapper.java:970)
tsantalis commented 8 months ago

@victorgveloso Duplicate of #578 Fixed in https://github.com/tsantalis/RefactoringMiner/commit/ace8d811f83ac3f8c4c2b515fa8fee89aee71654

Refactorings at 5600ba67637461aba27aa395dc069e098dac55d7 Rename Class ca.uhn.fhir.model.valueset.BundleEntryStatusEnum renamed to ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Variable Type entryStatus : BundleEntryStatusEnum to entryStatus : BundleEntrySearchModeEnum in method public addResource(theResource IResource, theContext FhirContext, theServerBase String) : BundleEntry from class ca.uhn.fhir.model.api.Bundle Rename Method private encodeBundleToWriterUsingAtom(theBundle Bundle, eventWriter XMLStreamWriter) : void renamed to private encodeBundleToWriterDstu1(theBundle Bundle, eventWriter XMLStreamWriter) : void in class ca.uhn.fhir.parser.XmlParser Rename Method private encodeBundleToWriterUsingBundleResource(theBundle Bundle, theEventWriter XMLStreamWriter) : void renamed to private encodeBundleToWriterDstu2(theBundle Bundle, theEventWriter XMLStreamWriter) : void in class ca.uhn.fhir.parser.XmlParser Change Return Type Object to T in method public parse(theName String, theList List) : T from class ca.uhn.fhir.rest.method.IParamBinder Change Return Type Object to IQueryParameterAnd<?> in method public parse(theName String, theString List) : IQueryParameterAnd<?> from class ca.uhn.fhir.rest.method.QueryParameterAndBinder Change Return Type Object to IQueryParameterOr<?> in method public parse(theName String, theString List) : IQueryParameterOr<?> from class ca.uhn.fhir.rest.method.QueryParameterOrBinder Change Return Type Object to IQueryParameterType in method public parse(theName String, theParams List) : IQueryParameterType from class ca.uhn.fhir.rest.method.QueryParameterTypeBinder Change Return Type Object to String in method public parse(theName String, theParams List) : String from class ca.uhn.fhir.rest.method.StringBinder Extract Method public readEntity(theId IdDt, theCheckForForcedId boolean) : BaseHasResource extracted from public readEntity(theId IdDt) : BaseHasResource in class ca.uhn.fhir.jpa.dao.FhirResourceDao Change Parameter Type theBundleEntryStatus : BundleEntryStatusEnum to theBundleEntryStatus : BundleEntrySearchModeEnum in method private loadResourcesByPid(theIncludePids Collection, theResourceListToPopulate List, theBundleEntryStatus BundleEntrySearchModeEnum) : void from class ca.uhn.fhir.jpa.dao.FhirResourceDao Extract Method private tryToLoadEntity(nextId IdDt) : ResourceTable extracted from public transaction(theResources List) : List in class ca.uhn.fhir.jpa.dao.FhirSystemDao Extract Variable nextResource : IResource in method public transaction(theResources List) : List from class ca.uhn.fhir.jpa.dao.FhirSystemDao Extract Variable newId : IdDt in method public transaction(theResources List) : List from class ca.uhn.fhir.jpa.dao.FhirSystemDao Change Variable Type retVal : ArrayList to retVal : List in method public transaction(theResources List) : List from class ca.uhn.fhir.jpa.dao.FhirSystemDao Change Attribute Type CODE_TO_ENUM : Map<String,BundleEntryStatusEnum> to CODE_TO_ENUM : Map<String,BundleEntrySearchModeEnum> in class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Attribute Type SYSTEM_TO_CODE_TO_ENUM : Map<String,Map<String,BundleEntryStatusEnum>> to SYSTEM_TO_CODE_TO_ENUM : Map<String,Map<String,BundleEntrySearchModeEnum>> in class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Attribute Type VALUESET_BINDER : IValueSetEnumBinder to VALUESET_BINDER : IValueSetEnumBinder in class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Parameter Type theEnum : BundleEntryStatusEnum to theEnum : BundleEntrySearchModeEnum in method public toCodeString(theEnum BundleEntrySearchModeEnum) : String from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum.VALUESET_BINDER.new IValueSetEnumBinder Change Parameter Type theEnum : BundleEntryStatusEnum to theEnum : BundleEntrySearchModeEnum in method public toSystemString(theEnum BundleEntrySearchModeEnum) : String from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum.VALUESET_BINDER.new IValueSetEnumBinder Change Return Type BundleEntryStatusEnum to BundleEntrySearchModeEnum in method public fromCodeString(theCodeString String) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum.VALUESET_BINDER.new IValueSetEnumBinder Change Variable Type map : Map<String,BundleEntryStatusEnum> to map : Map<String,BundleEntrySearchModeEnum> in method public fromCodeString(theCodeString String, theSystemString String) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum.VALUESET_BINDER.new IValueSetEnumBinder Change Return Type BundleEntryStatusEnum to BundleEntrySearchModeEnum in method public fromCodeString(theCodeString String, theSystemString String) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum.VALUESET_BINDER.new IValueSetEnumBinder Change Variable Type next : BundleEntryStatusEnum to next : BundleEntrySearchModeEnum in initializer BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Variable Type retVal : BundleEntryStatusEnum to retVal : BundleEntrySearchModeEnum in method public forCode(theCode String) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Change Return Type BundleEntryStatusEnum to BundleEntrySearchModeEnum in method public forCode(theCode String) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum Rename Attribute ENTRY_STATUS : ResourceMetadataKeyEnum to ENTRY_SEARCH_MODE : ResourceMetadataKeyEnum in class ca.uhn.fhir.model.api.ResourceMetadataKeyEnum Change Attribute Type ENTRY_STATUS : ResourceMetadataKeyEnum to ENTRY_SEARCH_MODE : ResourceMetadataKeyEnum in class ca.uhn.fhir.model.api.ResourceMetadataKeyEnum Change Return Type BundleEntryStatusEnum to BundleEntrySearchModeEnum in method public get(theResource IResource) : BundleEntrySearchModeEnum from class ca.uhn.fhir.model.api.ResourceMetadataKeyEnum.ENTRY_SEARCH_MODE.new ResourceMetadataKeyEnum Change Parameter Type theObject : BundleEntryStatusEnum to theObject : BundleEntrySearchModeEnum in method public put(theResource IResource, theObject BundleEntrySearchModeEnum) : void from class ca.uhn.fhir.model.api.ResourceMetadataKeyEnum.ENTRY_SEARCH_MODE.new ResourceMetadataKeyEnum Move Method public before() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDev to public before() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDstu2 Move And Rename Method public testServerReturnsAppropriateVersionDev() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDev to public testServerReturnsAppropriateVersionForDstu2() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDstu2 Extract Variable out : String in method public testServerReturnsWrongVersionForDstu2() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDstu2 Move And Rename Method public testServerReturnsWrongVersionDev() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDev to public testServerReturnsWrongVersionForDstu2() : void from class ca.uhn.fhir.rest.client.ClientServerValidationTestDstu2