Automatizing Software Cognitive Complexity Reduction through Integer Linear Programming
<|reference_start|>Automatizing Software Cognitive Complexity Reduction through Integer Linear Programming: Reducing the cognitive complexity of a piece of code to a given threshold is not trivial. Recently, we modeled software cognitive complexity reduction as an optimization problem and we proposed an approach to assist developers on this task. This approach enumerates sequences of code extraction refactoring operations until a stopping criterion is met. As a result, it returns the minimal sequence of code extraction refactoring operations that is able to reduce the cognitive complexity of a code to the given threshold. However, exhaustive enumeration algorithms fail to scale with the code size. The number of refactoring plans can grow exponentially with the number of lines of code. In this paper, instead of enumerating sequences of code extraction refactoring operations, we model the cognitive complexity reduction as an Integer Linear Programming problem. This opens the door to the use of efficient solvers to find optimal solutions in large programs.<|reference_end|>
@article{saborido2024automatizing,
    title={Automatizing Software Cognitive Complexity Reduction through Integer
  Linear Programming},
    author={Rub'en Saborido and Javier Ferrer and Francisco Chicano},
    journal={arXiv preprint arXiv:2402.05559},
    year={2024},
    archivePrefix={arXiv},
    eprint={2402.05559},
    primaryClass={cs.SE cs.CC}
}