Bidirectional Code Reuse in Software Redesign: An Action Research Study of Static Analyzers
Software redesign preserves functionality while improving quality attributes, but manual reuse of code and tests is costly and error-prone, especially in cross-repository redesigns. Focusing on static analyzers where cross-repository redesign needs often arise, we conduct a bidirectional study of the ongoing Soot/SootUp redesign using an action research methodology that combines empirical investigation with validated open-source contributions. Our study reveals: (1) non-linear migration that necessitates bidirectional reuse, (2) deferred reuse via TODOs, (3) neglected test porting, and (4) residual bug propagation during migrations. We identify tracking corresponding code and tests as the key challenge and address it by retrofitting clone detection to derive code mappings between original and redesigned projects. Guided by semantic reuse patterns derived from our study, we propose the Semantic Alignment Score (SAS), which incorporates semantic cues from preserved identifiers, API documentation, and comments. Evaluations on three redesigned project pairs (Soot/SootUp, FindBugs/SpotBugs, and ANTLR3/ANTLR4) show that SAS improves average F1 for code mapping detection by up to 0.34 on our manually labeled benchmark of 1,805 method pairs, while strong traditional detectors approach or surpass LLM detectors. The code mapping analysis also uncovered ongoing maintenance needs, leading to five issues and 10 pull requests, of which eight have been merged.