Instalé la herramienta Cppcheck para el análisis de código estático de mi proyecto C++ y tuve la sensación de que funciona mal. Por ejemplo, ¿alguien puede decirme por qué Cppcheck no puede encontrar un error de matriz fuera de límites en el siguiente código?¿Por qué Cppcheck no encuentra este error obvio de matriz fuera de límites?
void f(int c) {
char *p = new char[10];
p[c] = 42;
}
void g() {
f(100);
}
Hay un online demo donde este código puede ser convenientemente comprobada usando Cppcheck. Todo lo que se trata es una fuga de memoria en la línea 4, no hay señales de un posible desbordamiento del búfer.
Me he dado cuenta de que su pregunta ya ha sido publicado y comentado en el foro cppcheck. El comentario parece implicar que este tipo de comprobación de límites aún no es compatible. Sería mejor preguntar esto más en ese foro. –
porque ninguna herramienta podría encontrar todos los errores, y especialmente cppcheck no analiza y evalúa completamente C++, pero contiene muchos accesos directos que permiten detectar solo la mayoría de los errores locales. – PlasmaHH
Describe los pasos necesarios para que la herramienta pueda detectar el error. A continuación, enumere los casos en los que aparecerán falsos positivos. Luego intenta imaginar a los desarrolladores sentados y sopesando estas cosas. – HonkyTonk