2010-04-04 7 views
7

Estoy buscando un script/herramienta que se pueda personalizar para comprobar y aplicar las convenciones de codificación/nomenclatura en un código C/C++.Prueba de convenciones de codificación y nomenclatura del código C/C++

Se debe comprobar por ejemplo:

  • líneas de código se envuelven con cierta extensión.
  • Las variables privadas tienen el prefijo _
  • El código está sangrado correctamente.
  • Todas las funciones están documentadas.

Muchos de los proyectos en los que estoy trabajando son subcontratados por clientes que tienden a tener varias convenciones internas de codificación y nomenclatura.

+4

desde luego no quieren que el cualquier variable para comenzar con '_', las reglas para el uso de' _' en nombres son complicados , porque un buen número está reservado para escrituras del compilador, etc. ... –

+3

@Matthieu: Solo se reservan los nombres que comienzan con dos guiones bajos, o un guión bajo y una letra mayúscula. Siempre y cuando todas sus variables privadas comiencen con un guión bajo y una letra minúscula (o un guión bajo y un número), está bien. –

+2

@ Matthieu: Prefijar las variables de miembro con '_' es una convención bastante común y sin problemas. Los identificadores que comienzan con '_' solo están reservados en el espacio de nombres global. Ver p. http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/ident.htm –

Respuesta

2

La herramienta GNU indent puede hacer algo de lo que está pidiendo. No estoy seguro de si puede verificar la documentación, pero el resto parece posible

+0

Me gusta el guion de GNU, pero no prueba las convenciones de codificación y nomenclatura. –

3

No sé si realmente vale la pena el tiempo, pero si realmente lo desea, puede intentar construir algo similar a google's cpplint, que verifique su style guide .

Personalmente, creo que las revisiones exhaustivas y el compromiso de las personas para seguir ciertas convenciones es una forma mucho mejor de asegurarse de que su código esté "sangrado adecuadamente" y las variables nombradas de manera coherente. Tal vez invierta en hacer que un documento como google lo haya hecho, describiendo los detalles del estilo aceptable, y haga que las personas de su compañía lo acepten y se adhieran a él.

¿Por qué los humanos son mejores que un script? La respuesta es bastante simple: la gente tendrá que lidiar con el código más tarde, que les debería importar sobre lo que están escribiendo. Un nombre de variable como i estará bien para un script, pero no se saldrá de mis ojos, si es un clientCount, debería simplemente llamarse apropiadamente, un script que podría hacer eso podría dominar el mundo bastante pronto. :)

+0

Gracias por compartir esto. –

+0

Parece que cpplint no verifica las convenciones de nomenclatura de variables y clases? – cxwangyi

3

Universal Indent envuelve una gran cantidad de herramientas de indention en una buena GUI. Si algo te conviene es probable que esté incluido. (Here es la lista de características) Todos los sistemas operativos principales son compatibles.

Existen también otras herramientas de comprobación para otras cosas:

pelusa para la seguridad y misceláneos otras cosas.

Para los programas de Qt que puede utilizar Krazy. Es un poco complicado encontrarlo, descargarlo y ponerlo en marcha, ya que está escondido en las profundidades del árbol de fuentes de KDE (subdirectorios de aseguramiento de calidad ... en alguna parte). Pero una vez que funciona, es realmente genial. Verifica todo tipo de cosas lindas. Como encabezados de Qt no utilizados. Mala utilización de cadenas. Faltan los estados tr() para cadenas visibles para el usuario, construcciones de iteración extrañas, punto punto punto.

Lo que hace falta es decir que todas las herramientas mencionadas son personalizables.

1

Básicamente, lo que otras personas han dicho. Pero puedo señalar que:

  • Todas las funciones están documentadas.

realmente no se puede comprobar con una herramienta: requiere atención humana y comprensión. Sospecho que todos hemos visto cosas como esta:

//------------------------------------------------------------- 
// Name: foo 
// Purpose: 
// Returns: integer 
//------------------------------------------------------------- 

En otras palabras, texto modelo "documentación" que te dice menos que nada. Este tipo de cosas solo pueden ser erradicadas mediante revisiones de código.

0

Si tiene mucho dinero, debe consultar Klocwork. Tiene la capacidad de verificar el código fuente para seguir las pautas de estilo. Lo he usado en diferentes tiendas. Un lote de trabajo para configurar y mantener, pero muy poderoso.

0

Yo uso Comprender 4 C++ hecho por scitools. Viene con un perl y C api. Sin embargo, escribí una API administrada para ello. Esta herramienta le permite escanear su código fuente y analizarlo como lo hace la reflexión para el código nativo. Funciona muy bien al permitir que obtengas los nombres de tus variables, clases, etc. Personalmente he escrito docenas de herramientas de análisis estático en el trabajo usando esta API. Sería fácil implementar todos los tipos de estándares de codificación usando esta herramienta. Especialmente el nombre de variable estándar.

El enlace de la para el producto: http://www.scitools.com/ y mi contenedor administrado: http://understandapi.codeplex.com/

Cuestiones relacionadas