Eu, eu e eu, fomos produtores e mantenedores de código legado. Se a sua ferramenta está gerando "milhares de violações" (ou mesmo centenas), esqueça a ferramenta, isso é inaplicável à situação ...
Suponho que os desenvolvedores originais se foram e não estão disponíveis para discussão. Portanto, ninguém por perto entende o porquê e o porquê do estilo de design e codificação. Corrigir centenas ou milhares de violações não será uma questão de reescrever algumas linhas de código aqui e ali. Em vez disso, requer, sem dúvida, refatoração / decomposição re-funcional. Você tenta fazer isso em qualquer grande base de código existente, sem entender profundamente seu design atual, e é obrigado a apresentar um novo conjunto de bugs / problemas / etc. Apenas uma nova lata de vermes ainda pior do que a que você possui agora (ou pior do que a sua ferramenta >> pensa que você tem agora).
A única abordagem sensata para resolver "milhares de violações" seria reescrever do zero. Um esforço longo e caro e quase impossível de vender para a gerência. E, neste caso, eles provavelmente estão certos ...
O código herdado normalmente requer apenas ajustes. Como no y2k, ou quando as ações passaram de 256th para decimal. Eu fiz um monte de ambos que cr * p. E muitas outras coisas semelhantes. É tipicamente bastante "preciso", pois você pode "ler" o estilo às vezes ruim, a decomposição funcional ruim, o mau etc, e localizar a coleção de locais que precisam ser modificados. E então, o que acontece "entre esses lugares", ou seja, qual é o fluxo de mais alto nível, pode permanecer um mistério para você. Apenas certifique-se de entender a funcionalidade localizada que está sendo alterada e, em seguida, teste, teste, teste de quaisquer efeitos colaterais, etc., seu conhecimento localizado não será capaz de antecipar.
Se você não conseguir visualizar o código dessa maneira, talvez não seja a melhor pessoa para manter o código herdado. Algumas pessoas podem começar com uma tela em branco e escrever programas bonitos, mas não podem começar com uma grande base de código do código de outras pessoas e mantê-lo. Outras pessoas podem manter o código, mas não podem começar do zero. Alguns podem fazer as duas coisas. Verifique se as pessoas certas estão mantendo seu código legado.
Os momentos ocasionais em que você pode redesenhar e reescrever sua base de código herdada do zero são quando os requisitos de negócios (ou outros) mudam a tal ponto que os "ajustes" básicos não podem mais acomodar os requisitos alterados . E, nesse ponto, você pode começar escrevendo um novo documento de requisitos funcionais, certificando-se de que todas as partes interessadas estejam a bordo. É basicamente um jogo totalmente novo.
A única coisa >> errada >> a fazer é tentar tratar a manutenção de código legado da mesma maneira que você faria no desenvolvimento. E essa coisa errada parece ser exatamente o caminho que você gostaria de seguir :) Acredite na minha palavra, não é isso que você quer fazer.