Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Comparações entre tipos com larguras diferentes em uma condição de loop podem fazer com que o loop falhe em se concluir.
Recomendação
Utilize os tipos apropriados na condição de loop.
Exemplo
Neste exemplo, o resultado da comparação poderá resultar em um loop infinito se o valor do argumento: um é maior que SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Para corrigir o bug, estamos alterando o tipo da variável i para corresponder à largura de a:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Detalhes adicionais
Essa consulta pode ser encontrada no repositório CodeQL do Microsoft GitHub. Consulte a página CodeQL e o Teste do Logotipo das Ferramentas Estáticas para obter detalhes sobre como os desenvolvedores de Drivers do Windows podem baixar e executar o CodeQL.