Wikipedia tiene un list of static code analysis tools para varios idiomas (incluido C).
Personalmente, he usado tanto PC-Lint
como Splint
. La mejor opción depende del tipo de aplicación que haya escrito. Sin embargo, independientemente de la herramienta que utilice, habrá una baja relación señal/ruido hasta que ajuste correctamente la herramienta y su código.
PC-Lint
es la herramienta más poderosa de Lint que utilicé. Si lo agrega a un proyecto existente, la relación señal/ruido puede ser baja. Sin embargo, una vez que la herramienta y su código están configurados correctamente, se pueden usar como parte de su proceso de compilación estándar. El último gran proyecto donde lo usé, lo configuramos para que las advertencias PC-Lint
rompieran la compilación. Las licencias para PC-Lint cuestan $ 389, pero vale la pena el costo.
Splint
es una gran herramienta de código abierto. Lo he usado en varios proyectos, pero descubrí que puede ser difícil de configurar cuando se usa un compilador con extensiones que no sean ANSI C (por ejemplo, en proyectos de sistemas integrados).
Valgrind
también vale la pena considerarlo como una herramienta de análisis dinámica.
Usted específicamente solicitó su opinión sobre SourceMonitor
. Esta herramienta proporciona métricas interesantes en su código, pero debe usarse como un complemento de la herramienta buena de Lint, ya que no proporciona ese tipo de análisis.
Como se indica en su página principal, se SourceMonitor
:
... averiguar la cantidad de código que tiene y para identificar la complejidad relativa de sus módulos. Por ejemplo, puede usar SourceMonitor para identificar el código que es más probable que contenga los defectos y por lo tanto garantiza una revisión formal.
Lo usé en un proyecto reciente y lo encontré fácil de usar (incluso para el código de sistemas integrados). La métrica de complejidad es un recurso excelente para desarrollar código que será menos propenso a errores y más fácil de mantener.
SourceMonitor
proporciona bonitos gráficos de su salida, así como XML bien formateados si desea automatizar la recolección de métricas. El único inconveniente es que la herramienta solo se ejecuta en Windows.
Para ampliar mis preguntas: ¿Alguien ha usado SourceMonitor (http://www.campwoodsw.com/sourcemonitor.html), y cómo lo calificaría? – Josip
¿Duplicado de http://stackoverflow.com/questions/2873/choosing-a-static-code-analysis-tool? –