Pregunta

  • ¿Utiliza analizadores de código fuente? Si es así, ¿cuáles y para qué desarrollo del lenguaje?
  • ¿Los encuentra útiles para resolver posibles errores en su código? ¿O la mayoría de sus advertencias son triviales?
  • Después de un uso prolongado, ¿encuentra que la calidad de su código es más alta que antes?
¿Fue útil?

Solución

Uso algunas herramientas de análisis estático en Java. FindBugs es la primera línea de defensa, que detecta muchos errores comunes y brinda comentarios muy útiles. A menudo detecta los errores tontos de los programadores cansados ??y no supone una gran carga para el usuario.

PMD es bueno para muchos otros errores más complicados, pero requiere mucha más configuración. Encontrará que los valores predeterminados de los PMD están a menudo por encima. Hay demasiadas reglas que probablemente son beneficiosas en una pequeña escala, pero en última instancia no ayudan a otros programadores a mantener su código. Algunas de las reglas de PMD a menudo son una optimización prematura.

Probablemente más útil es el soporte CPD en PMD. Intenta encontrar el código que se ha duplicado en otro lugar, para facilitar la refactorización. Ejecutar un proyecto completo, esto realmente ayuda a determinar dónde están las prioridades más importantes para limpiar el código y detener cualquier infracción DRY.

Checkstyle también es útil, asegurándose de que sus programadores cumplan con algún estándar de estilo de codificación. tiene un poco de superposición con PMD pero generalmente es mucho más utilizable.

Finalmente, Cobertura es una excelente suite de cobertura de prueba. Muy útil para averiguar dónde faltan las pruebas unitarias y dónde debe priorizar la creación de nuevas pruebas.

Ah, y también he estado probando Jester . Parece ser bastante bueno para encontrar huecos en las pruebas, incluso cuando el código tiene alguna cobertura. No recomendado todavía, simplemente porque no lo he usado lo suficiente, pero uno para probar.

Ejecuto estas herramientas desde Eclipse y como parte de una suite de compilación automatizada.

Otros consejos

Para C, uso MEMWATCH . Es realmente fácil de usar y gratis.

Lo he usado para encontrar muchos errores de memoria en el pasado.

Usé resharper y MS TS (básicamente FXCop) y los dos son muy útiles, especialmente en las siguientes áreas:

  • Identificación de código muerto
  • Amplio alcance
  • Mejoras de rendimiento (relacionadas con la globalización, etc.)

Las recomendaciones no siempre son excelentes, pero en general mejoraron la calidad del código.

Soy un usuario a largo plazo de PC-Lint para C y C ++ y lo encuentro muy útil . Estas herramientas son más útiles cuando se adquiere una base de código con la que no está familiarizado. Con el tiempo, llega a una ley de rendimientos decrecientes, donde la cantidad de errores nuevos que encuentra tiende a disminuir.

Siempre me quedo con una pelusa de proyecto completo en un gran lanzamiento.

Editar: hay una buena lista de herramientas relevantes en Wikipedia aquí

Estoy muy contento con ReSharper . No solo proporciona bits de información útiles durante la codificación (por ejemplo, conversiones innecesarias, se aplican solo para lectura), sino que sus características de refactorización son excelentes para reorganizar el código muy rápidamente.

No cubre todo, por lo que FxCop (o similar) es una adición decente a la caja de herramientas. Sin embargo, como Resharper da una respuesta inmediata, el tiempo de respuesta es realmente bueno. (Soy consciente de que FxCop puede ejecutarse desde VS, pero no es lo mismo).

Encuentro a los analizadores de alguna manera útiles, uso buildin para visual studio (ej. / analyse para c / c ++ y las reglas personalizadas para .net), ocasionalmente uso stylecop y codeitright para C # principalmente para las pautas de cómo deben ser las cosas.

No creo que haya una herramienta perfecta para todo, que encuentre todos los errores, pero creo que las herramientas ayudan a encontrar algunos errores, que no son imposibles de rastrear, pero créeme que pasaría un montón de tiempo en encontrarlos.

Sí, la calidad de su código es ALGUNA MEJOR que antes, pero también creo que la depuración manual sigue siendo necesaria. Sin embargo, los analizadores de fuentes no son la cura definitiva, pero son un buen medicamento. Si hubiera una herramienta que solo ejecutaras y encontraras cualquier tipo de error y que la arreglara por ti costaría millones.

Algunos programadores que conozco juran que IBM Rational PurifyPlus es excelente, pero esa es su opinión, solo tuve 2-3 sesiones con la herramienta.

Pero siempre recuerde que uno de los principios básicos de la programación de errores lógicos son los más difíciles de encontrar y corregir, por lo que las horas de depuración son inevitables. Un buen analizador de código combinado con una prueba de unidad puede hacer milagros.

PS. Tiendo a producir mucho menos errores en C # que en C ++, alguien puede decir que estoy equivocado, pero aunque uso c ++ más años que c #, encuentro el código "y lo cuidaré". El enfoque de Gc de C # es mucho más fácil que c ++, especialmente para los proyectos que se apresura a terminar en el límite de tiempo / fecha límite, que TODOS los proyectos son como estos días ...

Uso StyleCop para C #. Es una gran herramienta para mantener un estilo de código consistente que conduce a una mejor calidad de código. También ReSharper hace un análisis de código, pero es bastante básico.

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