diff --git a/.refactorfirst/refactor-first.json b/.refactorfirst/refactor-first.json index b400a4a1..c175841d 100644 --- a/.refactorfirst/refactor-first.json +++ b/.refactorfirst/refactor-first.json @@ -2,9 +2,9 @@ "project" : { "name" : "RefactorFirst", "version" : "0.11.0-SNAPSHOT", - "repoUrl" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/", - "baseDir" : "C:\\Code\\RefactorFirst", - "scanTimestamp" : "10/2/26, 6:03 AM", + "repoUrl" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/", + "baseDir" : "c:\\Code\\RefactorFirst", + "scanTimestamp" : "10/3/26, 3:43 PM", "hasAnyDisharmony" : true, "analysisFailed" : false }, @@ -14,7 +14,7 @@ "relationshipCount" : 299, "dotThreshold" : 4000, "dotThresholdExceeded" : false, - "dot" : "strict digraph G {\nChangePronenessRanker -> ScmLogInfo [ label = \"5\" weight = \"5\" ];\nChangePronenessRanker -> GitLogReader [ label = \"2\" weight = \"2\" ];\nGitLogReader -> org_hjug_git_GitLogReader_CommitWalkStats [ label = \"4\" weight = \"4\" ];\nGitLogReader -> ScmLogInfo [ label = \"3\" weight = \"3\" ];\nMain -> ReportCommand [ label = \"1\" weight = \"1\" ];\nReportCommand -> ReportType [ label = \"1\" weight = \"1\" ];\nReportCommand -> ReportWriter [ label = \"1\" weight = \"1\" ];\nReportCommand -> SimpleHtmlReport [ label = \"4\" weight = \"4\" ];\nReportCommand -> HtmlReport [ label = \"2\" weight = \"2\" ];\nReportCommand -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nReportCommand -> CsvReport [ label = \"3\" weight = \"3\" ];\nCodebaseGraphDTO -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"4\" weight = \"4\" ];\nCodebaseGraphDTO -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"4\" weight = \"4\" ];\nCompositeGraphBuilder -> GraphBuilderConfig [ label = \"4\" weight = \"4\" ];\nCompositeGraphBuilder -> CodebaseGraphDTO [ label = \"10\" weight = \"10\" ];\nCompositeGraphBuilder -> JavaSourceFileGraphBuilder [ label = \"3\" weight = \"3\" ];\nCompositeGraphBuilder -> KotlinSourceFileGraphBuilder [ label = \"3\" weight = \"3\" ];\nCompositeGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"2\" weight = \"2\" ];\nCompositeGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> SourceFileGraphBuilder [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> GraphDependencyCollector [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> JavaVisitor [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> GraphMetricsCollector [ label = \"5\" weight = \"5\" ];\nJavaSourceFileGraphBuilder -> MetricsCollectingVisitor [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> AbstractDependencyVisitor [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> Java25ParserFactory [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> DisharmonyDetector [ label = \"18\" weight = \"18\" ];\nJavaSourceFileGraphBuilder -> ClassMetrics [ label = \"3\" weight = \"3\" ];\nJavaSourceFileGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"3\" weight = \"3\" ];\nJavaSourceFileGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"3\" weight = \"3\" ];\nKotlinSourceFileGraphBuilder -> SourceFileGraphBuilder [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> GraphDependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> KotlinDependencyVisitor [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> GraphMetricsCollector [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> KotlinMetricsCollectingVisitor [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> JavaSourceFileGraphBuilder [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"1\" weight = \"1\" ];\nSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"1\" weight = \"1\" ];\nGraphDependencyCollector -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nClassMetrics -> MethodMetrics [ label = \"13\" weight = \"13\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony -> ClassMetrics [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony -> MethodMetrics [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyDetector -> ClassMetrics [ label = \"99\" weight = \"99\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"30\" weight = \"30\" ];\nDisharmonyDetector -> DisharmonyMetric [ label = \"44\" weight = \"44\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"15\" weight = \"15\" ];\nDisharmonyDetector -> MethodMetrics [ label = \"40\" weight = \"40\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry [ label = \"5\" weight = \"5\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_FlaggedClassData [ label = \"10\" weight = \"10\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_Clone [ label = \"20\" weight = \"20\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry -> ClassMetrics [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry -> MethodMetrics [ label = \"2\" weight = \"2\" ];\nDisharmonyMetric -> org_hjug_graphbuilder_metrics_DisharmonyMetric_Direction [ label = \"1\" weight = \"1\" ];\nGraphMetricsCollector -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nGraphMetricsCollector -> ClassMetrics [ label = \"33\" weight = \"33\" ];\nGraphMetricsCollector -> MethodMetrics [ label = \"10\" weight = \"10\" ];\nKotlinMetricsCollectingVisitor -> GraphMetricsCollector [ label = \"2\" weight = \"2\" ];\nKotlinMetricsCollectingVisitor -> MetricsVisitorState [ label = \"2\" weight = \"2\" ];\nKotlinMetricsCollectingVisitor -> MetricsVisitorLogic [ label = \"17\" weight = \"17\" ];\nKotlinMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"1\" weight = \"1\" ];\nKotlinMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"1\" weight = \"1\" ];\nKotlinMetricsCollectingVisitor -> ClassMetrics [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> GraphMetricsCollector [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> MetricsVisitorState [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> MetricsVisitorLogic [ label = \"10\" weight = \"10\" ];\nMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"1\" weight = \"1\" ];\nMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"1\" weight = \"1\" ];\nMetricsVisitorLogic -> MetricsVisitorState [ label = \"12\" weight = \"12\" ];\nMetricsVisitorLogic -> GraphMetricsCollector [ label = \"13\" weight = \"13\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"4\" weight = \"4\" ];\nMetricsVisitorLogic -> ClassMetrics [ label = \"28\" weight = \"28\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_OverridePredicate [ label = \"2\" weight = \"2\" ];\nMetricsVisitorLogic -> MethodMetrics [ label = \"31\" weight = \"31\" ];\nMetricsVisitorLogic -> ComplexityCalculator [ label = \"4\" weight = \"4\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"3\" weight = \"3\" ];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot -> ClassMetrics [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot -> MethodMetrics [ label = \"2\" weight = \"2\" ];\nMetricsVisitorState -> ClassMetrics [ label = \"1\" weight = \"1\" ];\nMetricsVisitorState -> MethodMetrics [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> DependencyVisitorState [ label = \"2\" weight = \"2\" ];\nAbstractDependencyVisitor -> DependencyCollector [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> org_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> BaseTypeProcessor [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> DependencyVisitorLogic [ label = \"14\" weight = \"14\" ];\nBaseTypeProcessor -> TypeDependencyExtractor [ label = \"3\" weight = \"3\" ];\nBaseTypeProcessor -> DependencyCollector [ label = \"3\" weight = \"3\" ];\nDependencyVisitorLogic -> DependencyVisitorState [ label = \"14\" weight = \"14\" ];\nDependencyVisitorLogic -> SourcePathResolver [ label = \"2\" weight = \"2\" ];\nDependencyVisitorLogic -> org_hjug_graphbuilder_visitor_DependencyVisitorLogic_ClassSnapshot [ label = \"3\" weight = \"3\" ];\nDependencyVisitorLogic -> UnattributedTypeFqnResolver [ label = \"1\" weight = \"1\" ];\nDependencyVisitorState -> BaseTypeProcessor [ label = \"2\" weight = \"2\" ];\nJavaVisitor -> AbstractDependencyVisitor [ label = \"2\" weight = \"2\" ];\nJavaVisitor -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> DependencyCollector [ label = \"7\" weight = \"7\" ];\nKotlinDependencyVisitor -> BaseTypeProcessor [ label = \"8\" weight = \"8\" ];\nKotlinDependencyVisitor -> DependencyVisitorState [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> org_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> DependencyVisitorLogic [ label = \"17\" weight = \"17\" ];\nCostBenefitCalculator -> GitLogReader [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> ChangePronenessRanker [ label = \"3\" weight = \"3\" ];\nCostBenefitCalculator -> CBORule [ label = \"1\" weight = \"1\" ];\nCostBenefitCalculator -> GodClass [ label = \"10\" weight = \"10\" ];\nCostBenefitCalculator -> ScmLogInfo [ label = \"16\" weight = \"16\" ];\nCostBenefitCalculator -> RankedDisharmony [ label = \"20\" weight = \"20\" ];\nCostBenefitCalculator -> CodebaseGraphDTO [ label = \"10\" weight = \"10\" ];\nCostBenefitCalculator -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> GodClassRanker [ label = \"6\" weight = \"6\" ];\nCostBenefitCalculator -> DisharmonyInstance [ label = \"11\" weight = \"11\" ];\nCostBenefitCalculator -> DisharmonyRanker [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"2\" weight = \"2\" ];\nCostBenefitCalculator -> Disharmony [ label = \"5\" weight = \"5\" ];\nCostBenefitCalculator -> CBOClass [ label = \"6\" weight = \"6\" ];\nCycleNode -> Disharmony [ label = \"1\" weight = \"1\" ];\nCycleNode -> ScmLogInfo [ label = \"1\" weight = \"1\" ];\nCycleRanker -> CodebaseGraphDTO [ label = \"2\" weight = \"2\" ];\nCycleRanker -> CompositeGraphBuilder [ label = \"3\" weight = \"3\" ];\nCycleRanker -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nCycleRanker -> RankedCycle [ label = \"7\" weight = \"7\" ];\nCycleRanker -> CircularReferenceChecker [ label = \"2\" weight = \"2\" ];\nCycleRanker -> CycleNode [ label = \"3\" weight = \"3\" ];\nRankedCycle -> CycleNode [ label = \"2\" weight = \"2\" ];\nRankedDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> GodClass [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> ScmLogInfo [ label = \"3\" weight = \"3\" ];\nRankedDisharmony -> CBOClass [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nCBOClass -> Disharmony [ label = \"1\" weight = \"1\" ];\nDisharmonyInstance -> Disharmony [ label = \"1\" weight = \"1\" ];\nDisharmonyInstance -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyRanker -> DisharmonyInstance [ label = \"7\" weight = \"7\" ];\nDisharmonyRanker -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyRanker -> org_hjug_metrics_DisharmonyRanker_ValueExtractor [ label = \"3\" weight = \"3\" ];\nDisharmonyRanker -> org_hjug_metrics_DisharmonyRanker_RankSetter [ label = \"3\" weight = \"3\" ];\nGodClass -> Disharmony [ label = \"1\" weight = \"1\" ];\nGodClassRanker -> GodClass [ label = \"18\" weight = \"18\" ];\nEdgeRemovalCalculator -> DSM [ label = \"4\" weight = \"4\" ];\nEdgeRemovalCalculator -> CircularReferenceChecker [ label = \"6\" weight = \"6\" ];\nEdgeRemovalCalculator -> EdgeToRemoveInfo [ label = \"7\" weight = \"7\" ];\nSparseIntDWGEdgeRemovalCalculator -> EdgeToRemoveInfo [ label = \"3\" weight = \"3\" ];\nFeedbackArcSetSolver -> org_hjug_feedback_arc_approximate_FeedbackArcSetResult [ label = \"2\" weight = \"2\" ];\nEdgeInfoCalculator -> EdgeInfo [ label = \"4\" weight = \"4\" ];\nMinimumFeedbackArcSetSolver -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nMinimumFeedbackArcSetSolver -> org_hjug_feedback_arc_exact_FeedbackArcSetResult [ label = \"2\" weight = \"2\" ];\nLineDigraph -> LineVertex [ label = \"68\" weight = \"68\" ];\nPageRankFAS -> SuperTypeToken [ label = \"3\" weight = \"3\" ];\nPageRankFAS -> LineDigraph [ label = \"13\" weight = \"13\" ];\nPageRankFAS -> LineVertex [ label = \"25\" weight = \"25\" ];\nCycleRemovalComputer -> CircularReferenceChecker [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> EnhancedParameterComputer [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> org_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [ label = \"4\" weight = \"4\" ];\nCycleRemovalComputer -> DirectedFeedbackVertexSetSolver [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> DirectedFeedbackVertexSetResult [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> PageRankFAS [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> CycleRemovalResult [ label = \"1\" weight = \"1\" ];\nFeedbackVertexSetSolver -> FeedbackVertexSetResult [ label = \"16\" weight = \"16\" ];\nFeedbackVertexSetSolver -> org_hjug_feedback_vertex_approximate_FeedbackVertexSetSolver_CutCandidate [ label = \"5\" weight = \"5\" ];\nDirectedFeedbackVertexSetSolver -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nDirectedFeedbackVertexSetSolver -> DirectedFeedbackVertexSetResult [ label = \"4\" weight = \"4\" ];\nDirectedFeedbackVertexSetSolver -> org_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathComputationStats [ label = \"4\" weight = \"4\" ];\nDirectedFeedbackVertexSetSolver -> org_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathContext [ label = \"1\" weight = \"1\" ];\nEnhancedParameterComputer -> TreewidthComputer [ label = \"6\" weight = \"6\" ];\nEnhancedParameterComputer -> FeedbackVertexSetComputer [ label = \"6\" weight = \"6\" ];\nEnhancedParameterComputer -> ModulatorComputer [ label = \"5\" weight = \"5\" ];\nEnhancedParameterComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nEnhancedParameterComputer -> org_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [ label = \"14\" weight = \"14\" ];\nEnhancedParameterComputer -> org_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [ label = \"6\" weight = \"6\" ];\nFeedbackVertexSetComputer -> SuperTypeToken [ label = \"4\" weight = \"4\" ];\nModulatorComputer -> TreewidthComputer [ label = \"14\" weight = \"14\" ];\nModulatorComputer -> FeedbackVertexSetComputer [ label = \"5\" weight = \"5\" ];\nModulatorComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nModulatorComputer -> org_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [ label = \"2\" weight = \"2\" ];\nParameterComputer -> TreewidthComputer [ label = \"7\" weight = \"7\" ];\nParameterComputer -> FeedbackVertexSetComputer [ label = \"6\" weight = \"6\" ];\nParameterComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nParameterComputer -> org_hjug_feedback_vertex_kernelized_ParameterComputer_Parameters [ label = \"4\" weight = \"4\" ];\nGraphDataGenerator -> RankedDisharmony [ label = \"2\" weight = \"2\" ];\nCsvReportTask -> RefactorFirstExtension [ label = \"8\" weight = \"8\" ];\nCsvReportTask -> CsvReport [ label = \"3\" weight = \"3\" ];\nCsvReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nHtmlReportTask -> RefactorFirstExtension [ label = \"13\" weight = \"13\" ];\nHtmlReportTask -> HtmlReport [ label = \"2\" weight = \"2\" ];\nHtmlReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nHtmlReportTask -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nJsonReportTask -> RefactorFirstExtension [ label = \"3\" weight = \"3\" ];\nJsonReportTask -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nJsonReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReportTask -> RefactorFirstExtension [ label = \"13\" weight = \"13\" ];\nSimpleHtmlReportTask -> SimpleHtmlReport [ label = \"3\" weight = \"3\" ];\nSimpleHtmlReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nMavenReportOutputDirectory -> ReportWriter [ label = \"1\" weight = \"1\" ];\nRefactorFirstHtmlReport -> HtmlReport [ label = \"2\" weight = \"2\" ];\nRefactorFirstHtmlReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstHtmlReport -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenCsvReport -> CsvReport [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenCsvReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenJsonGenerator -> JsonGenerator [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenJsonReport -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenJsonReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenReport -> HtmlReport [ label = \"2\" weight = \"2\" ];\nRefactorFirstMavenReport -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nRefactorFirstSimpleHtmlReport -> SimpleHtmlReport [ label = \"3\" weight = \"3\" ];\nRefactorFirstSimpleHtmlReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nCsvReport -> GitLogReader [ label = \"4\" weight = \"4\" ];\nCsvReport -> ReportWriter [ label = \"3\" weight = \"3\" ];\nCsvReport -> RankedDisharmony [ label = \"3\" weight = \"3\" ];\nCsvReport -> CostBenefitCalculator [ label = \"5\" weight = \"5\" ];\nHtmlReport -> SimpleHtmlReport [ label = \"9\" weight = \"9\" ];\nHtmlReport -> RankedDisharmony [ label = \"1\" weight = \"1\" ];\nHtmlReport -> GraphDataGenerator [ label = \"5\" weight = \"5\" ];\nHtmlReport -> CodebaseGraphDTO [ label = \"17\" weight = \"17\" ];\nHtmlReport -> RankedCycle [ label = \"3\" weight = \"3\" ];\nJsonReport -> JsonReportDisharmonyEntry [ label = \"1\" weight = \"1\" ];\nJsonReportDisharmonyEntry -> RankedDisharmony [ label = \"1\" weight = \"1\" ];\nJsonReportExecutor -> CostBenefitCalculator [ label = \"5\" weight = \"5\" ];\nJsonReportExecutor -> RankedDisharmony [ label = \"2\" weight = \"2\" ];\nJsonReportExecutor -> JsonReportDisharmonyEntry [ label = \"2\" weight = \"2\" ];\nJsonReportExecutor -> JsonReport [ label = \"3\" weight = \"3\" ];\nJsonReportExecutor -> ReportWriter [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> HtmlReport [ label = \"4\" weight = \"4\" ];\nJsonGenerator -> RefactorFirstReportDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> GitLogReader [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> CycleRanker [ label = \"5\" weight = \"5\" ];\nJsonGenerator -> RankedCycle [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> CodebaseGraphDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> CycleRemovalComputer [ label = \"4\" weight = \"4\" ];\nJsonGenerator -> CycleRemovalResult [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> RankedDisharmony [ label = \"10\" weight = \"10\" ];\nJsonGenerator -> CostBenefitCalculator [ label = \"6\" weight = \"6\" ];\nJsonGenerator -> org_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [ label = \"17\" weight = \"17\" ];\nJsonGenerator -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> SimpleHtmlReport [ label = \"31\" weight = \"31\" ];\nJsonGenerator -> ProjectMetadataDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> GraphVisualDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassRelationshipDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> PackageRelationshipDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> PackageRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> DisharmonySectionDTO [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> CycleSummaryDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> LargestCycleDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> CycleBreakdownRowDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassCyclesDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> ChartJsBubbleDTO [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> DisharmonyChartDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> DisharmonyMetric [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableRowDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableCellDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableDTO [ label = \"1\" weight = \"1\" ];\nClassCyclesDTO -> CycleSummaryDTO [ label = \"2\" weight = \"2\" ];\nClassCyclesDTO -> LargestCycleDTO [ label = \"1\" weight = \"1\" ];\nClassRelationshipsToRemoveDTO -> ClassRelationshipDTO [ label = \"2\" weight = \"2\" ];\nDisharmonyChartDTO -> ChartJsBubbleDTO [ label = \"2\" weight = \"2\" ];\nDisharmonySectionDTO -> DisharmonyChartDTO [ label = \"1\" weight = \"1\" ];\nDisharmonySectionDTO -> DisharmonyTableDTO [ label = \"1\" weight = \"1\" ];\nDisharmonyTableDTO -> DisharmonyTableRowDTO [ label = \"2\" weight = \"2\" ];\nDisharmonyTableRowDTO -> DisharmonyTableCellDTO [ label = \"2\" weight = \"2\" ];\nLargestCycleDTO -> CycleBreakdownRowDTO [ label = \"2\" weight = \"2\" ];\nPackageRelationshipsToRemoveDTO -> PackageRelationshipDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ProjectMetadataDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> GraphVisualDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ClassRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> PackageRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> DisharmonySectionDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ClassCyclesDTO [ label = \"1\" weight = \"1\" ];\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"3\" weight = \"3\" ];\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_ReportWriteException [ label = \"3\" weight = \"3\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> ReportWriter [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> org_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [ label = \"34\" weight = \"34\" ];\nSimpleHtmlReport -> ReportWriter [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> GitLogReader [ label = \"5\" weight = \"5\" ];\nSimpleHtmlReport -> CycleRanker [ label = \"5\" weight = \"5\" ];\nSimpleHtmlReport -> RankedCycle [ label = \"10\" weight = \"10\" ];\nSimpleHtmlReport -> CodebaseGraphDTO [ label = \"13\" weight = \"13\" ];\nSimpleHtmlReport -> CycleRemovalComputer [ label = \"4\" weight = \"4\" ];\nSimpleHtmlReport -> CycleRemovalResult [ label = \"2\" weight = \"2\" ];\nSimpleHtmlReport -> RankedDisharmony [ label = \"16\" weight = \"16\" ];\nSimpleHtmlReport -> CostBenefitCalculator [ label = \"6\" weight = \"6\" ];\nSimpleHtmlReport -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> DisharmonyMetric [ label = \"3\" weight = \"3\" ];\nConsole -> io_confluent_ksql_cli_console_Console_RowCaptor [ label = \"4\" weight = \"4\" ];\nConsole -> io_confluent_ksql_cli_console_Console_NoOpRowCaptor [ label = \"1\" weight = \"1\" ];\nConsole -> io_confluent_ksql_cli_console_Console_CliCmdExecutor [ label = \"4\" weight = \"4\" ];\nio_confluent_ksql_cli_console_Console_NoOpRowCaptor -> io_confluent_ksql_cli_console_Console_RowCaptor [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/AbstractDependencyVisitor.java\" target=\"_blank\" label=\"AbstractDependencyVisitor$1\"];\nCycleSummaryDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/CycleSummaryDTO.java\" target=\"_blank\" label=\"CycleSummaryDTO\"];\nJsonReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/json/JsonReport.java\" target=\"_blank\" label=\"JsonReport\"];\nDisharmonyTableCellDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/DisharmonyTableCellDTO.java\" target=\"_blank\" label=\"DisharmonyTableCellDTO\"];\nEdgeRemovalCalculator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/EdgeRemovalCalculator.java\" target=\"_blank\" label=\"EdgeRemovalCalculator\"];\nSimpleHtmlReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java\" target=\"_blank\" label=\"SimpleHtmlReport\"];\nLineDigraph [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/pageRank/LineDigraph.java\" target=\"_blank\" label=\"LineDigraph\"];\nCsvReportTask [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/CsvReportTask.java\" target=\"_blank\" label=\"CsvReportTask\"];\nRefactorFirstExtension [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/RefactorFirstExtension.java\" target=\"_blank\" label=\"RefactorFirstExtension\"];\norg_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java\" target=\"_blank\" label=\"SimpleHtmlReport$DisharmonySpec\"];\nGraphMetricsCollector [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/GraphMetricsCollector.java\" target=\"_blank\" label=\"GraphMetricsCollector\"];\nDisharmonyInstance [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/DisharmonyInstance.java\" target=\"_blank\" label=\"DisharmonyInstance\"];\norg_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathContext [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java\" target=\"_blank\" label=\"DirectedFeedbackVertexSetSolver$PathContext\"];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java\" target=\"_blank\" label=\"MetricsVisitorLogic$ClassStateSnapshot\"];\nDisharmonySectionDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/DisharmonySectionDTO.java\" target=\"_blank\" label=\"DisharmonySectionDTO\"];\nMavenReportOutputDirectory [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/MavenReportOutputDirectory.java\" target=\"_blank\" label=\"MavenReportOutputDirectory\"];\nPackageRelationshipsToRemoveDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/PackageRelationshipsToRemoveDTO.java\" target=\"_blank\" label=\"PackageRelationshipsToRemoveDTO\"];\nCompositeGraphBuilder [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java\" target=\"_blank\" label=\"CompositeGraphBuilder\"];\nPackageRelationshipDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/PackageRelationshipDTO.java\" target=\"_blank\" label=\"PackageRelationshipDTO\"];\nMetricsCollectingVisitor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsCollectingVisitor.java\" target=\"_blank\" label=\"MetricsCollectingVisitor\"];\nKotlinSourceFileGraphBuilder [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/KotlinSourceFileGraphBuilder.java\" target=\"_blank\" label=\"KotlinSourceFileGraphBuilder\"];\nMethodMetrics [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MethodMetrics.java\" target=\"_blank\" label=\"MethodMetrics\"];\nCodebaseGraphDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CodebaseGraphDTO.java\" target=\"_blank\" label=\"CodebaseGraphDTO\"];\nRankedDisharmony [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cost-benefit-calculator/src/main/java/org/hjug/cbc/RankedDisharmony.java\" target=\"_blank\" label=\"RankedDisharmony\"];\nFeedbackVertexSetResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetResult.java\" target=\"_blank\" label=\"FeedbackVertexSetResult\"];\nRefactorFirstMavenJsonReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenJsonReport.java\" target=\"_blank\" label=\"RefactorFirstMavenJsonReport\"];\nCycleRemovalComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/CycleRemovalComputer.java\" target=\"_blank\" label=\"CycleRemovalComputer\"];\nJsonReportTask [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/JsonReportTask.java\" target=\"_blank\" label=\"JsonReportTask\"];\nDSM [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/DSM.java\" target=\"_blank\" label=\"DSM\"];\nJsonReportDisharmonyEntry [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/json/JsonReportDisharmonyEntry.java\" target=\"_blank\" label=\"JsonReportDisharmonyEntry\"];\norg_hjug_graphbuilder_metrics_DisharmonyMetric_Direction [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyMetric.java\" target=\"_blank\" label=\"DisharmonyMetric$Direction\"];\nio_confluent_ksql_cli_console_Console_RowCaptor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/Console.java\" target=\"_blank\" label=\"Console$RowCaptor\"];\nCycleBreakdownRowDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/CycleBreakdownRowDTO.java\" target=\"_blank\" label=\"CycleBreakdownRowDTO\"];\nDisharmonyDetector [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector\"];\nCircularReferenceChecker [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/CircularReferenceChecker.java\" target=\"_blank\" label=\"CircularReferenceChecker\"];\nFeedbackArcSetSolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/approximate/FeedbackArcSetSolver.java\" target=\"_blank\" label=\"FeedbackArcSetSolver\"];\nCycleRemovalResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/CycleRemovalResult.java\" target=\"_blank\" label=\"CycleRemovalResult\"];\norg_hjug_refactorfirst_report_ReportWriter_ReportWriteException [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$ReportWriteException\"];\nAbstractDependencyVisitor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/AbstractDependencyVisitor.java\" target=\"_blank\" label=\"AbstractDependencyVisitor\"];\nJava25ParserFactory [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/Java25ParserFactory.java\" target=\"_blank\" label=\"Java25ParserFactory\"];\nProjectMetadataDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/ProjectMetadataDTO.java\" target=\"_blank\" label=\"ProjectMetadataDTO\"];\norg_hjug_feedback_vertex_kernelized_ParameterComputer_Parameters [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ParameterComputer.java\" target=\"_blank\" label=\"ParameterComputer$Parameters\"];\nLargestCycleDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/LargestCycleDTO.java\" target=\"_blank\" label=\"LargestCycleDTO\"];\nRankedCycle [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cost-benefit-calculator/src/main/java/org/hjug/cbc/RankedCycle.java\" target=\"_blank\" label=\"RankedCycle\"];\nClassRelationshipDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/ClassRelationshipDTO.java\" target=\"_blank\" label=\"ClassRelationshipDTO\"];\nDisharmonyRanker [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/DisharmonyRanker.java\" target=\"_blank\" label=\"DisharmonyRanker\"];\norg_hjug_git_GitLogReader_CommitWalkStats [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/change-proneness-ranker/src/main/java/org/hjug/git/GitLogReader.java\" target=\"_blank\" label=\"GitLogReader$CommitWalkStats\"];\nGraphVisualDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/GraphVisualDTO.java\" target=\"_blank\" label=\"GraphVisualDTO\"];\nDisharmonyTableRowDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/DisharmonyTableRowDTO.java\" target=\"_blank\" label=\"DisharmonyTableRowDTO\"];\nChangePronenessRanker [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/change-proneness-ranker/src/main/java/org/hjug/git/ChangePronenessRanker.java\" target=\"_blank\" label=\"ChangePronenessRanker\"];\nScmLogInfo [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/change-proneness-ranker/src/main/java/org/hjug/git/ScmLogInfo.java\" target=\"_blank\" label=\"ScmLogInfo\"];\nKotlinMetricsCollectingVisitor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/KotlinMetricsCollectingVisitor.java\" target=\"_blank\" label=\"KotlinMetricsCollectingVisitor\"];\nEdgeToRemoveInfo [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/EdgeToRemoveInfo.java\" target=\"_blank\" label=\"EdgeToRemoveInfo\"];\nDirectedFeedbackVertexSetSolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java\" target=\"_blank\" label=\"DirectedFeedbackVertexSetSolver\"];\nGraphBuilderConfig [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/GraphBuilderConfig.java\" target=\"_blank\" label=\"GraphBuilderConfig\"];\nMinimumFeedbackArcSetSolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java\" target=\"_blank\" label=\"MinimumFeedbackArcSetSolver\"];\norg_hjug_graphbuilder_visitor_DependencyVisitorLogic_ClassSnapshot [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/DependencyVisitorLogic.java\" target=\"_blank\" label=\"DependencyVisitorLogic$ClassSnapshot\"];\nRefactorFirstMavenReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenReport.java\" target=\"_blank\" label=\"RefactorFirstMavenReport\"];\nEdgeInfoCalculator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/EdgeInfoCalculator.java\" target=\"_blank\" label=\"EdgeInfoCalculator\"];\nRefactorFirstMavenJsonGenerator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenJsonGenerator.java\" target=\"_blank\" label=\"RefactorFirstMavenJsonGenerator\"];\nCycleRanker [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cost-benefit-calculator/src/main/java/org/hjug/cbc/CycleRanker.java\" target=\"_blank\" label=\"CycleRanker\"];\nReportCommand [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cli/src/main/java/org/hjug/refactorfirst/ReportCommand.java\" target=\"_blank\" label=\"ReportCommand\"];\nDisharmonyChartDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/DisharmonyChartDTO.java\" target=\"_blank\" label=\"DisharmonyChartDTO\"];\nRefactorFirstPlugin [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/RefactorFirstPlugin.java\" target=\"_blank\" label=\"RefactorFirstPlugin\"];\nDependencyCollector [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/DependencyCollector.java\" target=\"_blank\" label=\"DependencyCollector\"];\nCostBenefitCalculator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cost-benefit-calculator/src/main/java/org/hjug/cbc/CostBenefitCalculator.java\" target=\"_blank\" label=\"CostBenefitCalculator\"];\nEdgeInfo [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/EdgeInfo.java\" target=\"_blank\" label=\"EdgeInfo\"];\nGitLogReader [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/change-proneness-ranker/src/main/java/org/hjug/git/GitLogReader.java\" target=\"_blank\" label=\"GitLogReader\"];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_OverridePredicate [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java\" target=\"_blank\" label=\"MetricsVisitorLogic$OverridePredicate\"];\nGraphDependencyCollector [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/GraphDependencyCollector.java\" target=\"_blank\" label=\"GraphDependencyCollector\"];\nDependencyVisitorLogic [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/DependencyVisitorLogic.java\" target=\"_blank\" label=\"DependencyVisitorLogic\"];\nDisharmony [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/Disharmony.java\" target=\"_blank\" label=\"Disharmony\"];\nio_confluent_ksql_cli_console_Console_NoOpRowCaptor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/Console.java\" target=\"_blank\" label=\"Console$NoOpRowCaptor\"];\nClassMetrics [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/ClassMetrics.java\" target=\"_blank\" label=\"ClassMetrics\"];\nSparseIntDWGEdgeRemovalCalculator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/SparseIntDWGEdgeRemovalCalculator.java\" target=\"_blank\" label=\"SparseIntDWGEdgeRemovalCalculator\"];\nRefactorFirstSimpleHtmlReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstSimpleHtmlReport.java\" target=\"_blank\" label=\"RefactorFirstSimpleHtmlReport\"];\nClassRelationshipsToRemoveDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/ClassRelationshipsToRemoveDTO.java\" target=\"_blank\" label=\"ClassRelationshipsToRemoveDTO\"];\nCsvReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/CsvReport.java\" target=\"_blank\" label=\"CsvReport\"];\nDisharmonyTableDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/DisharmonyTableDTO.java\" target=\"_blank\" label=\"DisharmonyTableDTO\"];\nJsonGenerator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java\" target=\"_blank\" label=\"JsonGenerator\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_FlaggedClassData [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector$FlaggedClassData\"];\norg_hjug_metrics_DisharmonyRanker_RankSetter [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/DisharmonyRanker.java\" target=\"_blank\" label=\"DisharmonyRanker$RankSetter\"];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$SecureDirectoryOps\"];\nChartJsBubbleDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/ChartJsBubbleDTO.java\" target=\"_blank\" label=\"ChartJsBubbleDTO\"];\nHtmlReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java\" target=\"_blank\" label=\"HtmlReport\"];\nDisharmonyMetric [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyMetric.java\" target=\"_blank\" label=\"DisharmonyMetric\"];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java\" target=\"_blank\" label=\"MetricsVisitorLogic$MethodStateSnapshot\"];\norg_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathComputationStats [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java\" target=\"_blank\" label=\"DirectedFeedbackVertexSetSolver$PathComputationStats\"];\nLineVertex [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/pageRank/PageRankFAS.java\" target=\"_blank\" label=\"LineVertex\"];\norg_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java\" target=\"_blank\" label=\"ModulatorComputer$ModulatorResult\"];\nGodClass [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/GodClass.java\" target=\"_blank\" label=\"GodClass\"];\nDirectedFeedbackVertexSetResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetResult.java\" target=\"_blank\" label=\"DirectedFeedbackVertexSetResult\"];\nRefactorFirstReportDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/RefactorFirstReportDTO.java\" target=\"_blank\" label=\"RefactorFirstReportDTO\"];\nio_confluent_ksql_cli_console_Console_CliCmdExecutor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/Console.java\" target=\"_blank\" label=\"Console$CliCmdExecutor\"];\nKotlinDependencyVisitor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/KotlinDependencyVisitor.java\" target=\"_blank\" label=\"KotlinDependencyVisitor\"];\norg_hjug_feedback_vertex_approximate_FeedbackVertexSetSolver_CutCandidate [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java\" target=\"_blank\" label=\"FeedbackVertexSetSolver$CutCandidate\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_Clone [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector$Clone\"];\nCBOClass [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/CBOClass.java\" target=\"_blank\" label=\"CBOClass\"];\nMain [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cli/src/main/java/org/hjug/refactorfirst/Main.java\" target=\"_blank\" label=\"Main\"];\nJavaSourceFileGraphBuilder [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/JavaSourceFileGraphBuilder.java\" target=\"_blank\" label=\"JavaSourceFileGraphBuilder\"];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$SecureDirectoryOpsImpl\"];\nGodClassRanker [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/GodClassRanker.java\" target=\"_blank\" label=\"GodClassRanker\"];\norg_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/KotlinDependencyVisitor.java\" target=\"_blank\" label=\"KotlinDependencyVisitor$1\"];\norg_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/EnhancedParameterComputer.java\" target=\"_blank\" label=\"EnhancedParameterComputer$EnhancedParameters\"];\nConsole [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/Console.java\" target=\"_blank\" label=\"Console\"];\nCycleNode [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cost-benefit-calculator/src/main/java/org/hjug/cbc/CycleNode.java\" target=\"_blank\" label=\"CycleNode\"];\nFeedbackVertexSetComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/FeedbackVertexSetComputer.java\" target=\"_blank\" label=\"FeedbackVertexSetComputer\"];\nCBORule [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/rules/CBORule.java\" target=\"_blank\" label=\"CBORule\"];\nReportType [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/cli/src/main/java/org/hjug/refactorfirst/ReportType.java\" target=\"_blank\" label=\"ReportType\"];\nParameterComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ParameterComputer.java\" target=\"_blank\" label=\"ParameterComputer\"];\nComplexityCalculator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/ComplexityCalculator.java\" target=\"_blank\" label=\"ComplexityCalculator\"];\nRefactorFirstMavenCsvReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenCsvReport.java\" target=\"_blank\" label=\"RefactorFirstMavenCsvReport\"];\nReportWriter [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter\" color=red style=filled];\nMetricsVisitorLogic [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java\" target=\"_blank\" label=\"MetricsVisitorLogic\"];\norg_hjug_metrics_DisharmonyRanker_ValueExtractor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/effort-ranker/src/main/java/org/hjug/metrics/DisharmonyRanker.java\" target=\"_blank\" label=\"DisharmonyRanker$ValueExtractor\"];\nMetricsVisitorState [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorState.java\" target=\"_blank\" label=\"MetricsVisitorState\"];\nTypeDependencyExtractor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/TypeDependencyExtractor.java\" target=\"_blank\" label=\"TypeDependencyExtractor\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector$ClassDisharmony\"];\nHtmlReportTask [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/HtmlReportTask.java\" target=\"_blank\" label=\"HtmlReportTask\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector$MethodEntry\"];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$FallbackDirectoryOps\"];\norg_hjug_feedback_arc_approximate_FeedbackArcSetResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/approximate/FeedbackArcSetResult.java\" target=\"_blank\" label=\"FeedbackArcSetResult\"];\nJavaVisitor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/JavaVisitor.java\" target=\"_blank\" label=\"JavaVisitor\"];\nJsonReportExecutor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/json/JsonReportExecutor.java\" target=\"_blank\" label=\"JsonReportExecutor\"];\nBaseTypeProcessor [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/BaseTypeProcessor.java\" target=\"_blank\" label=\"BaseTypeProcessor\"];\nEnhancedParameterComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/EnhancedParameterComputer.java\" target=\"_blank\" label=\"EnhancedParameterComputer\"];\nFeedbackVertexSetSolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java\" target=\"_blank\" label=\"FeedbackVertexSetSolver\"];\nGraphDataGenerator [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-data-generator/src/main/java/org/hjug/gdg/GraphDataGenerator.java\" target=\"_blank\" label=\"GraphDataGenerator\"];\nDependencyVisitorState [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/DependencyVisitorState.java\" target=\"_blank\" label=\"DependencyVisitorState\"];\norg_hjug_feedback_arc_exact_FeedbackArcSetResult [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/FeedbackArcSetResult.java\" target=\"_blank\" label=\"FeedbackArcSetResult\"];\nUnattributedTypeFqnResolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/UnattributedTypeFqnResolver.java\" target=\"_blank\" label=\"UnattributedTypeFqnResolver\"];\nSourceFileGraphBuilder [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/SourceFileGraphBuilder.java\" target=\"_blank\" label=\"SourceFileGraphBuilder\"];\nSuperTypeToken [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/SuperTypeToken.java\" target=\"_blank\" label=\"SuperTypeToken\"];\nPageRankFAS [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/pageRank/PageRankFAS.java\" target=\"_blank\" label=\"PageRankFAS\"];\nSourcePathResolver [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/SourcePathResolver.java\" target=\"_blank\" label=\"SourcePathResolver\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java\" target=\"_blank\" label=\"DisharmonyDetector$MethodDisharmony\"];\nSimpleHtmlReportTask [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/SimpleHtmlReportTask.java\" target=\"_blank\" label=\"SimpleHtmlReportTask\"];\nRefactorFirstHtmlReport [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstHtmlReport.java\" target=\"_blank\" label=\"RefactorFirstHtmlReport\"];\nClassCyclesDTO [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/model/ClassCyclesDTO.java\" target=\"_blank\" label=\"ClassCyclesDTO\"];\nTreewidthComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java\" target=\"_blank\" label=\"TreewidthComputer\"];\nModulatorComputer [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java\" target=\"_blank\" label=\"ModulatorComputer\"];\n}", + "dot" : "strict digraph G {\nChangePronenessRanker -> ScmLogInfo [ label = \"5\" weight = \"5\" ];\nChangePronenessRanker -> GitLogReader [ label = \"2\" weight = \"2\" ];\nGitLogReader -> org_hjug_git_GitLogReader_CommitWalkStats [ label = \"4\" weight = \"4\" ];\nGitLogReader -> ScmLogInfo [ label = \"3\" weight = \"3\" ];\nMain -> ReportCommand [ label = \"1\" weight = \"1\" ];\nReportCommand -> ReportType [ label = \"1\" weight = \"1\" ];\nReportCommand -> ReportWriter [ label = \"1\" weight = \"1\" ];\nReportCommand -> SimpleHtmlReport [ label = \"4\" weight = \"4\" ];\nReportCommand -> HtmlReport [ label = \"2\" weight = \"2\" ];\nReportCommand -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nReportCommand -> CsvReport [ label = \"3\" weight = \"3\" ];\nCodebaseGraphDTO -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"4\" weight = \"4\" ];\nCodebaseGraphDTO -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"4\" weight = \"4\" ];\nCompositeGraphBuilder -> GraphBuilderConfig [ label = \"4\" weight = \"4\" ];\nCompositeGraphBuilder -> CodebaseGraphDTO [ label = \"10\" weight = \"10\" ];\nCompositeGraphBuilder -> JavaSourceFileGraphBuilder [ label = \"3\" weight = \"3\" ];\nCompositeGraphBuilder -> KotlinSourceFileGraphBuilder [ label = \"3\" weight = \"3\" ];\nCompositeGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"2\" weight = \"2\" ];\nCompositeGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> SourceFileGraphBuilder [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> GraphDependencyCollector [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> JavaVisitor [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> GraphMetricsCollector [ label = \"5\" weight = \"5\" ];\nJavaSourceFileGraphBuilder -> MetricsCollectingVisitor [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> AbstractDependencyVisitor [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"2\" weight = \"2\" ];\nJavaSourceFileGraphBuilder -> Java25ParserFactory [ label = \"1\" weight = \"1\" ];\nJavaSourceFileGraphBuilder -> DisharmonyDetector [ label = \"18\" weight = \"18\" ];\nJavaSourceFileGraphBuilder -> ClassMetrics [ label = \"3\" weight = \"3\" ];\nJavaSourceFileGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"3\" weight = \"3\" ];\nJavaSourceFileGraphBuilder -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"3\" weight = \"3\" ];\nKotlinSourceFileGraphBuilder -> SourceFileGraphBuilder [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> GraphDependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> KotlinDependencyVisitor [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> GraphMetricsCollector [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> KotlinMetricsCollectingVisitor [ label = \"2\" weight = \"2\" ];\nKotlinSourceFileGraphBuilder -> JavaSourceFileGraphBuilder [ label = \"1\" weight = \"1\" ];\nKotlinSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"1\" weight = \"1\" ];\nSourceFileGraphBuilder -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nSourceFileGraphBuilder -> CodebaseGraphDTO [ label = \"1\" weight = \"1\" ];\nGraphDependencyCollector -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nClassMetrics -> MethodMetrics [ label = \"13\" weight = \"13\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony -> ClassMetrics [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony -> MethodMetrics [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyDetector -> ClassMetrics [ label = \"99\" weight = \"99\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"30\" weight = \"30\" ];\nDisharmonyDetector -> DisharmonyMetric [ label = \"44\" weight = \"44\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"15\" weight = \"15\" ];\nDisharmonyDetector -> MethodMetrics [ label = \"40\" weight = \"40\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry [ label = \"5\" weight = \"5\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_FlaggedClassData [ label = \"10\" weight = \"10\" ];\nDisharmonyDetector -> org_hjug_graphbuilder_metrics_DisharmonyDetector_Clone [ label = \"20\" weight = \"20\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry -> ClassMetrics [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry -> MethodMetrics [ label = \"2\" weight = \"2\" ];\nDisharmonyMetric -> org_hjug_graphbuilder_metrics_DisharmonyMetric_Direction [ label = \"1\" weight = \"1\" ];\nGraphMetricsCollector -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nGraphMetricsCollector -> ClassMetrics [ label = \"33\" weight = \"33\" ];\nGraphMetricsCollector -> MethodMetrics [ label = \"10\" weight = \"10\" ];\nKotlinMetricsCollectingVisitor -> GraphMetricsCollector [ label = \"2\" weight = \"2\" ];\nKotlinMetricsCollectingVisitor -> MetricsVisitorState [ label = \"2\" weight = \"2\" ];\nKotlinMetricsCollectingVisitor -> MetricsVisitorLogic [ label = \"17\" weight = \"17\" ];\nKotlinMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"1\" weight = \"1\" ];\nKotlinMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"1\" weight = \"1\" ];\nKotlinMetricsCollectingVisitor -> ClassMetrics [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> GraphMetricsCollector [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> MetricsVisitorState [ label = \"2\" weight = \"2\" ];\nMetricsCollectingVisitor -> MetricsVisitorLogic [ label = \"10\" weight = \"10\" ];\nMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"1\" weight = \"1\" ];\nMetricsCollectingVisitor -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"1\" weight = \"1\" ];\nMetricsVisitorLogic -> MetricsVisitorState [ label = \"12\" weight = \"12\" ];\nMetricsVisitorLogic -> GraphMetricsCollector [ label = \"13\" weight = \"13\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label = \"4\" weight = \"4\" ];\nMetricsVisitorLogic -> ClassMetrics [ label = \"28\" weight = \"28\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_OverridePredicate [ label = \"2\" weight = \"2\" ];\nMetricsVisitorLogic -> MethodMetrics [ label = \"31\" weight = \"31\" ];\nMetricsVisitorLogic -> ComplexityCalculator [ label = \"4\" weight = \"4\" ];\nMetricsVisitorLogic -> org_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label = \"3\" weight = \"3\" ];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot -> ClassMetrics [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot -> MethodMetrics [ label = \"2\" weight = \"2\" ];\nMetricsVisitorState -> ClassMetrics [ label = \"1\" weight = \"1\" ];\nMetricsVisitorState -> MethodMetrics [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> DependencyVisitorState [ label = \"2\" weight = \"2\" ];\nAbstractDependencyVisitor -> DependencyCollector [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> org_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> BaseTypeProcessor [ label = \"1\" weight = \"1\" ];\nAbstractDependencyVisitor -> DependencyVisitorLogic [ label = \"14\" weight = \"14\" ];\nBaseTypeProcessor -> TypeDependencyExtractor [ label = \"3\" weight = \"3\" ];\nBaseTypeProcessor -> DependencyCollector [ label = \"3\" weight = \"3\" ];\nDependencyVisitorLogic -> DependencyVisitorState [ label = \"14\" weight = \"14\" ];\nDependencyVisitorLogic -> SourcePathResolver [ label = \"2\" weight = \"2\" ];\nDependencyVisitorLogic -> org_hjug_graphbuilder_visitor_DependencyVisitorLogic_ClassSnapshot [ label = \"3\" weight = \"3\" ];\nDependencyVisitorLogic -> UnattributedTypeFqnResolver [ label = \"1\" weight = \"1\" ];\nDependencyVisitorState -> BaseTypeProcessor [ label = \"2\" weight = \"2\" ];\nJavaVisitor -> AbstractDependencyVisitor [ label = \"2\" weight = \"2\" ];\nJavaVisitor -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> DependencyCollector [ label = \"7\" weight = \"7\" ];\nKotlinDependencyVisitor -> BaseTypeProcessor [ label = \"8\" weight = \"8\" ];\nKotlinDependencyVisitor -> DependencyVisitorState [ label = \"2\" weight = \"2\" ];\norg_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 -> DependencyCollector [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> org_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 [ label = \"1\" weight = \"1\" ];\nKotlinDependencyVisitor -> DependencyVisitorLogic [ label = \"17\" weight = \"17\" ];\nCostBenefitCalculator -> GitLogReader [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> ChangePronenessRanker [ label = \"3\" weight = \"3\" ];\nCostBenefitCalculator -> CBORule [ label = \"1\" weight = \"1\" ];\nCostBenefitCalculator -> GodClass [ label = \"10\" weight = \"10\" ];\nCostBenefitCalculator -> ScmLogInfo [ label = \"16\" weight = \"16\" ];\nCostBenefitCalculator -> RankedDisharmony [ label = \"20\" weight = \"20\" ];\nCostBenefitCalculator -> CodebaseGraphDTO [ label = \"10\" weight = \"10\" ];\nCostBenefitCalculator -> org_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> GodClassRanker [ label = \"6\" weight = \"6\" ];\nCostBenefitCalculator -> DisharmonyInstance [ label = \"11\" weight = \"11\" ];\nCostBenefitCalculator -> DisharmonyRanker [ label = \"4\" weight = \"4\" ];\nCostBenefitCalculator -> org_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label = \"2\" weight = \"2\" ];\nCostBenefitCalculator -> Disharmony [ label = \"5\" weight = \"5\" ];\nCostBenefitCalculator -> CBOClass [ label = \"6\" weight = \"6\" ];\nCycleNode -> Disharmony [ label = \"1\" weight = \"1\" ];\nCycleNode -> ScmLogInfo [ label = \"1\" weight = \"1\" ];\nCycleRanker -> CodebaseGraphDTO [ label = \"2\" weight = \"2\" ];\nCycleRanker -> CompositeGraphBuilder [ label = \"3\" weight = \"3\" ];\nCycleRanker -> GraphBuilderConfig [ label = \"1\" weight = \"1\" ];\nCycleRanker -> RankedCycle [ label = \"7\" weight = \"7\" ];\nCycleRanker -> CircularReferenceChecker [ label = \"2\" weight = \"2\" ];\nCycleRanker -> CycleNode [ label = \"3\" weight = \"3\" ];\nRankedCycle -> CycleNode [ label = \"2\" weight = \"2\" ];\nRankedDisharmony -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> GodClass [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> ScmLogInfo [ label = \"3\" weight = \"3\" ];\nRankedDisharmony -> CBOClass [ label = \"1\" weight = \"1\" ];\nRankedDisharmony -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nCBOClass -> Disharmony [ label = \"1\" weight = \"1\" ];\nDisharmonyInstance -> Disharmony [ label = \"1\" weight = \"1\" ];\nDisharmonyInstance -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyRanker -> DisharmonyInstance [ label = \"7\" weight = \"7\" ];\nDisharmonyRanker -> DisharmonyMetric [ label = \"1\" weight = \"1\" ];\nDisharmonyRanker -> org_hjug_metrics_DisharmonyRanker_ValueExtractor [ label = \"3\" weight = \"3\" ];\nDisharmonyRanker -> org_hjug_metrics_DisharmonyRanker_RankSetter [ label = \"3\" weight = \"3\" ];\nGodClass -> Disharmony [ label = \"1\" weight = \"1\" ];\nGodClassRanker -> GodClass [ label = \"18\" weight = \"18\" ];\nEdgeRemovalCalculator -> DSM [ label = \"4\" weight = \"4\" ];\nEdgeRemovalCalculator -> CircularReferenceChecker [ label = \"6\" weight = \"6\" ];\nEdgeRemovalCalculator -> EdgeToRemoveInfo [ label = \"7\" weight = \"7\" ];\nSparseIntDWGEdgeRemovalCalculator -> EdgeToRemoveInfo [ label = \"3\" weight = \"3\" ];\nFeedbackArcSetSolver -> org_hjug_feedback_arc_approximate_FeedbackArcSetResult [ label = \"2\" weight = \"2\" ];\nEdgeInfoCalculator -> EdgeInfo [ label = \"4\" weight = \"4\" ];\nMinimumFeedbackArcSetSolver -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nMinimumFeedbackArcSetSolver -> org_hjug_feedback_arc_exact_FeedbackArcSetResult [ label = \"2\" weight = \"2\" ];\nLineDigraph -> LineVertex [ label = \"68\" weight = \"68\" ];\nPageRankFAS -> SuperTypeToken [ label = \"3\" weight = \"3\" ];\nPageRankFAS -> LineDigraph [ label = \"13\" weight = \"13\" ];\nPageRankFAS -> LineVertex [ label = \"25\" weight = \"25\" ];\nCycleRemovalComputer -> CircularReferenceChecker [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> EnhancedParameterComputer [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> org_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [ label = \"4\" weight = \"4\" ];\nCycleRemovalComputer -> DirectedFeedbackVertexSetSolver [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> DirectedFeedbackVertexSetResult [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> PageRankFAS [ label = \"2\" weight = \"2\" ];\nCycleRemovalComputer -> CycleRemovalResult [ label = \"1\" weight = \"1\" ];\nFeedbackVertexSetSolver -> FeedbackVertexSetResult [ label = \"16\" weight = \"16\" ];\nFeedbackVertexSetSolver -> org_hjug_feedback_vertex_approximate_FeedbackVertexSetSolver_CutCandidate [ label = \"5\" weight = \"5\" ];\nDirectedFeedbackVertexSetSolver -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nDirectedFeedbackVertexSetSolver -> DirectedFeedbackVertexSetResult [ label = \"4\" weight = \"4\" ];\nDirectedFeedbackVertexSetSolver -> org_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathComputationStats [ label = \"4\" weight = \"4\" ];\nDirectedFeedbackVertexSetSolver -> org_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathContext [ label = \"1\" weight = \"1\" ];\nEnhancedParameterComputer -> TreewidthComputer [ label = \"6\" weight = \"6\" ];\nEnhancedParameterComputer -> FeedbackVertexSetComputer [ label = \"6\" weight = \"6\" ];\nEnhancedParameterComputer -> ModulatorComputer [ label = \"5\" weight = \"5\" ];\nEnhancedParameterComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nEnhancedParameterComputer -> org_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [ label = \"14\" weight = \"14\" ];\nEnhancedParameterComputer -> org_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [ label = \"6\" weight = \"6\" ];\nFeedbackVertexSetComputer -> SuperTypeToken [ label = \"4\" weight = \"4\" ];\nModulatorComputer -> TreewidthComputer [ label = \"14\" weight = \"14\" ];\nModulatorComputer -> FeedbackVertexSetComputer [ label = \"5\" weight = \"5\" ];\nModulatorComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nModulatorComputer -> org_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [ label = \"2\" weight = \"2\" ];\nParameterComputer -> TreewidthComputer [ label = \"7\" weight = \"7\" ];\nParameterComputer -> FeedbackVertexSetComputer [ label = \"6\" weight = \"6\" ];\nParameterComputer -> SuperTypeToken [ label = \"2\" weight = \"2\" ];\nParameterComputer -> org_hjug_feedback_vertex_kernelized_ParameterComputer_Parameters [ label = \"4\" weight = \"4\" ];\nGraphDataGenerator -> RankedDisharmony [ label = \"2\" weight = \"2\" ];\nCsvReportTask -> RefactorFirstExtension [ label = \"8\" weight = \"8\" ];\nCsvReportTask -> CsvReport [ label = \"3\" weight = \"3\" ];\nCsvReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nHtmlReportTask -> RefactorFirstExtension [ label = \"13\" weight = \"13\" ];\nHtmlReportTask -> HtmlReport [ label = \"2\" weight = \"2\" ];\nHtmlReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nHtmlReportTask -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nJsonReportTask -> RefactorFirstExtension [ label = \"3\" weight = \"3\" ];\nJsonReportTask -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nJsonReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReportTask -> RefactorFirstExtension [ label = \"13\" weight = \"13\" ];\nSimpleHtmlReportTask -> SimpleHtmlReport [ label = \"3\" weight = \"3\" ];\nSimpleHtmlReportTask -> RefactorFirstPlugin [ label = \"1\" weight = \"1\" ];\nMavenReportOutputDirectory -> ReportWriter [ label = \"1\" weight = \"1\" ];\nRefactorFirstHtmlReport -> HtmlReport [ label = \"2\" weight = \"2\" ];\nRefactorFirstHtmlReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstHtmlReport -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenCsvReport -> CsvReport [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenCsvReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenJsonGenerator -> JsonGenerator [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenJsonReport -> JsonReportExecutor [ label = \"3\" weight = \"3\" ];\nRefactorFirstMavenJsonReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nRefactorFirstMavenReport -> HtmlReport [ label = \"2\" weight = \"2\" ];\nRefactorFirstMavenReport -> SimpleHtmlReport [ label = \"1\" weight = \"1\" ];\nRefactorFirstSimpleHtmlReport -> SimpleHtmlReport [ label = \"3\" weight = \"3\" ];\nRefactorFirstSimpleHtmlReport -> MavenReportOutputDirectory [ label = \"1\" weight = \"1\" ];\nCsvReport -> GitLogReader [ label = \"4\" weight = \"4\" ];\nCsvReport -> ReportWriter [ label = \"3\" weight = \"3\" ];\nCsvReport -> RankedDisharmony [ label = \"3\" weight = \"3\" ];\nCsvReport -> CostBenefitCalculator [ label = \"5\" weight = \"5\" ];\nHtmlReport -> SimpleHtmlReport [ label = \"9\" weight = \"9\" ];\nHtmlReport -> RankedDisharmony [ label = \"1\" weight = \"1\" ];\nHtmlReport -> GraphDataGenerator [ label = \"5\" weight = \"5\" ];\nHtmlReport -> CodebaseGraphDTO [ label = \"17\" weight = \"17\" ];\nHtmlReport -> RankedCycle [ label = \"3\" weight = \"3\" ];\nJsonReport -> JsonReportDisharmonyEntry [ label = \"1\" weight = \"1\" ];\nJsonReportDisharmonyEntry -> RankedDisharmony [ label = \"1\" weight = \"1\" ];\nJsonReportExecutor -> CostBenefitCalculator [ label = \"5\" weight = \"5\" ];\nJsonReportExecutor -> RankedDisharmony [ label = \"2\" weight = \"2\" ];\nJsonReportExecutor -> JsonReportDisharmonyEntry [ label = \"2\" weight = \"2\" ];\nJsonReportExecutor -> JsonReport [ label = \"3\" weight = \"3\" ];\nJsonReportExecutor -> ReportWriter [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> HtmlReport [ label = \"4\" weight = \"4\" ];\nJsonGenerator -> RefactorFirstReportDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> CodebaseGraphDTO [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> GitLogReader [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> CycleRanker [ label = \"5\" weight = \"5\" ];\nJsonGenerator -> RankedCycle [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> CycleRemovalComputer [ label = \"4\" weight = \"4\" ];\nJsonGenerator -> CycleRemovalResult [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> RankedDisharmony [ label = \"10\" weight = \"10\" ];\nJsonGenerator -> CostBenefitCalculator [ label = \"6\" weight = \"6\" ];\nJsonGenerator -> org_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [ label = \"17\" weight = \"17\" ];\nJsonGenerator -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> SimpleHtmlReport [ label = \"31\" weight = \"31\" ];\nJsonGenerator -> ProjectMetadataDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> GraphVisualDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassRelationshipDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> PackageRelationshipDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> PackageRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> DisharmonySectionDTO [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> CycleSummaryDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> LargestCycleDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> CycleBreakdownRowDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> ClassCyclesDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> ChartJsBubbleDTO [ label = \"3\" weight = \"3\" ];\nJsonGenerator -> DisharmonyChartDTO [ label = \"1\" weight = \"1\" ];\nJsonGenerator -> DisharmonyMetric [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableRowDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableCellDTO [ label = \"2\" weight = \"2\" ];\nJsonGenerator -> DisharmonyTableDTO [ label = \"1\" weight = \"1\" ];\nClassCyclesDTO -> CycleSummaryDTO [ label = \"2\" weight = \"2\" ];\nClassCyclesDTO -> LargestCycleDTO [ label = \"1\" weight = \"1\" ];\nClassRelationshipsToRemoveDTO -> ClassRelationshipDTO [ label = \"2\" weight = \"2\" ];\nDisharmonyChartDTO -> ChartJsBubbleDTO [ label = \"2\" weight = \"2\" ];\nDisharmonySectionDTO -> DisharmonyChartDTO [ label = \"1\" weight = \"1\" ];\nDisharmonySectionDTO -> DisharmonyTableDTO [ label = \"1\" weight = \"1\" ];\nDisharmonyTableDTO -> DisharmonyTableRowDTO [ label = \"2\" weight = \"2\" ];\nDisharmonyTableRowDTO -> DisharmonyTableCellDTO [ label = \"2\" weight = \"2\" ];\nLargestCycleDTO -> CycleBreakdownRowDTO [ label = \"2\" weight = \"2\" ];\nPackageRelationshipsToRemoveDTO -> PackageRelationshipDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ProjectMetadataDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> GraphVisualDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ClassRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> PackageRelationshipsToRemoveDTO [ label = \"1\" weight = \"1\" ];\nRefactorFirstReportDTO -> DisharmonySectionDTO [ label = \"2\" weight = \"2\" ];\nRefactorFirstReportDTO -> ClassCyclesDTO [ label = \"1\" weight = \"1\" ];\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"3\" weight = \"3\" ];\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_ReportWriteException [ label = \"3\" weight = \"3\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> ReportWriter [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> org_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [ label = \"34\" weight = \"34\" ];\nSimpleHtmlReport -> ReportWriter [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> GitLogReader [ label = \"5\" weight = \"5\" ];\nSimpleHtmlReport -> CycleRanker [ label = \"5\" weight = \"5\" ];\nSimpleHtmlReport -> RankedCycle [ label = \"10\" weight = \"10\" ];\nSimpleHtmlReport -> CodebaseGraphDTO [ label = \"13\" weight = \"13\" ];\nSimpleHtmlReport -> CycleRemovalComputer [ label = \"4\" weight = \"4\" ];\nSimpleHtmlReport -> CycleRemovalResult [ label = \"2\" weight = \"2\" ];\nSimpleHtmlReport -> RankedDisharmony [ label = \"16\" weight = \"16\" ];\nSimpleHtmlReport -> CostBenefitCalculator [ label = \"6\" weight = \"6\" ];\nSimpleHtmlReport -> DisharmonyInstance [ label = \"1\" weight = \"1\" ];\nSimpleHtmlReport -> DisharmonyMetric [ label = \"3\" weight = \"3\" ];\nConsole -> io_confluent_ksql_cli_console_Console_RowCaptor [ label = \"4\" weight = \"4\" ];\nConsole -> io_confluent_ksql_cli_console_Console_NoOpRowCaptor [ label = \"1\" weight = \"1\" ];\nConsole -> io_confluent_ksql_cli_console_Console_CliCmdExecutor [ label = \"4\" weight = \"4\" ];\nio_confluent_ksql_cli_console_Console_NoOpRowCaptor -> io_confluent_ksql_cli_console_Console_RowCaptor [ label = \"1\" weight = \"1\" ];\norg_hjug_graphbuilder_visitor_AbstractDependencyVisitor_1 [ label=\"AbstractDependencyVisitor$1\"];\nCycleSummaryDTO [];\nJsonReport [];\nDisharmonyTableCellDTO [];\nEdgeRemovalCalculator [];\nSimpleHtmlReport [];\nLineDigraph [];\nCsvReportTask [];\nRefactorFirstExtension [];\norg_hjug_refactorfirst_report_SimpleHtmlReport_DisharmonySpec [ label=\"SimpleHtmlReport$DisharmonySpec\"];\nGraphMetricsCollector [];\nDisharmonyInstance [];\norg_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathContext [ label=\"DirectedFeedbackVertexSetSolver$PathContext\"];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_ClassStateSnapshot [ label=\"MetricsVisitorLogic$ClassStateSnapshot\"];\nDisharmonySectionDTO [];\nMavenReportOutputDirectory [];\nPackageRelationshipsToRemoveDTO [];\nCompositeGraphBuilder [];\nPackageRelationshipDTO [];\nMetricsCollectingVisitor [];\nKotlinSourceFileGraphBuilder [];\nMethodMetrics [];\nCodebaseGraphDTO [];\nRankedDisharmony [];\nFeedbackVertexSetResult [];\nRefactorFirstMavenJsonReport [];\nCycleRemovalComputer [];\nJsonReportTask [];\nDSM [];\nJsonReportDisharmonyEntry [];\norg_hjug_graphbuilder_metrics_DisharmonyMetric_Direction [ label=\"DisharmonyMetric$Direction\"];\nio_confluent_ksql_cli_console_Console_RowCaptor [ label=\"Console$RowCaptor\"];\nCycleBreakdownRowDTO [];\nDisharmonyDetector [];\nCircularReferenceChecker [];\nFeedbackArcSetSolver [];\nCycleRemovalResult [];\norg_hjug_refactorfirst_report_ReportWriter_ReportWriteException [ label=\"ReportWriter$ReportWriteException\"];\nAbstractDependencyVisitor [];\nJava25ParserFactory [];\nProjectMetadataDTO [];\norg_hjug_feedback_vertex_kernelized_ParameterComputer_Parameters [ label=\"ParameterComputer$Parameters\"];\nLargestCycleDTO [];\nRankedCycle [];\nClassRelationshipDTO [];\nDisharmonyRanker [];\norg_hjug_git_GitLogReader_CommitWalkStats [ label=\"GitLogReader$CommitWalkStats\"];\nGraphVisualDTO [];\nDisharmonyTableRowDTO [];\nChangePronenessRanker [];\nScmLogInfo [];\nKotlinMetricsCollectingVisitor [];\nEdgeToRemoveInfo [];\nDirectedFeedbackVertexSetSolver [];\nGraphBuilderConfig [];\nMinimumFeedbackArcSetSolver [];\norg_hjug_graphbuilder_visitor_DependencyVisitorLogic_ClassSnapshot [ label=\"DependencyVisitorLogic$ClassSnapshot\"];\nRefactorFirstMavenReport [];\nEdgeInfoCalculator [];\nRefactorFirstMavenJsonGenerator [];\nCycleRanker [];\nReportCommand [];\nDisharmonyChartDTO [];\nRefactorFirstPlugin [];\nDependencyCollector [];\nCostBenefitCalculator [];\nEdgeInfo [];\nGitLogReader [];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_OverridePredicate [ label=\"MetricsVisitorLogic$OverridePredicate\"];\nGraphDependencyCollector [];\nDependencyVisitorLogic [];\nDisharmony [];\nio_confluent_ksql_cli_console_Console_NoOpRowCaptor [ label=\"Console$NoOpRowCaptor\"];\nClassMetrics [];\nSparseIntDWGEdgeRemovalCalculator [];\nRefactorFirstSimpleHtmlReport [];\nClassRelationshipsToRemoveDTO [];\nCsvReport [];\nDisharmonyTableDTO [];\nJsonGenerator [];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_FlaggedClassData [ label=\"DisharmonyDetector$FlaggedClassData\"];\norg_hjug_metrics_DisharmonyRanker_RankSetter [ label=\"DisharmonyRanker$RankSetter\"];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label=\"ReportWriter$SecureDirectoryOps\"];\nChartJsBubbleDTO [];\nHtmlReport [];\nDisharmonyMetric [];\norg_hjug_graphbuilder_metrics_MetricsVisitorLogic_MethodStateSnapshot [ label=\"MetricsVisitorLogic$MethodStateSnapshot\"];\norg_hjug_feedback_vertex_kernelized_DirectedFeedbackVertexSetSolver_PathComputationStats [ label=\"DirectedFeedbackVertexSetSolver$PathComputationStats\"];\nLineVertex [];\norg_hjug_feedback_vertex_kernelized_ModulatorComputer_ModulatorResult [ label=\"ModulatorComputer$ModulatorResult\"];\nGodClass [];\nDirectedFeedbackVertexSetResult [];\nRefactorFirstReportDTO [];\nio_confluent_ksql_cli_console_Console_CliCmdExecutor [ label=\"Console$CliCmdExecutor\"];\nKotlinDependencyVisitor [];\norg_hjug_feedback_vertex_approximate_FeedbackVertexSetSolver_CutCandidate [ label=\"FeedbackVertexSetSolver$CutCandidate\"];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_Clone [ label=\"DisharmonyDetector$Clone\"];\nCBOClass [];\nMain [];\nJavaSourceFileGraphBuilder [];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label=\"ReportWriter$SecureDirectoryOpsImpl\"];\nGodClassRanker [];\norg_hjug_graphbuilder_visitor_KotlinDependencyVisitor_1 [ label=\"KotlinDependencyVisitor$1\"];\norg_hjug_feedback_vertex_kernelized_EnhancedParameterComputer_EnhancedParameters [ label=\"EnhancedParameterComputer$EnhancedParameters\"];\nConsole [];\nCycleNode [];\nFeedbackVertexSetComputer [];\nCBORule [];\nReportType [];\nParameterComputer [];\nComplexityCalculator [];\nRefactorFirstMavenCsvReport [];\nReportWriter [ color=red style=filled];\nMetricsVisitorLogic [];\norg_hjug_metrics_DisharmonyRanker_ValueExtractor [ label=\"DisharmonyRanker$ValueExtractor\"];\nMetricsVisitorState [];\nTypeDependencyExtractor [];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_ClassDisharmony [ label=\"DisharmonyDetector$ClassDisharmony\"];\nHtmlReportTask [];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodEntry [ label=\"DisharmonyDetector$MethodEntry\"];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label=\"ReportWriter$FallbackDirectoryOps\"];\norg_hjug_feedback_arc_approximate_FeedbackArcSetResult [ label=\"FeedbackArcSetResult\"];\nJavaVisitor [];\nJsonReportExecutor [];\nBaseTypeProcessor [];\nEnhancedParameterComputer [];\nFeedbackVertexSetSolver [];\nGraphDataGenerator [];\nDependencyVisitorState [];\norg_hjug_feedback_arc_exact_FeedbackArcSetResult [ label=\"FeedbackArcSetResult\"];\nUnattributedTypeFqnResolver [];\nSourceFileGraphBuilder [];\nSuperTypeToken [];\nPageRankFAS [];\nSourcePathResolver [];\norg_hjug_graphbuilder_metrics_DisharmonyDetector_MethodDisharmony [ label=\"DisharmonyDetector$MethodDisharmony\"];\nSimpleHtmlReportTask [];\nRefactorFirstHtmlReport [];\nClassCyclesDTO [];\nTreewidthComputer [];\nModulatorComputer [];\n}", "hasEdges" : false }, "classRelationshipsToRemove" : { @@ -27,7 +27,7 @@ "sourceMarked" : false, "targetMarked" : false, "weight" : 1, - "renderedLabel" : "ReportWriter$SecureDirectoryOps → ReportWriter$SecureDirectoryOpsImpl : 1", + "renderedLabel" : "ReportWriter$SecureDirectoryOps → ReportWriter$SecureDirectoryOpsImpl : 1", "priority" : 1, "cycleCount" : 1, "effortRank" : 1, @@ -39,7 +39,7 @@ "sourceMarked" : false, "targetMarked" : false, "weight" : 1, - "renderedLabel" : "ReportWriter$SecureDirectoryOps → ReportWriter$FallbackDirectoryOps : 1", + "renderedLabel" : "ReportWriter$SecureDirectoryOps → ReportWriter$FallbackDirectoryOps : 1", "priority" : 2, "cycleCount" : 1, "effortRank" : 1, @@ -53,7 +53,7 @@ "relationshipCount" : 37, "dotThreshold" : 4000, "dotThresholdExceeded" : false, - "dot" : "strict digraph G {\npackage_622c04a26e1ba36b6ebca283 -> package_864d6940ac14438961598d5a [ label = \"10\" weight = \"10\" ];\npackage_622c04a26e1ba36b6ebca283 -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_275b39592e996f9bc7d2bab4 -> package_179967d6e66ef95e5ec582dc [ label = \"12\" weight = \"12\" ];\npackage_275b39592e996f9bc7d2bab4 -> package_98c578ab6c4dd833f53d3aee [ label = \"6\" weight = \"6\" color = \"red\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_275b39592e996f9bc7d2bab4 [ label = \"10\" weight = \"10\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_d36e09db80f0e2bbc4ffd5c7 [ label = \"4\" weight = \"4\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_179967d6e66ef95e5ec582dc [ label = \"37\" weight = \"37\" ];\npackage_179967d6e66ef95e5ec582dc -> package_275b39592e996f9bc7d2bab4 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_d36e09db80f0e2bbc4ffd5c7 -> package_275b39592e996f9bc7d2bab4 [ label = \"14\" weight = \"14\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_cc2439ece2ff219a79eb369d [ label = \"27\" weight = \"27\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_d6011c21970de8ae7eafff05 [ label = \"1\" weight = \"1\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_869fe932642cb7510df73c8d [ label = \"46\" weight = \"46\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_275b39592e996f9bc7d2bab4 [ label = \"16\" weight = \"16\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_179967d6e66ef95e5ec582dc [ label = \"7\" weight = \"7\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_6da3c08ea2d561edab77673f [ label = \"2\" weight = \"2\" ];\npackage_869fe932642cb7510df73c8d -> package_179967d6e66ef95e5ec582dc [ label = \"2\" weight = \"2\" ];\npackage_5770287cc40afd5bd6812d59 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"2\" weight = \"2\" ];\npackage_d30a7a8d892c5e6113a07e84 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"3\" weight = \"3\" color = \"red\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_6da3c08ea2d561edab77673f [ label = \"2\" weight = \"2\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_d2f1dd27b2e43b88238a4c05 [ label = \"10\" weight = \"10\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_d30a7a8d892c5e6113a07e84 [ label = \"2\" weight = \"2\" ];\npackage_d2f1dd27b2e43b88238a4c05 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"12\" weight = \"12\" color = \"red\" ];\npackage_e16f87ed4cbaa8972b66b80b -> package_bfb0d6f0cb59390b479b08a1 [ label = \"2\" weight = \"2\" ];\npackage_c28460328a6700365ccc109d -> package_864d6940ac14438961598d5a [ label = \"9\" weight = \"9\" ];\npackage_c28460328a6700365ccc109d -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_5a5b226dc916c25cd94e86c9 -> package_864d6940ac14438961598d5a [ label = \"16\" weight = \"16\" ];\npackage_5a5b226dc916c25cd94e86c9 -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_864d6940ac14438961598d5a -> package_cc2439ece2ff219a79eb369d [ label = \"11\" weight = \"11\" ];\npackage_864d6940ac14438961598d5a -> package_bfb0d6f0cb59390b479b08a1 [ label = \"73\" weight = \"73\" ];\npackage_864d6940ac14438961598d5a -> package_e16f87ed4cbaa8972b66b80b [ label = \"5\" weight = \"5\" ];\npackage_864d6940ac14438961598d5a -> package_275b39592e996f9bc7d2bab4 [ label = \"32\" weight = \"32\" ];\npackage_bb20afe0ec6010144ae2060c -> package_bfb0d6f0cb59390b479b08a1 [ label = \"8\" weight = \"8\" ];\npackage_bb20afe0ec6010144ae2060c -> package_864d6940ac14438961598d5a [ label = \"2\" weight = \"2\" ];\npackage_864d6940ac14438961598d5a -> package_8b5bd27cd192f3c043f79d74 [ label = \"29\" weight = \"29\" ];\npackage_864d6940ac14438961598d5a -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"12\" weight = \"12\" ];\npackage_864d6940ac14438961598d5a -> package_869fe932642cb7510df73c8d [ label = \"2\" weight = \"2\" ];\npackage_864d6940ac14438961598d5a -> package_179967d6e66ef95e5ec582dc [ label = \"5\" weight = \"5\" ];\npackage_6da3c08ea2d561edab77673f [label=\"org.hjug.dsm\"];\npackage_5a5b226dc916c25cd94e86c9 [label=\"org.hjug.mavenreport\"];\npackage_d30a7a8d892c5e6113a07e84 [label=\"org.hjug.feedback.arc.pageRank\"];\npackage_d6011c21970de8ae7eafff05 [label=\"org.hjug.metrics.rules\"];\npackage_179967d6e66ef95e5ec582dc [label=\"org.hjug.graphbuilder.metrics\"];\npackage_98c578ab6c4dd833f53d3aee [label=\"org.hjug.graphbuilder.graphbuilder\"];\npackage_8b5bd27cd192f3c043f79d74 [label=\"org.hjug.refactorfirst.report.model\"];\npackage_cc2439ece2ff219a79eb369d [label=\"org.hjug.git\"];\npackage_bb20afe0ec6010144ae2060c [label=\"org.hjug.refactorfirst.report.json\"];\npackage_d36e09db80f0e2bbc4ffd5c7 [label=\"org.hjug.graphbuilder.visitor\"];\npackage_0b6cea3e7e0dde98e8d142c3 [label=\"org.hjug.feedback\"];\npackage_275b39592e996f9bc7d2bab4 [label=\"org.hjug.graphbuilder\" color=red style=filled];\npackage_869fe932642cb7510df73c8d [label=\"org.hjug.metrics\"];\npackage_864d6940ac14438961598d5a [label=\"org.hjug.refactorfirst.report\"];\npackage_e16f87ed4cbaa8972b66b80b [label=\"org.hjug.gdg\"];\npackage_c28460328a6700365ccc109d [label=\"org.hjug.gradlereport\"];\npackage_5770287cc40afd5bd6812d59 [label=\"org.hjug.feedback.arc.exact\"];\npackage_622c04a26e1ba36b6ebca283 [label=\"org.hjug.refactorfirst\"];\npackage_bfb0d6f0cb59390b479b08a1 [label=\"org.hjug.cbc\" color=red style=filled];\npackage_d2f1dd27b2e43b88238a4c05 [label=\"org.hjug.feedback.vertex.kernelized\"];\n}", + "dot" : "strict digraph G {\npackage_622c04a26e1ba36b6ebca283 -> package_864d6940ac14438961598d5a [ label = \"10\" weight = \"10\" ];\npackage_622c04a26e1ba36b6ebca283 -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_275b39592e996f9bc7d2bab4 -> package_179967d6e66ef95e5ec582dc [ label = \"12\" weight = \"12\" ];\npackage_275b39592e996f9bc7d2bab4 -> package_98c578ab6c4dd833f53d3aee [ label = \"6\" weight = \"6\" color = \"red\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_275b39592e996f9bc7d2bab4 [ label = \"10\" weight = \"10\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_d36e09db80f0e2bbc4ffd5c7 [ label = \"4\" weight = \"4\" ];\npackage_98c578ab6c4dd833f53d3aee -> package_179967d6e66ef95e5ec582dc [ label = \"37\" weight = \"37\" ];\npackage_179967d6e66ef95e5ec582dc -> package_275b39592e996f9bc7d2bab4 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_d36e09db80f0e2bbc4ffd5c7 -> package_275b39592e996f9bc7d2bab4 [ label = \"14\" weight = \"14\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_cc2439ece2ff219a79eb369d [ label = \"27\" weight = \"27\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_d6011c21970de8ae7eafff05 [ label = \"1\" weight = \"1\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_869fe932642cb7510df73c8d [ label = \"46\" weight = \"46\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_275b39592e996f9bc7d2bab4 [ label = \"16\" weight = \"16\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_179967d6e66ef95e5ec582dc [ label = \"7\" weight = \"7\" ];\npackage_bfb0d6f0cb59390b479b08a1 -> package_6da3c08ea2d561edab77673f [ label = \"2\" weight = \"2\" ];\npackage_869fe932642cb7510df73c8d -> package_179967d6e66ef95e5ec582dc [ label = \"2\" weight = \"2\" ];\npackage_5770287cc40afd5bd6812d59 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"2\" weight = \"2\" ];\npackage_d30a7a8d892c5e6113a07e84 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"3\" weight = \"3\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_6da3c08ea2d561edab77673f [ label = \"2\" weight = \"2\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_d2f1dd27b2e43b88238a4c05 [ label = \"10\" weight = \"10\" color = \"red\" ];\npackage_0b6cea3e7e0dde98e8d142c3 -> package_d30a7a8d892c5e6113a07e84 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_d2f1dd27b2e43b88238a4c05 -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"12\" weight = \"12\" ];\npackage_e16f87ed4cbaa8972b66b80b -> package_bfb0d6f0cb59390b479b08a1 [ label = \"2\" weight = \"2\" ];\npackage_c28460328a6700365ccc109d -> package_864d6940ac14438961598d5a [ label = \"9\" weight = \"9\" ];\npackage_c28460328a6700365ccc109d -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_5a5b226dc916c25cd94e86c9 -> package_864d6940ac14438961598d5a [ label = \"16\" weight = \"16\" ];\npackage_5a5b226dc916c25cd94e86c9 -> package_bb20afe0ec6010144ae2060c [ label = \"3\" weight = \"3\" ];\npackage_864d6940ac14438961598d5a -> package_cc2439ece2ff219a79eb369d [ label = \"11\" weight = \"11\" ];\npackage_864d6940ac14438961598d5a -> package_bfb0d6f0cb59390b479b08a1 [ label = \"73\" weight = \"73\" ];\npackage_864d6940ac14438961598d5a -> package_e16f87ed4cbaa8972b66b80b [ label = \"5\" weight = \"5\" ];\npackage_864d6940ac14438961598d5a -> package_275b39592e996f9bc7d2bab4 [ label = \"33\" weight = \"33\" ];\npackage_bb20afe0ec6010144ae2060c -> package_bfb0d6f0cb59390b479b08a1 [ label = \"8\" weight = \"8\" ];\npackage_bb20afe0ec6010144ae2060c -> package_864d6940ac14438961598d5a [ label = \"2\" weight = \"2\" ];\npackage_864d6940ac14438961598d5a -> package_8b5bd27cd192f3c043f79d74 [ label = \"29\" weight = \"29\" ];\npackage_864d6940ac14438961598d5a -> package_0b6cea3e7e0dde98e8d142c3 [ label = \"12\" weight = \"12\" ];\npackage_864d6940ac14438961598d5a -> package_869fe932642cb7510df73c8d [ label = \"2\" weight = \"2\" ];\npackage_864d6940ac14438961598d5a -> package_179967d6e66ef95e5ec582dc [ label = \"5\" weight = \"5\" ];\npackage_6da3c08ea2d561edab77673f [label=\"org.hjug.dsm\"];\npackage_5a5b226dc916c25cd94e86c9 [label=\"org.hjug.mavenreport\"];\npackage_d30a7a8d892c5e6113a07e84 [label=\"org.hjug.feedback.arc.pageRank\"];\npackage_d6011c21970de8ae7eafff05 [label=\"org.hjug.metrics.rules\"];\npackage_179967d6e66ef95e5ec582dc [label=\"org.hjug.graphbuilder.metrics\"];\npackage_98c578ab6c4dd833f53d3aee [label=\"org.hjug.graphbuilder.graphbuilder\"];\npackage_8b5bd27cd192f3c043f79d74 [label=\"org.hjug.refactorfirst.report.model\"];\npackage_cc2439ece2ff219a79eb369d [label=\"org.hjug.git\"];\npackage_bb20afe0ec6010144ae2060c [label=\"org.hjug.refactorfirst.report.json\"];\npackage_d36e09db80f0e2bbc4ffd5c7 [label=\"org.hjug.graphbuilder.visitor\"];\npackage_0b6cea3e7e0dde98e8d142c3 [label=\"org.hjug.feedback\"];\npackage_275b39592e996f9bc7d2bab4 [label=\"org.hjug.graphbuilder\" color=red style=filled];\npackage_869fe932642cb7510df73c8d [label=\"org.hjug.metrics\"];\npackage_864d6940ac14438961598d5a [label=\"org.hjug.refactorfirst.report\"];\npackage_e16f87ed4cbaa8972b66b80b [label=\"org.hjug.gdg\"];\npackage_c28460328a6700365ccc109d [label=\"org.hjug.gradlereport\"];\npackage_5770287cc40afd5bd6812d59 [label=\"org.hjug.feedback.arc.exact\"];\npackage_622c04a26e1ba36b6ebca283 [label=\"org.hjug.refactorfirst\"];\npackage_bfb0d6f0cb59390b479b08a1 [label=\"org.hjug.cbc\" color=red style=filled];\npackage_d2f1dd27b2e43b88238a4c05 [label=\"org.hjug.feedback.vertex.kernelized\"];\n}", "hasEdges" : true }, "packageRelationshipsToRemove" : { @@ -66,44 +66,44 @@ "sourceMarked" : false, "targetMarked" : true, "weight" : 1, - "renderedLabel" : "org.hjug.graphbuilder.metrics → org.hjug.graphbuilder* : 1", + "renderedLabel" : "org.hjug.graphbuilder.metrics → org.hjug.graphbuilder* : 1", "priority" : 1, "cycleCount" : 1, "effortRank" : 1, - "classRelationshipsToBreakPackage" : [ "GraphMetricsCollector → DependencyCollector : 1" ] + "classRelationshipsToBreakPackage" : [ "GraphMetricsCollector → DependencyCollector : 1" ] }, { - "sourcePackage" : "org.hjug.feedback.arc.pageRank", - "targetPackage" : "org.hjug.feedback", + "sourcePackage" : "org.hjug.feedback", + "targetPackage" : "org.hjug.feedback.arc.pageRank", "sourceMarked" : false, "targetMarked" : false, - "weight" : 3, - "renderedLabel" : "org.hjug.feedback.arc.pageRank → org.hjug.feedback : 3", + "weight" : 2, + "renderedLabel" : "org.hjug.feedback → org.hjug.feedback.arc.pageRank : 2", "priority" : 2, "cycleCount" : 1, - "effortRank" : 3, - "classRelationshipsToBreakPackage" : [ "PageRankFAS → SuperTypeToken : 3" ] + "effortRank" : 2, + "classRelationshipsToBreakPackage" : [ "CycleRemovalComputer → PageRankFAS : 2" ] }, { "sourcePackage" : "org.hjug.graphbuilder", "targetPackage" : "org.hjug.graphbuilder.graphbuilder", "sourceMarked" : true, "targetMarked" : false, "weight" : 6, - "renderedLabel" : "org.hjug.graphbuilder* → org.hjug.graphbuilder.graphbuilder : 6", + "renderedLabel" : "org.hjug.graphbuilder* → org.hjug.graphbuilder.graphbuilder : 6", "priority" : 3, "cycleCount" : 1, "effortRank" : 6, - "classRelationshipsToBreakPackage" : [ "CompositeGraphBuilder → JavaSourceFileGraphBuilder : 3", "CompositeGraphBuilder → KotlinSourceFileGraphBuilder : 3" ] + "classRelationshipsToBreakPackage" : [ "CompositeGraphBuilder → KotlinSourceFileGraphBuilder : 3", "CompositeGraphBuilder → JavaSourceFileGraphBuilder : 3" ] }, { - "sourcePackage" : "org.hjug.feedback.vertex.kernelized", - "targetPackage" : "org.hjug.feedback", + "sourcePackage" : "org.hjug.feedback", + "targetPackage" : "org.hjug.feedback.vertex.kernelized", "sourceMarked" : false, "targetMarked" : false, - "weight" : 12, - "renderedLabel" : "org.hjug.feedback.vertex.kernelized → org.hjug.feedback : 12", + "weight" : 10, + "renderedLabel" : "org.hjug.feedback → org.hjug.feedback.vertex.kernelized : 10", "priority" : 4, "cycleCount" : 1, - "effortRank" : 12, - "classRelationshipsToBreakPackage" : [ "FeedbackVertexSetComputer → SuperTypeToken : 4", "ParameterComputer → SuperTypeToken : 2", "EnhancedParameterComputer → SuperTypeToken : 2", "DirectedFeedbackVertexSetSolver → SuperTypeToken : 2", "ModulatorComputer → SuperTypeToken : 2" ] + "effortRank" : 10, + "classRelationshipsToBreakPackage" : [ "CycleRemovalComputer → DirectedFeedbackVertexSetSolver : 2", "CycleRemovalComputer → DirectedFeedbackVertexSetResult : 2", "CycleRemovalComputer → EnhancedParameterComputer : 2", "CycleRemovalComputer → EnhancedParameterComputer$EnhancedParameters : 4" ] } ] }, "hasDisharmonies" : true, @@ -128,7 +128,7 @@ "changePronenessRank" : 1, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -137,7 +137,7 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "JsonGenerator.java", "align" : "left" }, { "content" : "1", @@ -149,10 +149,10 @@ "content" : "1", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { - "content" : "7", + "content" : "8", "align" : "right" } ] } ] @@ -178,7 +178,7 @@ "changePronenessRank" : 2, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/RefactorFirstExtension.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/RefactorFirstExtension.java" }, { "id" : "MetricsVisitorState.java", "label" : "MetricsVisitorState.java", @@ -190,7 +190,7 @@ "changePronenessRank" : 3, "color" : "rgba(137, 119, 74, 0.75)", "borderColor" : "rgb(137, 119, 74)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorState.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorState.java" }, { "id" : "Attributes.java", "label" : "Attributes.java", @@ -202,7 +202,7 @@ "changePronenessRank" : 1, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/Attributes.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/Attributes.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -211,7 +211,7 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "RefactorFirstExtension.java", + "content" : "RefactorFirstExtension.java", "align" : "left" }, { "content" : "1", @@ -231,7 +231,7 @@ } ] }, { "cells" : [ { - "content" : "MetricsVisitorState.java", + "content" : "MetricsVisitorState.java", "align" : "left" }, { "content" : "2", @@ -251,7 +251,7 @@ } ] }, { "cells" : [ { - "content" : "Attributes.java", + "content" : "Attributes.java", "align" : "left" }, { "content" : "3", @@ -292,7 +292,7 @@ "changePronenessRank" : 1, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -301,7 +301,7 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { "content" : "1", @@ -332,65 +332,65 @@ "chart" : { "canvasId" : "chart_RPB", "bubbles" : [ { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", - "x" : 1, - "y" : 5, + "id" : "HtmlReport.java", + "label" : "HtmlReport.java", + "x" : 2, + "y" : 4, "r" : 24, "priority" : 1, - "effortRank" : 1, - "changePronenessRank" : 5, + "effortRank" : 2, + "changePronenessRank" : 4, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java" }, { - "id" : "HtmlReport.java", - "label" : "HtmlReport.java", - "x" : 2, - "y" : 3, + "id" : "JsonGenerator.java", + "label" : "JsonGenerator.java", + "x" : 3, + "y" : 5, "r" : 20, "priority" : 2, - "effortRank" : 2, - "changePronenessRank" : 3, + "effortRank" : 3, + "changePronenessRank" : 5, "color" : "rgba(186, 92, 63, 0.75)", "borderColor" : "rgb(186, 92, 63)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" }, { - "id" : "JsonGenerator.java", - "label" : "JsonGenerator.java", - "x" : 3, - "y" : 4, + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", + "x" : 1, + "y" : 2, "r" : 15, "priority" : 3, - "effortRank" : 3, - "changePronenessRank" : 4, + "effortRank" : 1, + "changePronenessRank" : 2, "color" : "rgba(137, 119, 74, 0.75)", "borderColor" : "rgb(137, 119, 74)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" }, { - "id" : "AttributeHandler.java", - "label" : "AttributeHandler.java", - "x" : 1, - "y" : 1, + "id" : "AttributeHandler2.java", + "label" : "AttributeHandler2.java", + "x" : 2, + "y" : 3, "r" : 11, "priority" : 4, - "effortRank" : 1, - "changePronenessRank" : 1, + "effortRank" : 2, + "changePronenessRank" : 3, "color" : "rgba(88, 147, 85, 0.75)", "borderColor" : "rgb(88, 147, 85)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler2.java" }, { - "id" : "AttributeHandler2.java", - "label" : "AttributeHandler2.java", - "x" : 2, - "y" : 2, + "id" : "AttributeHandler.java", + "label" : "AttributeHandler.java", + "x" : 1, + "y" : 1, "r" : 6, "priority" : 5, - "effortRank" : 2, - "changePronenessRank" : 2, + "effortRank" : 1, + "changePronenessRank" : 1, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler2.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -399,76 +399,76 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "HtmlReport.java", "align" : "left" }, { "content" : "1", "align" : "right" }, { - "content" : "5", + "content" : "4", "align" : "right" }, { - "content" : "1", + "content" : "2", "align" : "right" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "9/30/26, 9:07 PM", "align" : "right" }, { - "content" : "0", + "content" : "62", "align" : "right" } ] }, { "cells" : [ { - "content" : "HtmlReport.java", + "content" : "JsonGenerator.java", "align" : "left" }, { "content" : "2", "align" : "right" }, { - "content" : "3", + "content" : "5", "align" : "right" }, { - "content" : "2", + "content" : "3", "align" : "right" }, { - "content" : "9/30/26, 9:07 PM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { - "content" : "62", + "content" : "8", "align" : "right" } ] }, { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "AttributeHandlerAndSorter.java", "align" : "left" }, { "content" : "3", "align" : "right" }, { - "content" : "4", + "content" : "2", "align" : "right" }, { - "content" : "3", + "content" : "1", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { - "content" : "7", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "AttributeHandler.java", + "content" : "AttributeHandler2.java", "align" : "left" }, { "content" : "4", "align" : "right" }, { - "content" : "1", + "content" : "3", "align" : "right" }, { - "content" : "1", + "content" : "2", "align" : "right" }, { "content" : "10/1/20, 8:46 AM", @@ -479,16 +479,16 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandler2.java", + "content" : "AttributeHandler.java", "align" : "left" }, { "content" : "5", "align" : "right" }, { - "content" : "2", + "content" : "1", "align" : "right" }, { - "content" : "2", + "content" : "1", "align" : "right" }, { "content" : "10/1/20, 8:46 AM", @@ -520,7 +520,7 @@ "changePronenessRank" : 1, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler2.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler2.java" }, { "id" : "HtmlReport.java", "label" : "HtmlReport.java", @@ -532,7 +532,7 @@ "changePronenessRank" : 2, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -541,7 +541,7 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "AttributeHandler2.java", + "content" : "AttributeHandler2.java", "align" : "left" }, { "content" : "1", @@ -561,7 +561,7 @@ } ] }, { "cells" : [ { - "content" : "HtmlReport.java", + "content" : "HtmlReport.java", "align" : "left" }, { "content" : "2", @@ -573,10 +573,10 @@ "content" : "2", "align" : "right" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "9/30/26, 9:07 PM", "align" : "right" }, { - "content" : "0", + "content" : "62", "align" : "right" } ] } ] @@ -592,8 +592,8 @@ "chart" : { "canvasId" : "chart_SIG_DUP", "bubbles" : [ { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", + "id" : "HtmlReportTask.java", + "label" : "HtmlReportTask.java", "x" : 1, "y" : 5, "r" : 24, @@ -602,10 +602,10 @@ "changePronenessRank" : 5, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/HtmlReportTask.java" }, { - "id" : "HtmlReportTask.java", - "label" : "HtmlReportTask.java", + "id" : "SimpleHtmlReportTask.java", + "label" : "SimpleHtmlReportTask.java", "x" : 1, "y" : 4, "r" : 20, @@ -614,10 +614,10 @@ "changePronenessRank" : 4, "color" : "rgba(186, 92, 63, 0.75)", "borderColor" : "rgb(186, 92, 63)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/HtmlReportTask.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/SimpleHtmlReportTask.java" }, { - "id" : "SimpleHtmlReportTask.java", - "label" : "SimpleHtmlReportTask.java", + "id" : "AttributeHandler.java", + "label" : "AttributeHandler.java", "x" : 1, "y" : 3, "r" : 15, @@ -626,10 +626,10 @@ "changePronenessRank" : 3, "color" : "rgba(137, 119, 74, 0.75)", "borderColor" : "rgb(137, 119, 74)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/refactor-first-gradle-plugin/src/main/java/org/hjug/gradlereport/SimpleHtmlReportTask.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler.java" }, { - "id" : "AttributeHandler.java", - "label" : "AttributeHandler.java", + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", "x" : 1, "y" : 2, "r" : 11, @@ -638,7 +638,7 @@ "changePronenessRank" : 2, "color" : "rgba(88, 147, 85, 0.75)", "borderColor" : "rgb(88, 147, 85)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" }, { "id" : "AttributeHandler2.java", "label" : "AttributeHandler2.java", @@ -650,7 +650,7 @@ "changePronenessRank" : 1, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler2.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler2.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -659,7 +659,7 @@ "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Duplicate Partners", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "HtmlReportTask.java", "align" : "left" }, { "content" : "1", @@ -671,18 +671,18 @@ "content" : "1", "align" : "right" }, { - "content" : "apply(Unknown,Unknown) ↔ AttributeHandler.apply(Unknown,Unknown)
apply(Unknown,Unknown) ↔ <
unknown>
.apply(Unknown,Unknown)", + "content" : "generate() ↔ SimpleHtmlReportTask.generate()", "align" : "left" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "9/15/25, 12:47 PM", "align" : "right" }, { - "content" : "0", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "HtmlReportTask.java", + "content" : "SimpleHtmlReportTask.java", "align" : "left" }, { "content" : "2", @@ -694,7 +694,7 @@ "content" : "1", "align" : "right" }, { - "content" : "generate() ↔ SimpleHtmlReportTask.generate()", + "content" : "generate() ↔ HtmlReportTask.generate()", "align" : "left" }, { "content" : "9/15/25, 12:47 PM", @@ -705,7 +705,7 @@ } ] }, { "cells" : [ { - "content" : "SimpleHtmlReportTask.java", + "content" : "AttributeHandler.java", "align" : "left" }, { "content" : "3", @@ -717,10 +717,10 @@ "content" : "1", "align" : "right" }, { - "content" : "generate() ↔ HtmlReportTask.generate()", + "content" : "apply(Unknown,Unknown) ↔ AttributeHandler.apply(Unknown,Unknown)
apply(Unknown,Unknown) ↔ <
unknown>
.apply(Unknown,Unknown)", "align" : "left" }, { - "content" : "9/15/25, 12:47 PM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { "content" : "1", @@ -728,7 +728,7 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandler.java", + "content" : "AttributeHandlerAndSorter.java", "align" : "left" }, { "content" : "4", @@ -751,7 +751,7 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandler2.java", + "content" : "AttributeHandler2.java", "align" : "left" }, { "content" : "5", @@ -788,89 +788,89 @@ "id" : "CompositeGraphBuilder.java", "label" : "CompositeGraphBuilder.java", "x" : 1, - "y" : 7, + "y" : 9, "r" : 24, "priority" : 1, "effortRank" : 1, - "changePronenessRank" : 7, + "changePronenessRank" : 9, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" }, { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", - "x" : 5, - "y" : 11, + "id" : "MetricsVisitorLogic.java", + "label" : "MetricsVisitorLogic.java", + "x" : 2, + "y" : 6, "r" : 22, "priority" : 2, - "effortRank" : 5, - "changePronenessRank" : 11, + "effortRank" : 2, + "changePronenessRank" : 6, "color" : "rgba(215, 75, 56, 0.75)", "borderColor" : "rgb(215, 75, 56)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { - "id" : "DependencyVisitorLogic.java", - "label" : "DependencyVisitorLogic.java", - "x" : 4, - "y" : 9, + "id" : "DirectedFeedbackVertexSetSolver.java", + "label" : "DirectedFeedbackVertexSetSolver.java", + "x" : 3, + "y" : 7, "r" : 20, "priority" : 3, - "effortRank" : 4, - "changePronenessRank" : 9, + "effortRank" : 3, + "changePronenessRank" : 7, "color" : "rgba(196, 86, 61, 0.75)", "borderColor" : "rgb(196, 86, 61)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/DependencyVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" }, { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", - "x" : 8, - "y" : 11, + "id" : "DependencyVisitorLogic.java", + "label" : "DependencyVisitorLogic.java", + "x" : 4, + "y" : 8, "r" : 19, "priority" : 4, - "effortRank" : 8, - "changePronenessRank" : 11, + "effortRank" : 4, + "changePronenessRank" : 8, "color" : "rgba(176, 97, 65, 0.75)", "borderColor" : "rgb(176, 97, 65)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/visitor/DependencyVisitorLogic.java" }, { - "id" : "MetricsVisitorLogic.java", - "label" : "MetricsVisitorLogic.java", - "x" : 2, - "y" : 4, + "id" : "DisharmonyDetector.java", + "label" : "DisharmonyDetector.java", + "x" : 6, + "y" : 10, "r" : 17, "priority" : 5, - "effortRank" : 2, - "changePronenessRank" : 4, + "effortRank" : 6, + "changePronenessRank" : 10, "color" : "rgba(157, 108, 70, 0.75)", "borderColor" : "rgb(157, 108, 70)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" }, { - "id" : "DirectedFeedbackVertexSetSolver.java", - "label" : "DirectedFeedbackVertexSetSolver.java", - "x" : 3, - "y" : 5, + "id" : "JsonGenerator.java", + "label" : "JsonGenerator.java", + "x" : 9, + "y" : 11, "r" : 15, "priority" : 6, - "effortRank" : 3, - "changePronenessRank" : 5, + "effortRank" : 9, + "changePronenessRank" : 11, "color" : "rgba(137, 119, 74, 0.75)", "borderColor" : "rgb(137, 119, 74)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" }, { - "id" : "DisharmonyDetector.java", - "label" : "DisharmonyDetector.java", - "x" : 6, + "id" : "MetricsVisitorLogic.java", + "label" : "MetricsVisitorLogic.java", + "x" : 5, "y" : 6, "r" : 13, "priority" : 7, - "effortRank" : 6, + "effortRank" : 5, "changePronenessRank" : 6, "color" : "rgba(117, 130, 78, 0.75)", "borderColor" : "rgb(117, 130, 78)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { - "id" : "MetricsVisitorLogic.java", - "label" : "MetricsVisitorLogic.java", + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", "x" : 5, "y" : 4, "r" : 11, @@ -879,43 +879,43 @@ "changePronenessRank" : 4, "color" : "rgba(98, 141, 83, 0.75)", "borderColor" : "rgb(98, 141, 83)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" }, { - "id" : "JsonGenerator.java", - "label" : "JsonGenerator.java", - "x" : 9, - "y" : 8, + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", + "x" : 8, + "y" : 4, "r" : 10, "priority" : 9, - "effortRank" : 9, - "changePronenessRank" : 8, + "effortRank" : 8, + "changePronenessRank" : 4, "color" : "rgba(78, 152, 87, 0.75)", "borderColor" : "rgb(78, 152, 87)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" }, { "id" : "AttributeHandler2.java", "label" : "AttributeHandler2.java", "x" : 7, - "y" : 1, + "y" : 2, "r" : 8, "priority" : 10, "effortRank" : 7, - "changePronenessRank" : 1, + "changePronenessRank" : 2, "color" : "rgba(59, 163, 92, 0.75)", "borderColor" : "rgb(59, 163, 92)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler2.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler2.java" }, { "id" : "AttributeHandler.java", "label" : "AttributeHandler.java", "x" : 8, - "y" : 2, + "y" : 3, "r" : 6, "priority" : 11, "effortRank" : 8, - "changePronenessRank" : 2, + "changePronenessRank" : 3, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -924,7 +924,7 @@ "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "CompositeGraphBuilder.java", + "content" : "CompositeGraphBuilder.java", "align" : "left" }, { "content" : "reconcileUnattributedVertices(Unknown,Unknown,Map<String,String>)", @@ -933,7 +933,7 @@ "content" : "1", "align" : "right" }, { - "content" : "7", + "content" : "9", "align" : "right" }, { "content" : "1", @@ -947,22 +947,22 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { - "content" : "perform(Unknown)", + "content" : "handleMemberReference(MetricsVisitorState,GraphMetricsCollector,Unknown)", "align" : "left" }, { "content" : "2", "align" : "right" }, { - "content" : "11", + "content" : "6", "align" : "right" }, { - "content" : "5", + "content" : "2", "align" : "right" }, { - "content" : "10/1/20, 8:46 AM", + "content" : "8/19/26, 7:20 PM", "align" : "right" }, { "content" : "1", @@ -970,102 +970,102 @@ } ] }, { "cells" : [ { - "content" : "DependencyVisitorLogic.java", + "content" : "DirectedFeedbackVertexSetSolver.java", "align" : "left" }, { - "content" : "enterClassDeclaration(DependencyVisitorState,Unknown,boolean,SourcePathResolver)", + "content" : "addBypassEdges(V,Set<V>)", "align" : "left" }, { "content" : "3", "align" : "right" }, { - "content" : "9", + "content" : "7", "align" : "right" }, { - "content" : "4", + "content" : "3", "align" : "right" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "8/26/26, 7:48 PM", "align" : "right" }, { - "content" : "0", + "content" : "3", "align" : "right" } ] }, { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "DependencyVisitorLogic.java", "align" : "left" }, { - "content" : "apply(Unknown,Unknown)", + "content" : "enterClassDeclaration(DependencyVisitorState,Unknown,boolean,SourcePathResolver)", "align" : "left" }, { "content" : "4", "align" : "right" }, { - "content" : "11", + "content" : "8", "align" : "right" }, { - "content" : "8", + "content" : "4", "align" : "right" }, { - "content" : "10/1/20, 8:46 AM", + "content" : "9/5/26, 1:41 PM", "align" : "right" }, { - "content" : "1", + "content" : "6", "align" : "right" } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "DisharmonyDetector.java", "align" : "left" }, { - "content" : "handleMemberReference(MetricsVisitorState,GraphMetricsCollector,Unknown)", + "content" : "detectSignificantDuplication(List<ClassMetrics>)", "align" : "left" }, { "content" : "5", "align" : "right" }, { - "content" : "4", + "content" : "10", "align" : "right" }, { - "content" : "2", + "content" : "6", "align" : "right" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "9/5/26, 1:41 PM", "align" : "right" }, { - "content" : "0", + "content" : "15", "align" : "right" } ] }, { "cells" : [ { - "content" : "DirectedFeedbackVertexSetSolver.java", + "content" : "JsonGenerator.java", "align" : "left" }, { - "content" : "addBypassEdges(V,Set<V>)", + "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", "align" : "left" }, { "content" : "6", "align" : "right" }, { - "content" : "5", + "content" : "11", "align" : "right" }, { - "content" : "3", + "content" : "9", "align" : "right" }, { - "content" : "8/26/26, 7:48 PM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { - "content" : "3", + "content" : "8", "align" : "right" } ] }, { "cells" : [ { - "content" : "DisharmonyDetector.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { - "content" : "detectSignificantDuplication(List<ClassMetrics>)", + "content" : "enterClass(MetricsVisitorState,GraphMetricsCollector,Unknown)", "align" : "left" }, { "content" : "7", @@ -1074,21 +1074,21 @@ "content" : "6", "align" : "right" }, { - "content" : "6", + "content" : "5", "align" : "right" }, { - "content" : "9/5/26, 1:41 PM", + "content" : "8/19/26, 7:20 PM", "align" : "right" }, { - "content" : "2", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "AttributeHandlerAndSorter.java", "align" : "left" }, { - "content" : "enterClass(MetricsVisitorState,GraphMetricsCollector,Unknown)", + "content" : "perform(Unknown)", "align" : "left" }, { "content" : "8", @@ -1100,38 +1100,38 @@ "content" : "5", "align" : "right" }, { - "content" : "1/18/38, 9:14 PM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { - "content" : "0", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "AttributeHandlerAndSorter.java", "align" : "left" }, { - "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", + "content" : "apply(Unknown,Unknown)", "align" : "left" }, { "content" : "9", "align" : "right" }, { - "content" : "8", + "content" : "4", "align" : "right" }, { - "content" : "9", + "content" : "8", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { - "content" : "7", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "AttributeHandler2.java", + "content" : "AttributeHandler2.java", "align" : "left" }, { "content" : "apply(Unknown,Unknown)", @@ -1140,7 +1140,7 @@ "content" : "10", "align" : "right" }, { - "content" : "1", + "content" : "2", "align" : "right" }, { "content" : "7", @@ -1154,7 +1154,7 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandler.java", + "content" : "AttributeHandler.java", "align" : "left" }, { "content" : "apply(Unknown,Unknown)", @@ -1163,7 +1163,7 @@ "content" : "11", "align" : "right" }, { - "content" : "2", + "content" : "3", "align" : "right" }, { "content" : "8", @@ -1188,77 +1188,77 @@ "chart" : { "canvasId" : "chart_FEATURE_ENVY", "bubbles" : [ { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", - "x" : 2, - "y" : 6, + "id" : "ReportWriter.java", + "label" : "ReportWriter.java", + "x" : 1, + "y" : 5, "r" : 24, "priority" : 1, - "effortRank" : 2, - "changePronenessRank" : 6, + "effortRank" : 1, + "changePronenessRank" : 5, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" }, { - "id" : "ReportWriter.java", - "label" : "ReportWriter.java", - "x" : 1, + "id" : "MetricsVisitorLogic.java", + "label" : "MetricsVisitorLogic.java", + "x" : 3, "y" : 4, "r" : 20, "priority" : 2, - "effortRank" : 1, + "effortRank" : 3, "changePronenessRank" : 4, "color" : "rgba(196, 86, 61, 0.75)", "borderColor" : "rgb(196, 86, 61)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { - "id" : "MetricsVisitorLogic.java", - "label" : "MetricsVisitorLogic.java", - "x" : 3, - "y" : 3, + "id" : "JsonGenerator.java", + "label" : "JsonGenerator.java", + "x" : 5, + "y" : 6, "r" : 17, "priority" : 3, - "effortRank" : 3, - "changePronenessRank" : 3, + "effortRank" : 5, + "changePronenessRank" : 6, "color" : "rgba(157, 108, 70, 0.75)", "borderColor" : "rgb(157, 108, 70)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" }, { - "id" : "JsonGenerator.java", - "label" : "JsonGenerator.java", - "x" : 5, - "y" : 5, + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", + "x" : 2, + "y" : 2, "r" : 13, "priority" : 4, - "effortRank" : 5, - "changePronenessRank" : 5, + "effortRank" : 2, + "changePronenessRank" : 2, "color" : "rgba(117, 130, 78, 0.75)", "borderColor" : "rgb(117, 130, 78)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" }, { - "id" : "AttributeHandler.java", - "label" : "AttributeHandler.java", - "x" : 2, - "y" : 1, + "id" : "MetricsVisitorLogic.java", + "label" : "MetricsVisitorLogic.java", + "x" : 4, + "y" : 4, "r" : 10, "priority" : 5, - "effortRank" : 2, - "changePronenessRank" : 1, + "effortRank" : 4, + "changePronenessRank" : 4, "color" : "rgba(78, 152, 87, 0.75)", "borderColor" : "rgb(78, 152, 87)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandler.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { - "id" : "MetricsVisitorLogic.java", - "label" : "MetricsVisitorLogic.java", - "x" : 4, - "y" : 3, + "id" : "AttributeHandler.java", + "label" : "AttributeHandler.java", + "x" : 2, + "y" : 1, "r" : 6, "priority" : 6, - "effortRank" : 4, - "changePronenessRank" : 3, + "effortRank" : 2, + "changePronenessRank" : 1, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandler.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -1267,33 +1267,33 @@ "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "ReportWriter.java", "align" : "left" }, { - "content" : "apply(Unknown,Unknown)", + "content" : "writeAtomically(Path,String)", "align" : "left" }, { "content" : "1", "align" : "right" }, { - "content" : "6", + "content" : "5", "align" : "right" }, { - "content" : "2", + "content" : "1", "align" : "right" }, { - "content" : "10/1/20, 8:46 AM", + "content" : "9/5/26, 8:03 AM", "align" : "right" }, { - "content" : "1", + "content" : "10", "align" : "right" } ] }, { "cells" : [ { - "content" : "ReportWriter.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { - "content" : "writeAtomically(Path,String)", + "content" : "leaveClass(MetricsVisitorState,GraphMetricsCollector,Unknown,MetricsVisitorLogic$ClassStateSnapshot)", "align" : "left" }, { "content" : "2", @@ -1302,79 +1302,79 @@ "content" : "4", "align" : "right" }, { - "content" : "1", + "content" : "3", "align" : "right" }, { - "content" : "9/5/26, 8:03 AM", + "content" : "8/19/26, 7:20 PM", "align" : "right" }, { - "content" : "10", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "JsonGenerator.java", "align" : "left" }, { - "content" : "leaveClass(MetricsVisitorState,GraphMetricsCollector,Unknown,MetricsVisitorLogic$ClassStateSnapshot)", + "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", "align" : "left" }, { "content" : "3", "align" : "right" }, { - "content" : "3", + "content" : "6", "align" : "right" }, { - "content" : "3", + "content" : "5", "align" : "right" }, { - "content" : "8/19/26, 7:20 PM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { - "content" : "1", + "content" : "8", "align" : "right" } ] }, { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "AttributeHandlerAndSorter.java", "align" : "left" }, { - "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", + "content" : "apply(Unknown,Unknown)", "align" : "left" }, { "content" : "4", "align" : "right" }, { - "content" : "5", + "content" : "2", "align" : "right" }, { - "content" : "5", + "content" : "2", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { - "content" : "7", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "AttributeHandler.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { - "content" : "apply(Unknown,Unknown)", + "content" : "leaveMethod(MetricsVisitorState,GraphMetricsCollector,MetricsVisitorLogic$MethodStateSnapshot)", "align" : "left" }, { "content" : "5", "align" : "right" }, { - "content" : "1", + "content" : "4", "align" : "right" }, { - "content" : "2", + "content" : "4", "align" : "right" }, { - "content" : "10/1/20, 8:46 AM", + "content" : "8/19/26, 7:20 PM", "align" : "right" }, { "content" : "1", @@ -1382,22 +1382,22 @@ } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "AttributeHandler.java", "align" : "left" }, { - "content" : "leaveMethod(MetricsVisitorState,GraphMetricsCollector,MetricsVisitorLogic$MethodStateSnapshot)", + "content" : "apply(Unknown,Unknown)", "align" : "left" }, { "content" : "6", "align" : "right" }, { - "content" : "3", + "content" : "1", "align" : "right" }, { - "content" : "4", + "content" : "2", "align" : "right" }, { - "content" : "8/19/26, 7:20 PM", + "content" : "10/1/20, 8:46 AM", "align" : "right" }, { "content" : "1", @@ -1426,19 +1426,19 @@ "changePronenessRank" : 14, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" }, { "id" : "CompositeGraphBuilder.java", "label" : "CompositeGraphBuilder.java", "x" : 2, - "y" : 11, + "y" : 10, "r" : 23, "priority" : 2, "effortRank" : 2, - "changePronenessRank" : 11, + "changePronenessRank" : 10, "color" : "rgba(222, 71, 55, 0.75)", "borderColor" : "rgb(222, 71, 55)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" }, { "id" : "SimpleHtmlReport.java", "label" : "SimpleHtmlReport.java", @@ -1450,7 +1450,7 @@ "changePronenessRank" : 14, "color" : "rgba(209, 79, 58, 0.75)", "borderColor" : "rgb(209, 79, 58)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" }, { "id" : "SimpleHtmlReport.java", "label" : "SimpleHtmlReport.java", @@ -1462,7 +1462,7 @@ "changePronenessRank" : 14, "color" : "rgba(196, 86, 61, 0.75)", "borderColor" : "rgb(196, 86, 61)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java" }, { "id" : "JsonGenerator.java", "label" : "JsonGenerator.java", @@ -1474,7 +1474,7 @@ "changePronenessRank" : 16, "color" : "rgba(183, 93, 64, 0.75)", "borderColor" : "rgb(183, 93, 64)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" }, { "id" : "OptimalBackEdgeRemover.java", "label" : "OptimalBackEdgeRemover.java", @@ -1486,7 +1486,7 @@ "changePronenessRank" : 5, "color" : "rgba(170, 101, 67, 0.75)", "borderColor" : "rgb(170, 101, 67)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/dsm/OptimalBackEdgeRemover.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/dsm/OptimalBackEdgeRemover.java" }, { "id" : "FeedbackVertexSetSolver.java", "label" : "FeedbackVertexSetSolver.java", @@ -1498,43 +1498,43 @@ "changePronenessRank" : 8, "color" : "rgba(157, 108, 70, 0.75)", "borderColor" : "rgb(157, 108, 70)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java" - }, { - "id" : "CompositeGraphBuilder.java", - "label" : "CompositeGraphBuilder.java", - "x" : 7, - "y" : 11, - "r" : 16, - "priority" : 8, - "effortRank" : 7, - "changePronenessRank" : 11, - "color" : "rgba(144, 115, 73, 0.75)", - "borderColor" : "rgb(144, 115, 73)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java" }, { "id" : "JsonGenerator.java", "label" : "JsonGenerator.java", "x" : 12, "y" : 16, - "r" : 14, - "priority" : 9, + "r" : 16, + "priority" : 8, "effortRank" : 12, "changePronenessRank" : 16, - "color" : "rgba(130, 123, 75, 0.75)", - "borderColor" : "rgb(130, 123, 75)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" + "color" : "rgba(144, 115, 73, 0.75)", + "borderColor" : "rgb(144, 115, 73)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java" }, { "id" : "TreewidthComputer.java", "label" : "TreewidthComputer.java", "x" : 3, "y" : 6, - "r" : 13, - "priority" : 10, + "r" : 14, + "priority" : 9, "effortRank" : 3, "changePronenessRank" : 6, + "color" : "rgba(130, 123, 75, 0.75)", + "borderColor" : "rgb(130, 123, 75)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + }, { + "id" : "CompositeGraphBuilder.java", + "label" : "CompositeGraphBuilder.java", + "x" : 7, + "y" : 10, + "r" : 13, + "priority" : 10, + "effortRank" : 7, + "changePronenessRank" : 10, "color" : "rgba(117, 130, 78, 0.75)", "borderColor" : "rgb(117, 130, 78)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/CompositeGraphBuilder.java" }, { "id" : "DirectedFeedbackVertexSetSolver.java", "label" : "DirectedFeedbackVertexSetSolver.java", @@ -1546,43 +1546,43 @@ "changePronenessRank" : 7, "color" : "rgba(104, 137, 81, 0.75)", "borderColor" : "rgb(104, 137, 81)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + }, { + "id" : "DisharmonyDetector.java", + "label" : "DisharmonyDetector.java", + "x" : 11, + "y" : 11, + "r" : 11, + "priority" : 12, + "effortRank" : 11, + "changePronenessRank" : 11, + "color" : "rgba(91, 145, 84, 0.75)", + "borderColor" : "rgb(91, 145, 84)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" }, { "id" : "MinimumFeedbackArcSetSolver.java", "label" : "MinimumFeedbackArcSetSolver.java", "x" : 3, "y" : 1, - "r" : 11, - "priority" : 12, + "r" : 10, + "priority" : 13, "effortRank" : 3, "changePronenessRank" : 1, - "color" : "rgba(91, 145, 84, 0.75)", - "borderColor" : "rgb(91, 145, 84)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" + "color" : "rgba(78, 152, 87, 0.75)", + "borderColor" : "rgb(78, 152, 87)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" }, { "id" : "MetricsVisitorLogic.java", "label" : "MetricsVisitorLogic.java", "x" : 6, "y" : 4, - "r" : 10, - "priority" : 13, - "effortRank" : 6, - "changePronenessRank" : 4, - "color" : "rgba(78, 152, 87, 0.75)", - "borderColor" : "rgb(78, 152, 87)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" - }, { - "id" : "DisharmonyDetector.java", - "label" : "DisharmonyDetector.java", - "x" : 11, - "y" : 9, "r" : 8, "priority" : 14, - "effortRank" : 11, - "changePronenessRank" : 9, + "effortRank" : 6, + "changePronenessRank" : 4, "color" : "rgba(65, 159, 90, 0.75)", "borderColor" : "rgb(65, 159, 90)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { "id" : "MetricsVisitorLogic.java", "label" : "MetricsVisitorLogic.java", @@ -1594,7 +1594,7 @@ "changePronenessRank" : 4, "color" : "rgba(52, 167, 93, 0.75)", "borderColor" : "rgb(52, 167, 93)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { "id" : "MetricsVisitorLogic.java", "label" : "MetricsVisitorLogic.java", @@ -1606,7 +1606,7 @@ "changePronenessRank" : 4, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -1615,7 +1615,7 @@ "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "SimpleHtmlReport.java", + "content" : "SimpleHtmlReport.java", "align" : "left" }, { "content" : "simplifyDuplicatePartners(String)", @@ -1638,7 +1638,7 @@ } ] }, { "cells" : [ { - "content" : "CompositeGraphBuilder.java", + "content" : "CompositeGraphBuilder.java", "align" : "left" }, { "content" : "reconcileUnattributedVertices(Unknown,Unknown,Map<String,String>)", @@ -1647,7 +1647,7 @@ "content" : "2", "align" : "right" }, { - "content" : "11", + "content" : "10", "align" : "right" }, { "content" : "2", @@ -1661,7 +1661,7 @@ } ] }, { "cells" : [ { - "content" : "SimpleHtmlReport.java", + "content" : "SimpleHtmlReport.java", "align" : "left" }, { "content" : "renderDisharmonyInfo(String,SimpleHtmlReport$DisharmonySpec,boolean,List<RankedDisharmony>)", @@ -1684,7 +1684,7 @@ } ] }, { "cells" : [ { - "content" : "SimpleHtmlReport.java", + "content" : "SimpleHtmlReport.java", "align" : "left" }, { "content" : "generateReport(boolean,int,boolean,boolean,String,String,String,File)", @@ -1707,7 +1707,7 @@ } ] }, { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "JsonGenerator.java", "align" : "left" }, { "content" : "buildDisharmonySection(SimpleHtmlReport$DisharmonySpec,boolean,List<RankedDisharmony>,String)", @@ -1722,15 +1722,15 @@ "content" : "11", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { - "content" : "7", + "content" : "8", "align" : "right" } ] }, { "cells" : [ { - "content" : "OptimalBackEdgeRemover.java", + "content" : "OptimalBackEdgeRemover.java", "align" : "left" }, { "content" : "findOptimalBackEdgesToRemove()", @@ -1753,7 +1753,7 @@ } ] }, { "cells" : [ { - "content" : "FeedbackVertexSetSolver.java", + "content" : "FeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "solveRecursive(Unknown,Set<V>)", @@ -1776,22 +1776,22 @@ } ] }, { "cells" : [ { - "content" : "CompositeGraphBuilder.java", + "content" : "JsonGenerator.java", "align" : "left" }, { - "content" : "getEnclosingClassFqn(String)", + "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", "align" : "left" }, { "content" : "8", "align" : "right" }, { - "content" : "11", + "content" : "16", "align" : "right" }, { - "content" : "7", + "content" : "12", "align" : "right" }, { - "content" : "9/5/26, 1:41 PM", + "content" : "10/2/26, 7:43 AM", "align" : "right" }, { "content" : "8", @@ -1799,53 +1799,53 @@ } ] }, { "cells" : [ { - "content" : "JsonGenerator.java", + "content" : "TreewidthComputer.java", "align" : "left" }, { - "content" : "generateReportData(boolean,int,boolean,boolean,String,String,String,File)", + "content" : "minDegreeEliminationTreewidth(Unknown)", "align" : "left" }, { "content" : "9", "align" : "right" }, { - "content" : "16", + "content" : "6", "align" : "right" }, { - "content" : "12", + "content" : "3", "align" : "right" }, { - "content" : "10/2/26, 6:02 AM", + "content" : "7/12/26, 3:24 PM", "align" : "right" }, { - "content" : "7", + "content" : "2", "align" : "right" } ] }, { "cells" : [ { - "content" : "TreewidthComputer.java", + "content" : "CompositeGraphBuilder.java", "align" : "left" }, { - "content" : "minDegreeEliminationTreewidth(Unknown)", + "content" : "getEnclosingClassFqn(String)", "align" : "left" }, { "content" : "10", "align" : "right" }, { - "content" : "6", + "content" : "10", "align" : "right" }, { - "content" : "3", + "content" : "7", "align" : "right" }, { - "content" : "7/12/26, 3:24 PM", + "content" : "9/5/26, 1:41 PM", "align" : "right" }, { - "content" : "2", + "content" : "8", "align" : "right" } ] }, { "cells" : [ { - "content" : "DirectedFeedbackVertexSetSolver.java", + "content" : "DirectedFeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "computeMinimumVertexCut(V,Set<V>,int)", @@ -1868,45 +1868,45 @@ } ] }, { "cells" : [ { - "content" : "MinimumFeedbackArcSetSolver.java", + "content" : "DisharmonyDetector.java", "align" : "left" }, { - "content" : "solveRelaxedProblem()", + "content" : "detectSignificantDuplication(List<ClassMetrics>)", "align" : "left" }, { "content" : "12", "align" : "right" }, { - "content" : "1", + "content" : "11", "align" : "right" }, { - "content" : "3", + "content" : "11", "align" : "right" }, { - "content" : "12/18/25, 11:00 AM", + "content" : "9/5/26, 1:41 PM", "align" : "right" }, { - "content" : "1", + "content" : "15", "align" : "right" } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "MinimumFeedbackArcSetSolver.java", "align" : "left" }, { - "content" : "handleMemberReference(MetricsVisitorState,GraphMetricsCollector,Unknown)", + "content" : "solveRelaxedProblem()", "align" : "left" }, { "content" : "13", "align" : "right" }, { - "content" : "4", + "content" : "1", "align" : "right" }, { - "content" : "6", + "content" : "3", "align" : "right" }, { - "content" : "8/19/26, 7:20 PM", + "content" : "12/18/25, 11:00 AM", "align" : "right" }, { "content" : "1", @@ -1914,30 +1914,30 @@ } ] }, { "cells" : [ { - "content" : "DisharmonyDetector.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { - "content" : "detectSignificantDuplication(List<ClassMetrics>)", + "content" : "handleMemberReference(MetricsVisitorState,GraphMetricsCollector,Unknown)", "align" : "left" }, { "content" : "14", "align" : "right" }, { - "content" : "9", + "content" : "4", "align" : "right" }, { - "content" : "11", + "content" : "6", "align" : "right" }, { - "content" : "9/5/26, 1:41 PM", + "content" : "8/19/26, 7:20 PM", "align" : "right" }, { - "content" : "15", + "content" : "1", "align" : "right" } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { "content" : "enterMethod(MetricsVisitorState,Unknown,MetricsVisitorLogic$OverridePredicate)", @@ -1960,7 +1960,7 @@ } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { "content" : "enterClass(MetricsVisitorState,GraphMetricsCollector,Unknown)", @@ -2004,391 +2004,391 @@ "changePronenessRank" : 31, "color" : "rgba(235, 64, 52, 0.75)", "borderColor" : "rgb(235, 64, 52)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/GraphMetricsCollector.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/GraphMetricsCollector.java" }, { "id" : "GitLogReader.java", "label" : "GitLogReader.java", "x" : 2, - "y" : 29, + "y" : 30, "r" : 23, "priority" : 2, "effortRank" : 2, - "changePronenessRank" : 29, + "changePronenessRank" : 30, "color" : "rgba(229, 67, 53, 0.75)", "borderColor" : "rgb(229, 67, 53)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/change-proneness-ranker/src/main/java/org/hjug/git/GitLogReader.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/change-proneness-ranker/src/main/java/org/hjug/git/GitLogReader.java" }, { - "id" : "AttributeHandlerAndSorter.java", - "label" : "AttributeHandlerAndSorter.java", - "x" : 7, - "y" : 33, + "id" : "ReportWriter.java", + "label" : "ReportWriter.java", + "x" : 4, + "y" : 29, "r" : 23, "priority" : 3, - "effortRank" : 7, - "changePronenessRank" : 33, + "effortRank" : 4, + "changePronenessRank" : 29, "color" : "rgba(223, 71, 55, 0.75)", "borderColor" : "rgb(223, 71, 55)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/test-resources/src/main/resources/AttributeHandlerAndSorter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" }, { - "id" : "ReportWriter.java", - "label" : "ReportWriter.java", - "x" : 4, - "y" : 28, + "id" : "DisharmonyDetector.java", + "label" : "DisharmonyDetector.java", + "x" : 8, + "y" : 33, "r" : 22, "priority" : 4, - "effortRank" : 4, - "changePronenessRank" : 28, + "effortRank" : 8, + "changePronenessRank" : 33, "color" : "rgba(217, 74, 56, 0.75)", "borderColor" : "rgb(217, 74, 56)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" }, { "id" : "FeedbackVertexSetSolver.java", "label" : "FeedbackVertexSetSolver.java", "x" : 2, - "y" : 25, + "y" : 26, "r" : 22, "priority" : 5, "effortRank" : 2, - "changePronenessRank" : 25, + "changePronenessRank" : 26, "color" : "rgba(211, 78, 58, 0.75)", "borderColor" : "rgb(211, 78, 58)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/approximate/FeedbackVertexSetSolver.java" }, { "id" : "ReportWriter.java", "label" : "ReportWriter.java", "x" : 5, - "y" : 28, + "y" : 29, "r" : 21, "priority" : 6, "effortRank" : 5, - "changePronenessRank" : 28, + "changePronenessRank" : 29, "color" : "rgba(204, 81, 59, 0.75)", "borderColor" : "rgb(204, 81, 59)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" - }, { - "id" : "DisharmonyDetector.java", - "label" : "DisharmonyDetector.java", - "x" : 8, - "y" : 30, - "r" : 21, - "priority" : 7, - "effortRank" : 8, - "changePronenessRank" : 30, - "color" : "rgba(198, 85, 60, 0.75)", - "borderColor" : "rgb(198, 85, 60)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/DisharmonyDetector.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" }, { "id" : "KotlinSourceFileGraphBuilder.java", "label" : "KotlinSourceFileGraphBuilder.java", "x" : 12, "y" : 32, - "r" : 20, - "priority" : 8, + "r" : 21, + "priority" : 7, "effortRank" : 12, "changePronenessRank" : 32, - "color" : "rgba(192, 88, 62, 0.75)", - "borderColor" : "rgb(192, 88, 62)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/KotlinSourceFileGraphBuilder.java" + "color" : "rgba(198, 85, 60, 0.75)", + "borderColor" : "rgb(198, 85, 60)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/graphbuilder/KotlinSourceFileGraphBuilder.java" }, { "id" : "ReportWriter.java", "label" : "ReportWriter.java", "x" : 10, - "y" : 28, + "y" : 29, "r" : 20, - "priority" : 9, + "priority" : 8, "effortRank" : 10, - "changePronenessRank" : 28, - "color" : "rgba(186, 92, 63, 0.75)", - "borderColor" : "rgb(186, 92, 63)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" + "changePronenessRank" : 29, + "color" : "rgba(192, 88, 62, 0.75)", + "borderColor" : "rgb(192, 88, 62)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java" }, { "id" : "DirectedFeedbackVertexSetSolver.java", "label" : "DirectedFeedbackVertexSetSolver.java", "x" : 8, - "y" : 24, - "r" : 19, - "priority" : 10, + "y" : 25, + "r" : 20, + "priority" : 9, "effortRank" : 8, - "changePronenessRank" : 24, - "color" : "rgba(180, 95, 64, 0.75)", - "borderColor" : "rgb(180, 95, 64)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + "changePronenessRank" : 25, + "color" : "rgba(186, 92, 63, 0.75)", + "borderColor" : "rgb(186, 92, 63)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" }, { "id" : "MetricsVisitorLogic.java", "label" : "MetricsVisitorLogic.java", "x" : 3, - "y" : 18, - "r" : 18, - "priority" : 11, + "y" : 19, + "r" : 19, + "priority" : 10, "effortRank" : 3, - "changePronenessRank" : 18, - "color" : "rgba(174, 98, 66, 0.75)", - "borderColor" : "rgb(174, 98, 66)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" + "changePronenessRank" : 19, + "color" : "rgba(180, 95, 64, 0.75)", + "borderColor" : "rgb(180, 95, 64)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/MetricsVisitorLogic.java" }, { "id" : "DirectedFeedbackVertexSetSolver.java", "label" : "DirectedFeedbackVertexSetSolver.java", "x" : 9, - "y" : 24, + "y" : 25, "r" : 18, - "priority" : 12, + "priority" : 11, "effortRank" : 9, - "changePronenessRank" : 24, - "color" : "rgba(168, 102, 67, 0.75)", - "borderColor" : "rgb(168, 102, 67)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + "changePronenessRank" : 25, + "color" : "rgba(174, 98, 66, 0.75)", + "borderColor" : "rgb(174, 98, 66)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" }, { "id" : "TreewidthComputer.java", "label" : "TreewidthComputer.java", "x" : 7, - "y" : 21, + "y" : 22, + "r" : 18, + "priority" : 12, + "effortRank" : 7, + "changePronenessRank" : 22, + "color" : "rgba(168, 102, 67, 0.75)", + "borderColor" : "rgb(168, 102, 67)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + }, { + "id" : "ModulatorComputer.java", + "label" : "ModulatorComputer.java", + "x" : 4, + "y" : 17, "r" : 17, "priority" : 13, - "effortRank" : 7, - "changePronenessRank" : 21, + "effortRank" : 4, + "changePronenessRank" : 17, "color" : "rgba(162, 105, 69, 0.75)", "borderColor" : "rgb(162, 105, 69)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", "x" : 4, - "y" : 16, + "y" : 17, "r" : 17, "priority" : 14, "effortRank" : 4, - "changePronenessRank" : 16, + "changePronenessRank" : 17, "color" : "rgba(155, 109, 70, 0.75)", "borderColor" : "rgb(155, 109, 70)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" - }, { - "id" : "ModulatorComputer.java", - "label" : "ModulatorComputer.java", - "x" : 4, - "y" : 16, - "r" : 16, - "priority" : 15, - "effortRank" : 4, - "changePronenessRank" : 16, - "color" : "rgba(149, 112, 71, 0.75)", - "borderColor" : "rgb(149, 112, 71)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "TreewidthComputer.java", "label" : "TreewidthComputer.java", "x" : 9, - "y" : 21, + "y" : 22, "r" : 16, - "priority" : 16, + "priority" : 15, "effortRank" : 9, - "changePronenessRank" : 21, - "color" : "rgba(143, 116, 73, 0.75)", - "borderColor" : "rgb(143, 116, 73)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + "changePronenessRank" : 22, + "color" : "rgba(149, 112, 71, 0.75)", + "borderColor" : "rgb(149, 112, 71)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", "x" : 5, - "y" : 16, - "r" : 15, - "priority" : 17, + "y" : 17, + "r" : 16, + "priority" : 16, "effortRank" : 5, - "changePronenessRank" : 16, - "color" : "rgba(137, 119, 74, 0.75)", - "borderColor" : "rgb(137, 119, 74)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "changePronenessRank" : 17, + "color" : "rgba(143, 116, 73, 0.75)", + "borderColor" : "rgb(143, 116, 73)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "TreewidthComputer.java", "label" : "TreewidthComputer.java", "x" : 10, - "y" : 21, - "r" : 14, - "priority" : 18, + "y" : 22, + "r" : 15, + "priority" : 17, "effortRank" : 10, - "changePronenessRank" : 21, - "color" : "rgba(131, 122, 75, 0.75)", - "borderColor" : "rgb(131, 122, 75)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" + "changePronenessRank" : 22, + "color" : "rgba(137, 119, 74, 0.75)", + "borderColor" : "rgb(137, 119, 74)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/TreewidthComputer.java" }, { "id" : "DirectedFeedbackVertexSetSolver.java", "label" : "DirectedFeedbackVertexSetSolver.java", "x" : 13, - "y" : 24, + "y" : 25, "r" : 14, - "priority" : 19, + "priority" : 18, "effortRank" : 13, - "changePronenessRank" : 24, - "color" : "rgba(125, 126, 77, 0.75)", - "borderColor" : "rgb(125, 126, 77)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" + "changePronenessRank" : 25, + "color" : "rgba(131, 122, 75, 0.75)", + "borderColor" : "rgb(131, 122, 75)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/DirectedFeedbackVertexSetSolver.java" }, { "id" : "FeedbackVertexSetComputer.java", "label" : "FeedbackVertexSetComputer.java", "x" : 4, - "y" : 14, + "y" : 15, + "r" : 14, + "priority" : 19, + "effortRank" : 4, + "changePronenessRank" : 15, + "color" : "rgba(125, 126, 77, 0.75)", + "borderColor" : "rgb(125, 126, 77)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/FeedbackVertexSetComputer.java" + }, { + "id" : "ModulatorComputer.java", + "label" : "ModulatorComputer.java", + "x" : 6, + "y" : 17, "r" : 13, "priority" : 20, - "effortRank" : 4, - "changePronenessRank" : 14, + "effortRank" : 6, + "changePronenessRank" : 17, "color" : "rgba(119, 129, 78, 0.75)", "borderColor" : "rgb(119, 129, 78)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/FeedbackVertexSetComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", - "x" : 6, - "y" : 16, + "x" : 7, + "y" : 17, "r" : 13, "priority" : 21, - "effortRank" : 6, - "changePronenessRank" : 16, + "effortRank" : 7, + "changePronenessRank" : 17, "color" : "rgba(113, 133, 80, 0.75)", "borderColor" : "rgb(113, 133, 80)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", - "x" : 7, - "y" : 16, + "x" : 8, + "y" : 17, "r" : 12, "priority" : 22, - "effortRank" : 7, - "changePronenessRank" : 16, + "effortRank" : 8, + "changePronenessRank" : 17, "color" : "rgba(106, 136, 81, 0.75)", "borderColor" : "rgb(106, 136, 81)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", "x" : 8, - "y" : 16, + "y" : 17, "r" : 12, "priority" : 23, "effortRank" : 8, - "changePronenessRank" : 16, + "changePronenessRank" : 17, "color" : "rgba(100, 140, 82, 0.75)", "borderColor" : "rgb(100, 140, 82)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { - "id" : "ModulatorComputer.java", - "label" : "ModulatorComputer.java", - "x" : 8, - "y" : 16, + "id" : "CycleRemovalComputer.java", + "label" : "CycleRemovalComputer.java", + "x" : 9, + "y" : 18, "r" : 11, "priority" : 24, - "effortRank" : 8, - "changePronenessRank" : 16, + "effortRank" : 9, + "changePronenessRank" : 18, "color" : "rgba(94, 143, 84, 0.75)", "borderColor" : "rgb(94, 143, 84)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/CycleRemovalComputer.java" }, { - "id" : "CycleRemovalComputer.java", - "label" : "CycleRemovalComputer.java", - "x" : 9, - "y" : 17, + "id" : "MinimumFeedbackArcSetSolver.java", + "label" : "MinimumFeedbackArcSetSolver.java", + "x" : 4, + "y" : 10, "r" : 11, "priority" : 25, - "effortRank" : 9, - "changePronenessRank" : 17, + "effortRank" : 4, + "changePronenessRank" : 10, "color" : "rgba(88, 147, 85, 0.75)", "borderColor" : "rgb(88, 147, 85)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/CycleRemovalComputer.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" }, { "id" : "MinimumFeedbackArcSetSolver.java", "label" : "MinimumFeedbackArcSetSolver.java", "x" : 4, - "y" : 9, + "y" : 10, "r" : 10, "priority" : 26, "effortRank" : 4, - "changePronenessRank" : 9, + "changePronenessRank" : 10, "color" : "rgba(82, 150, 86, 0.75)", "borderColor" : "rgb(82, 150, 86)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" - }, { - "id" : "MinimumFeedbackArcSetSolver.java", - "label" : "MinimumFeedbackArcSetSolver.java", - "x" : 4, - "y" : 9, - "r" : 9, - "priority" : 27, - "effortRank" : 4, - "changePronenessRank" : 9, - "color" : "rgba(76, 153, 88, 0.75)", - "borderColor" : "rgb(76, 153, 88)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" }, { "id" : "LineDigraph.java", "label" : "LineDigraph.java", "x" : 8, - "y" : 13, + "y" : 14, "r" : 9, - "priority" : 28, + "priority" : 27, "effortRank" : 8, - "changePronenessRank" : 13, - "color" : "rgba(70, 157, 89, 0.75)", - "borderColor" : "rgb(70, 157, 89)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/pageRank/LineDigraph.java" + "changePronenessRank" : 14, + "color" : "rgba(76, 153, 88, 0.75)", + "borderColor" : "rgb(76, 153, 88)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/pageRank/LineDigraph.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", "x" : 11, - "y" : 16, - "r" : 8, - "priority" : 29, + "y" : 17, + "r" : 9, + "priority" : 28, "effortRank" : 11, - "changePronenessRank" : 16, - "color" : "rgba(64, 160, 91, 0.75)", - "borderColor" : "rgb(64, 160, 91)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "changePronenessRank" : 17, + "color" : "rgba(70, 157, 89, 0.75)", + "borderColor" : "rgb(70, 157, 89)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "FeedbackVertexSetComputer.java", "label" : "FeedbackVertexSetComputer.java", "x" : 10, - "y" : 14, + "y" : 15, "r" : 8, - "priority" : 30, + "priority" : 29, "effortRank" : 10, - "changePronenessRank" : 14, - "color" : "rgba(57, 164, 92, 0.75)", - "borderColor" : "rgb(57, 164, 92)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/FeedbackVertexSetComputer.java" + "changePronenessRank" : 15, + "color" : "rgba(64, 160, 91, 0.75)", + "borderColor" : "rgb(64, 160, 91)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/FeedbackVertexSetComputer.java" }, { "id" : "ModulatorComputer.java", "label" : "ModulatorComputer.java", "x" : 12, - "y" : 16, - "r" : 7, - "priority" : 31, + "y" : 17, + "r" : 8, + "priority" : 30, "effortRank" : 12, - "changePronenessRank" : 16, - "color" : "rgba(51, 167, 93, 0.75)", - "borderColor" : "rgb(51, 167, 93)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" + "changePronenessRank" : 17, + "color" : "rgba(57, 164, 92, 0.75)", + "borderColor" : "rgb(57, 164, 92)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/vertex/kernelized/ModulatorComputer.java" }, { "id" : "MinimumFeedbackArcSetSolver.java", "label" : "MinimumFeedbackArcSetSolver.java", "x" : 7, - "y" : 9, + "y" : 10, "r" : 7, - "priority" : 32, + "priority" : 31, "effortRank" : 7, - "changePronenessRank" : 9, - "color" : "rgba(45, 171, 95, 0.75)", - "borderColor" : "rgb(45, 171, 95)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" + "changePronenessRank" : 10, + "color" : "rgba(51, 167, 93, 0.75)", + "borderColor" : "rgb(51, 167, 93)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/exact/MinimumFeedbackArcSetSolver.java" }, { "id" : "FeedbackArcSetSolver.java", "label" : "FeedbackArcSetSolver.java", "x" : 4, - "y" : 2, + "y" : 3, + "r" : 7, + "priority" : 32, + "effortRank" : 4, + "changePronenessRank" : 3, + "color" : "rgba(45, 171, 95, 0.75)", + "borderColor" : "rgb(45, 171, 95)", + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/graph-algorithms/src/main/java/org/hjug/feedback/arc/approximate/FeedbackArcSetSolver.java" + }, { + "id" : "AttributeHandlerAndSorter.java", + "label" : "AttributeHandlerAndSorter.java", + "x" : 7, + "y" : 1, "r" : 6, "priority" : 33, - "effortRank" : 4, - "changePronenessRank" : 2, + "effortRank" : 7, + "changePronenessRank" : 1, "color" : "rgba(39, 174, 96, 0.75)", "borderColor" : "rgb(39, 174, 96)", - "url" : "https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/graph-algorithms/src/main/java/org/hjug/feedback/arc/approximate/FeedbackArcSetSolver.java" + "url" : "https://github.com/refactorfirst/RefactorFirst/blob/4ca6a4f0f8c0350a67f38089212ae42dae5d607c/test-resources/src/main/resources/AttributeHandlerAndSorter.java" } ], "xaxisLabel" : "Effort to refactor", "yaxisLabel" : "Relative churn (impact)" @@ -2397,7 +2397,7 @@ "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ], "rows" : [ { "cells" : [ { - "content" : "GraphMetricsCollector.java", + "content" : "GraphMetricsCollector.java", "align" : "left" }, { "content" : "finalizeMetrics()", @@ -2420,7 +2420,7 @@ } ] }, { "cells" : [ { - "content" : "GitLogReader.java", + "content" : "GitLogReader.java", "align" : "left" }, { "content" : "captureChangeCountByCommitTimestamp()", @@ -2429,7 +2429,7 @@ "content" : "2", "align" : "right" }, { - "content" : "29", + "content" : "30", "align" : "right" }, { "content" : "2", @@ -2443,53 +2443,53 @@ } ] }, { "cells" : [ { - "content" : "AttributeHandlerAndSorter.java", + "content" : "ReportWriter.java", "align" : "left" }, { - "content" : "perform(Unknown)", + "content" : "openSecurePath()", "align" : "left" }, { "content" : "3", "align" : "right" }, { - "content" : "33", + "content" : "29", "align" : "right" }, { - "content" : "7", + "content" : "4", "align" : "right" }, { - "content" : "10/1/20, 8:46 AM", + "content" : "9/5/26, 8:03 AM", "align" : "right" }, { - "content" : "1", + "content" : "10", "align" : "right" } ] }, { "cells" : [ { - "content" : "ReportWriter.java", + "content" : "DisharmonyDetector.java", "align" : "left" }, { - "content" : "openSecurePath()", + "content" : "detectFeatureEnvy(List<ClassMetrics>)", "align" : "left" }, { "content" : "4", "align" : "right" }, { - "content" : "28", + "content" : "33", "align" : "right" }, { - "content" : "4", + "content" : "8", "align" : "right" }, { - "content" : "9/5/26, 8:03 AM", + "content" : "9/5/26, 1:41 PM", "align" : "right" }, { - "content" : "10", + "content" : "15", "align" : "right" } ] }, { "cells" : [ { - "content" : "FeedbackVertexSetSolver.java", + "content" : "FeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "computeFractionalSolution()", @@ -2498,7 +2498,7 @@ "content" : "5", "align" : "right" }, { - "content" : "25", + "content" : "26", "align" : "right" }, { "content" : "2", @@ -2512,7 +2512,7 @@ } ] }, { "cells" : [ { - "content" : "ReportWriter.java", + "content" : "ReportWriter.java", "align" : "left" }, { "content" : "writeAtomically(Path,String)", @@ -2521,7 +2521,7 @@ "content" : "6", "align" : "right" }, { - "content" : "28", + "content" : "29", "align" : "right" }, { "content" : "5", @@ -2535,36 +2535,13 @@ } ] }, { "cells" : [ { - "content" : "DisharmonyDetector.java", - "align" : "left" - }, { - "content" : "detectFeatureEnvy(List<ClassMetrics>)", - "align" : "left" - }, { - "content" : "7", - "align" : "right" - }, { - "content" : "30", - "align" : "right" - }, { - "content" : "8", - "align" : "right" - }, { - "content" : "9/5/26, 1:41 PM", - "align" : "right" - }, { - "content" : "15", - "align" : "right" - } ] - }, { - "cells" : [ { - "content" : "KotlinSourceFileGraphBuilder.java", + "content" : "KotlinSourceFileGraphBuilder.java", "align" : "left" }, { "content" : "buildGraph(String,String,GraphBuilderConfig)", "align" : "left" }, { - "content" : "8", + "content" : "7", "align" : "right" }, { "content" : "32", @@ -2581,16 +2558,16 @@ } ] }, { "cells" : [ { - "content" : "ReportWriter.java", + "content" : "ReportWriter.java", "align" : "left" }, { "content" : "writeAtomicallySecure(SecureDirectoryStream<Path>,Path,String)", "align" : "left" }, { - "content" : "9", + "content" : "8", "align" : "right" }, { - "content" : "28", + "content" : "29", "align" : "right" }, { "content" : "10", @@ -2604,16 +2581,16 @@ } ] }, { "cells" : [ { - "content" : "DirectedFeedbackVertexSetSolver.java", + "content" : "DirectedFeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "createMinimalBypass(V,Set<V>,Set<E>)", "align" : "left" }, { - "content" : "10", + "content" : "9", "align" : "right" }, { - "content" : "24", + "content" : "25", "align" : "right" }, { "content" : "8", @@ -2627,16 +2604,16 @@ } ] }, { "cells" : [ { - "content" : "MetricsVisitorLogic.java", + "content" : "MetricsVisitorLogic.java", "align" : "left" }, { "content" : "handleMethodInvocation(MetricsVisitorState,GraphMetricsCollector,Unknown)", "align" : "left" }, { - "content" : "11", + "content" : "10", "align" : "right" }, { - "content" : "18", + "content" : "19", "align" : "right" }, { "content" : "3", @@ -2650,16 +2627,16 @@ } ] }, { "cells" : [ { - "content" : "DirectedFeedbackVertexSetSolver.java", + "content" : "DirectedFeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "findBypassChain(V,Set<V>)", "align" : "left" }, { - "content" : "12", + "content" : "11", "align" : "right" }, { - "content" : "24", + "content" : "25", "align" : "right" }, { "content" : "9", @@ -2673,16 +2650,16 @@ } ] }, { "cells" : [ { - "content" : "TreewidthComputer.java", + "content" : "TreewidthComputer.java", "align" : "left" }, { "content" : "computeEta(Unknown,Set<V>)", "align" : "left" }, { - "content" : "13", + "content" : "12", "align" : "right" }, { - "content" : "21", + "content" : "22", "align" : "right" }, { "content" : "7", @@ -2696,16 +2673,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeBetweennessCentrality(Unknown)", "align" : "left" }, { - "content" : "14", + "content" : "13", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "4", @@ -2719,16 +2696,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeGreedyDegreeModulator(Unknown,int,int)", "align" : "left" }, { - "content" : "15", + "content" : "14", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "4", @@ -2742,16 +2719,16 @@ } ] }, { "cells" : [ { - "content" : "TreewidthComputer.java", + "content" : "TreewidthComputer.java", "align" : "left" }, { "content" : "greedyTriangulationTreewidth(Unknown)", "align" : "left" }, { - "content" : "16", + "content" : "15", "align" : "right" }, { - "content" : "21", + "content" : "22", "align" : "right" }, { "content" : "9", @@ -2765,16 +2742,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeFeedbackVertexSetModulator(Unknown,int,int)", "align" : "left" }, { - "content" : "17", + "content" : "16", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "5", @@ -2788,16 +2765,16 @@ } ] }, { "cells" : [ { - "content" : "TreewidthComputer.java", + "content" : "TreewidthComputer.java", "align" : "left" }, { "content" : "fillInHeuristicTreewidth(Unknown)", "align" : "left" }, { - "content" : "18", + "content" : "17", "align" : "right" }, { - "content" : "21", + "content" : "22", "align" : "right" }, { "content" : "10", @@ -2811,16 +2788,16 @@ } ] }, { "cells" : [ { - "content" : "DirectedFeedbackVertexSetSolver.java", + "content" : "DirectedFeedbackVertexSetSolver.java", "align" : "left" }, { "content" : "addBypassEdges(V,Set<V>)", "align" : "left" }, { - "content" : "19", + "content" : "18", "align" : "right" }, { - "content" : "24", + "content" : "25", "align" : "right" }, { "content" : "13", @@ -2834,16 +2811,16 @@ } ] }, { "cells" : [ { - "content" : "FeedbackVertexSetComputer.java", + "content" : "FeedbackVertexSetComputer.java", "align" : "left" }, { "content" : "stronglyConnectedComponentsBasedFVS(Unknown)", "align" : "left" }, { - "content" : "20", + "content" : "19", "align" : "right" }, { - "content" : "14", + "content" : "15", "align" : "right" }, { "content" : "4", @@ -2857,16 +2834,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeSingleSourceBetweennessContributionsParallel(Unknown,V)", "align" : "left" }, { - "content" : "21", + "content" : "20", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "6", @@ -2880,16 +2857,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "originalComputeBetweennessCentrality(Unknown)", "align" : "left" }, { - "content" : "22", + "content" : "21", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "7", @@ -2903,16 +2880,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeSingleSourceBetweennessContributions(Unknown,V)", "align" : "left" }, { - "content" : "23", + "content" : "22", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "8", @@ -2926,16 +2903,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeBetweennessCentralityAdaptive(Unknown)", "align" : "left" }, { - "content" : "24", + "content" : "23", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "8", @@ -2949,16 +2926,16 @@ } ] }, { "cells" : [ { - "content" : "CycleRemovalComputer.java", + "content" : "CycleRemovalComputer.java", "align" : "left" }, { "content" : "computeCycleRemovalInformation(Unknown)", "align" : "left" }, { - "content" : "25", + "content" : "24", "align" : "right" }, { - "content" : "17", + "content" : "18", "align" : "right" }, { "content" : "9", @@ -2972,16 +2949,16 @@ } ] }, { "cells" : [ { - "content" : "MinimumFeedbackArcSetSolver.java", + "content" : "MinimumFeedbackArcSetSolver.java", "align" : "left" }, { "content" : "findShortestPath(Unknown,V)", "align" : "left" }, { - "content" : "26", + "content" : "25", "align" : "right" }, { - "content" : "9", + "content" : "10", "align" : "right" }, { "content" : "4", @@ -2995,16 +2972,16 @@ } ] }, { "cells" : [ { - "content" : "MinimumFeedbackArcSetSolver.java", + "content" : "MinimumFeedbackArcSetSolver.java", "align" : "left" }, { "content" : "solve()", "align" : "left" }, { - "content" : "27", + "content" : "26", "align" : "right" }, { - "content" : "9", + "content" : "10", "align" : "right" }, { "content" : "4", @@ -3018,16 +2995,16 @@ } ] }, { "cells" : [ { - "content" : "LineDigraph.java", + "content" : "LineDigraph.java", "align" : "left" }, { "content" : "topologicalSort()", "align" : "left" }, { - "content" : "28", + "content" : "27", "align" : "right" }, { - "content" : "13", + "content" : "14", "align" : "right" }, { "content" : "8", @@ -3041,16 +3018,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeTreewidthDecompositionModulator(Unknown,int,int)", "align" : "left" }, { - "content" : "29", + "content" : "28", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "11", @@ -3064,16 +3041,16 @@ } ] }, { "cells" : [ { - "content" : "FeedbackVertexSetComputer.java", + "content" : "FeedbackVertexSetComputer.java", "align" : "left" }, { "content" : "degreeBasedFeedbackVertexSet(Unknown)", "align" : "left" }, { - "content" : "30", + "content" : "29", "align" : "right" }, { - "content" : "14", + "content" : "15", "align" : "right" }, { "content" : "10", @@ -3087,16 +3064,16 @@ } ] }, { "cells" : [ { - "content" : "ModulatorComputer.java", + "content" : "ModulatorComputer.java", "align" : "left" }, { "content" : "computeBottleneckVertexModulator(Unknown,int,int)", "align" : "left" }, { - "content" : "31", + "content" : "30", "align" : "right" }, { - "content" : "16", + "content" : "17", "align" : "right" }, { "content" : "12", @@ -3110,16 +3087,16 @@ } ] }, { "cells" : [ { - "content" : "MinimumFeedbackArcSetSolver.java", + "content" : "MinimumFeedbackArcSetSolver.java", "align" : "left" }, { "content" : "computeInitialHeuristicSolution()", "align" : "left" }, { - "content" : "32", + "content" : "31", "align" : "right" }, { - "content" : "9", + "content" : "10", "align" : "right" }, { "content" : "7", @@ -3133,16 +3110,16 @@ } ] }, { "cells" : [ { - "content" : "FeedbackArcSetSolver.java", + "content" : "FeedbackArcSetSolver.java", "align" : "left" }, { "content" : "solve()", "align" : "left" }, { - "content" : "33", + "content" : "32", "align" : "right" }, { - "content" : "2", + "content" : "3", "align" : "right" }, { "content" : "4", @@ -3154,6 +3131,29 @@ "content" : "1", "align" : "right" } ] + }, { + "cells" : [ { + "content" : "AttributeHandlerAndSorter.java", + "align" : "left" + }, { + "content" : "perform(Unknown)", + "align" : "left" + }, { + "content" : "33", + "align" : "right" + }, { + "content" : "1", + "align" : "right" + }, { + "content" : "7", + "align" : "right" + }, { + "content" : "10/1/20, 8:46 AM", + "align" : "right" + }, { + "content" : "1", + "align" : "right" + } ] } ] } } ], @@ -3171,19 +3171,19 @@ "cycleIdentifier" : "graph_ReportWriter_SecureDirectoryOps_g0qpeh", "classCount" : 4, "relationshipCount" : 7, - "dot" : "strict digraph G {\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"3\" weight = \"3\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$SecureDirectoryOps\"];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$FallbackDirectoryOps\"];\nReportWriter [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter\" color=red style=filled];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/48990a70cc2437030b6905415d9be354c101db75/report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java\" target=\"_blank\" label=\"ReportWriter$SecureDirectoryOpsImpl\"];\n}", + "dot" : "strict digraph G {\nReportWriter -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"3\" weight = \"3\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps -> org_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl -> ReportWriter [ label = \"1\" weight = \"1\" ];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOps [ label=\"ReportWriter$SecureDirectoryOps\"];\norg_hjug_refactorfirst_report_ReportWriter_FallbackDirectoryOps [ label=\"ReportWriter$FallbackDirectoryOps\"];\nReportWriter [ color=red style=filled];\norg_hjug_refactorfirst_report_ReportWriter_SecureDirectoryOpsImpl [ label=\"ReportWriter$SecureDirectoryOpsImpl\"];\n}", "dotThresholdExceeded" : false, "breakdown" : [ { - "className" : "ReportWriter$SecureDirectoryOps", + "className" : "ReportWriter$SecureDirectoryOps", "edgesHtml" : "ReportWriter$SecureDirectoryOps → ReportWriter$SecureDirectoryOpsImpl : 1*
\nReportWriter$SecureDirectoryOps → ReportWriter$FallbackDirectoryOps : 1*
\n" }, { - "className" : "ReportWriter$FallbackDirectoryOps", + "className" : "ReportWriter$FallbackDirectoryOps", "edgesHtml" : "ReportWriter$FallbackDirectoryOps → ReportWriter$SecureDirectoryOps : 1
\nReportWriter$FallbackDirectoryOps → ReportWriter : 1
\n" }, { - "className" : "ReportWriter*", + "className" : "ReportWriter*", "edgesHtml" : "ReportWriter → ReportWriter$SecureDirectoryOps : 3
\n" }, { - "className" : "ReportWriter$SecureDirectoryOpsImpl", + "className" : "ReportWriter$SecureDirectoryOpsImpl", "edgesHtml" : "ReportWriter$SecureDirectoryOpsImpl → ReportWriter$SecureDirectoryOps : 1
\nReportWriter$SecureDirectoryOpsImpl → ReportWriter : 1
\n" } ] } diff --git a/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java b/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java index 5361cd88..6df5592b 100644 --- a/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java +++ b/report/src/main/java/org/hjug/refactorfirst/report/HtmlReport.java @@ -594,6 +594,11 @@ String buildClassGraphDot( return toJavaScriptTemplateLiteral(buildRawClassGraphDot(classGraph, repoUrl, codebaseGraphDTO)); } + /** + * Appends class DOT nodes, omitting sink-only anonymous or synthetic vertices and labels that + * match their node IDs. Includes source-link attributes supplied by the report and highlights + * classes selected for removal. + */ private void renderClassVertices( Graph classGraph, String repoUrl, @@ -609,19 +614,23 @@ private void renderClassVertices( continue; } - dot.append(renderSafeNodeId(vertex, classGraph, codebaseGraphDTO)); + String safeNodeId = renderSafeNodeId(vertex, classGraph, codebaseGraphDTO); + dot.append(safeNodeId); dot.append(" ["); dot.append(hyperlinkClassForDot(vertex, repoUrl, codebaseGraphDTO)); + String label; if (isAnonymousFqn(vertex)) { // Kotlin "" renders under the enclosing source file's base name as the // owner with $ as the enclosing-class separator (escaped for DOT). - dot.append(" label=\"") - .append(escapeDotQuoted(anonymousOwnerLabel(vertex, codebaseGraphDTO))) - .append("\""); + label = escapeDotQuoted(anonymousOwnerLabel(vertex, codebaseGraphDTO)); } else { - dot.append(" label=\"").append(escapeDotQuoted(className)).append("\""); + label = escapeDotQuoted(className); + } + + if (!label.equals(safeNodeId)) { + dot.append(" label=\"").append(label).append("\""); } if (classesToRemove.contains(vertex)) { diff --git a/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java b/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java index 366bf482..e3abd549 100644 --- a/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java +++ b/report/src/main/java/org/hjug/refactorfirst/report/JsonGenerator.java @@ -80,6 +80,17 @@ public void execute( // copyViewerResources(dotRefactorFirstDir); } + /** + * Intentionally excluding hyperlinks in DOT to reduce JSON file size + * + * @param fqClassName The fully qualified class name + * @param repoUrl The repo URL + * @param codebaseGraphDTO The DTO containing the codebase graph + */ + String hyperlinkClassForDot(String fqClassName, String repoUrl, CodebaseGraphDTO codebaseGraphDTO) { + return ""; + } + /** Copies the Mustache template and browser viewer into the report directory. */ private void copyViewerResources(Path targetDir) { try { diff --git a/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportKotlinTest.java b/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportKotlinTest.java index 395c3297..0eed6bf2 100644 --- a/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportKotlinTest.java +++ b/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportKotlinTest.java @@ -53,6 +53,7 @@ */ class HtmlReportKotlinTest { + /** Verifies cycle DOT preserves Kotlin source links and edge weights while omitting redundant labels. */ @DisplayName("HtmlReport.buildClassCycleDot emits .kt URLs from Kotlin source-path mapping") @Test void buildClassCycleDot_kotlinSourcePaths() { @@ -95,9 +96,9 @@ void buildClassCycleDot_kotlinSourcePaths() { KotlinCycleA -\\u003E KotlinCycleB [ label = "2" weight = "2" ]; KotlinCycleB -\\u003E KotlinCycleC [ label = "1" weight = "1" ]; KotlinCycleC -\\u003E KotlinCycleA [ label = "1" weight = "1" ]; - KotlinCycleA [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleA.kt" target="_blank" label="KotlinCycleA"]; - KotlinCycleB [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleB.kt" target="_blank" label="KotlinCycleB"]; - KotlinCycleC [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleC.kt" target="_blank" label="KotlinCycleC"]; + KotlinCycleA [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleA.kt" target="_blank"]; + KotlinCycleB [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleB.kt" target="_blank"]; + KotlinCycleC [URL="https://github.com/refactorfirst/RefactorFirst/blob/src/main/kotlin/com/kotlin/cycles/KotlinCycleC.kt" target="_blank"]; }`;\ """; diff --git a/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportTest.java b/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportTest.java index eb3c40b3..50a84296 100644 --- a/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportTest.java +++ b/report/src/test/java/org/hjug/refactorfirst/report/HtmlReportTest.java @@ -38,6 +38,7 @@ void getDescription() { mavenReport.getDescription(Locale.getDefault())); } + /** Verifies cycle DOT preserves Java source links and edge weights while omitting redundant labels. */ @Test void buildClassCycleDot() { Graph classGraph = new DefaultDirectedWeightedGraph<>(DefaultWeightedEdge.class); @@ -66,9 +67,9 @@ void buildClassCycleDot() { + "A -\\u003E B [ label = \"2\" weight = \"2\" ];\n" + "B -\\u003E C [ label = \"1\" weight = \"1\" ];\n" + "C -\\u003E A [ label = \"1\" weight = \"1\" ];\n" - + "A [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/A.java\" target=\"_blank\" label=\"A\"];\n" - + "B [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/B.java\" target=\"_blank\" label=\"B\"];\n" - + "C [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/C.java\" target=\"_blank\" label=\"C\"];\n" + + "A [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/A.java\" target=\"_blank\"];\n" + + "B [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/B.java\" target=\"_blank\"];\n" + + "C [URL=\"https://github.com/refactorfirst/RefactorFirst/blob/src/main/java/org/hjug/refactorfirst/C.java\" target=\"_blank\"];\n" + "}`;"; assertEquals(expectedDot, dot); diff --git a/report/src/test/java/org/hjug/refactorfirst/report/JsonGeneratorTest.java b/report/src/test/java/org/hjug/refactorfirst/report/JsonGeneratorTest.java index 51b43999..39238787 100644 --- a/report/src/test/java/org/hjug/refactorfirst/report/JsonGeneratorTest.java +++ b/report/src/test/java/org/hjug/refactorfirst/report/JsonGeneratorTest.java @@ -166,7 +166,8 @@ void given_repoWithOrigin_when_reportGenerated_then_bubbleUrlsPointToSourceFiles complexMethod .append(" if (a > ") .append(i) - .append(") { for (int j = 0; j < a; j++) { if (j % 2 == 0 && b) { c += j; } else { c -= j; } } }\n"); + .append( + ") { for (int j = 0; j < a; j++) { if (j % 2 == 0 && b) { c += j; } else { c -= j; } } }\n"); } Files.writeString( new File(srcDir, "ComplexService.java").toPath(),