sintaxis programacion funciones ejemplos compilador comandos codigos basicos c++ c grep code-analysis

funciones - programacion c++ pdf



Listado de funciones de C/C++(análisis de código en Unix) (5)

Ctags exuberantes http://ctags.sourceforge.net/

Solo lo he usado de vez en cuando hace algún tiempo, y desde un editor de texto, pero eche un vistazo a la lista de utilidades / herramientas que pueden usarlo:

http://ctags.sourceforge.net/tools.html

Ya sea que estemos manteniendo un código desconocido o revisando los detalles de implementación de un módulo Apache, puede ser útil si podemos atravesar rápidamente el código y crear una visión general de lo que estamos viendo. Grep atiende la mayoría de mis necesidades diarias, pero hay algunos casos en los que simplemente no sirve.

Aquí hay un ejemplo común de cómo puede ayudar. Para encontrar la definición de una función de PHP que me interesa, puedo escribir esto en la línea de comando:

grep -r "function myfunc" .

Esto podría adaptarse muy rápidamente a C o C ++ si conocemos el tipo de devolución, pero las cosas se vuelven más complicadas si, por ejemplo, quiero enumerar todos los métodos que ofrece mi clase:

grep "function " ./src/mine.class.php

Como no hay una sola palabra clave que denote una función o método en C ++ y porque generalmente es una sintaxis más compleja, creo que necesitaría algún tipo de herramienta de análisis de código estático, uso inteligente del preprocesador C o fe ciega. (# de espacio en blanco, posición de los cráneos, etc.) para obtener este tipo de resultados.

¿Qué recomendarías?


Ejecútalo a través de Doxygen. Se quejará por la falta de comentarios, pero igual producirá gráficos de llamadas y enumerará todas las funciones. Presentado en HTML con enlaces para seguir rutas de código.

Doxygen


cscope es muy bueno para este tipo de cosas. A diferencia de ctags, cscope proporciona una interfaz adecuada para la búsqueda (ctags requiere un editor).

Simplemente ejecute cscope en el directorio raíz del código que desea inspeccionar. Esto: creará una base de datos si no está allí, actualizará la base de datos, si hay una, y abrirá una guía de maldiciones, donde podrá consultar todo tipo de información útil.

  • todas las referencias a un símbolo
  • definiciones globales
  • funciones llamadas por una función
  • funciones llamando a una función
  • cadena de texto
  • patrón de expresión regular
  • un archivo
  • archivos que incluyen un archivo

ctags solo hace la primera, ''todas las referencias a un símbolo''.


Doxygen puede generar una documentación html razonable y analizar comentarios. No es perfecto, pero podría ayudar. Podría incorporar Ctags en su editor para saltar a las funciones que está buscando.

Personalmente, uso grep;)


grep ''^[a-zA-Z0-9][ *]+ {[a-zA-Z0-9_]+}/([a-zA-Z0-9/,/./-/>]/*/)$''

Es más o menos lo que quieres. Puede tomar algunos juegos con, pero emparejar un tipo válido de retorno de C ++, dar la opción de que sea un puntero, luego un nombre de función (que será / 1), abrir paréntesis, parámetros, cerrar.

Esa forma general (return, name, (param)) debería funcionar a menos que tenga saltos de línea dentro de una declaración de función.

Utilizaría Doxygen u otra herramienta para analizarlo, pero si necesita hacerlo rápidamente y una vez, Regex podría ser más fácil (o no, con expresiones regex nunca se sabe).