Por que a análise dinâmica pode não cobrir todo o caminho de execução de um programa?
-
23-12-2019 - |
Pergunta
Eu sou novo no programa de área de análise e após a leitura de alguns materiais nesta área, eu tenho algumas perguntas que eu não posso encontrar as correspondentes respostas..
Veja, se eu implementar uma ferramenta :execução simbólica + concreto de execução assim como DART
então eu acho que ele deve cobrir todo o caminho de execução, mantendo a dinâmica de recursos de análise..
Estou informado de que a análise dinâmica pode não cobrir todo o caminho de execução, mas, basicamente, por quê?Eu acho que técnicas como o DARDO é bastante maduro agora...
Outros, como o modelo de verificação, teoricamente, garantir 100% de cobertura de código...estou certo?
Alguém poderia me dar alguma ajuda?Obrigado!
Solução
O número de caminhos através de um pedaço de código é exponencial no número de 'se' declarações.Por exemplo, se você tiver um pedaço de código como este:
if (a) {
// do something
}
if (b) {
// do something
}
...
if (z) {
// do something
}
em seguida, há 67108864 possíveis caminhos de código, dependendo dos valores das 26 variáveis booleanas.