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(),