Programming apprentices may choose to prioritize the functioning of a source code by neglecting its quality, making it difficult to maintain and test. Based on that, a phenomenon called unnecessary structural complexity may occur when a method has a
cyclomatic complexity value that can be reduced without changing its behavior. In previous works, different approaches were proposed, including the
... [Show full abstract] automated identification and removal of unnecessary cyclomatic complexity in source code through the use of control flow graphs and source code refactoring. Also, an approach to support the development of unit test cases, by specifying and displaying paths to be tested in a control flow graph. The goal of this paper is to aggregate empirical evidence obtained by experimentally evaluating the proposed approaches implemented in a tool named Complexity Tool. Evidence provided by studies performed in previous works, suggests that the approaches significantly impact on developed unit tests coverage increase and on the identification and removal of unnecessary cyclomatic complexity. No evidence was found regarding a possible effort decrease to develop unit tests.