Pregunta

Tuve un error tipográfico desagradable que desperdició mi tiempo y el de mi colega, fue algo como esto:

for (i = 0; i < blah; i++); // <- I had a semi-colon here, that's the bug!
{
  // Some awesome logic here
}

En primer lugar, es muy embarazoso, en segundo lugar, nunca debería repetir esto. Soy relativamente nuevo en C. En Java, creo que puedo usar FindBugs para detectar errores como estos, lo que ¿Qué herramienta debo usar para el código C? ¿Pelusa?

¿Fue útil?

Solución

Sí, PC-Lint es probablemente la mejor herramienta disponible.

Otros consejos

Además de sugerencia PC-Lint de Lykathea , también puede obtener diagnósticos mejores (o al menos más) si aumenta el nivel de advertencia del compilador. Algo como / W4 o -Wall

Aunque no estoy seguro de si su problema en particular hubiera sido detectado con esto (MS VC no parece marcarlo incluso con todas las advertencias habilitadas). Creo que eso se debe a que no es un lenguaje poco común para que para los bucles estén vacíos cuando el trabajo se realiza como efectos secundarios de las expresiones de control de bucle.

Algunas cosas que me han salvado en el pasado, desde lo alto de mi cabeza:

  • Use if (3 == bla) en lugar de (bla == 3) , porque si escribe incorrectamente y escribe (3 = bla) el compilador se quejará.

  • Use el interruptor todas las advertencias . Su compilador debería advertirle sobre declaraciones vacías como esa.

  • Use aserciones cuando pueda y programe a la defensiva. Haga un buen esfuerzo para hacer que su programa falle antes, verá las debilidades de esa manera.

  • No intente eludir las salvaguardas que el compilador o el sistema operativo han puesto en práctica. Están allí para su facilidad de programación también.

Comenzaría aprendiendo sobre tablilla y gdb . Si necesita más avanzado, aproveche estas dos herramientas. Pero son un buen comienzo.

GCC tiene la mayor parte de la funcionalidad que Lint ha incorporado a través de advertencia banderas .

Cualquier buen entorno de programación GUI (" IDE " - Ambiente de desarrollo integrado) como Eclipse generaría una advertencia en un caso como ese.

Un buen resaltador de sintaxis hará que algunos casos como este sean más visibles.

Le sugeriría que vea si tiene la capacidad de hacer cumplir los estándares de MISRA . Fueron escritas con gran pensamiento y muchas reglas que son simples para que un compilador las compruebe. Por ejemplo, una regla que uso requiere que todos los comandos NOP tengan su propia línea. Esto significa que cuando pones un; Al final de una instrucción de bucle, aparecerá un error que indica que no está en su propia línea.

QA & # 183; C de Programming Research es otra buena herramienta de análisis estático para C.

En esta (antigua) versión de Cómo dispararse En el Pie , y en muchas otras versiones en la web, C es siempre el lenguaje que permite el procedimiento más sencillo. Al programar en C , debes recordar esto y tener cuidado. Si desea protección, elija otro idioma.

Este dicho es atribuido a Bjarne Stroustrup (C ++) a sí mismo. Para (mal) citar:

  

" C hace que sea más fácil dispararte en el pie "

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top