Lamento informar que recientemente revisé mis programas en busca de factores primos y tic-tac-toe, y están completamente libres de cualquier tipo de comentario o documentación.
- Donald E. Knuth
Cada programador se ha encontrado repetidamente con una situación en la que tiene que leer el código de otra persona sin tener una idea de para qué sirve esta o aquella función o clase y cómo está interconectada en general.
Esto sucede incluso con sus propios programas y scripts escritos en YP de solo escritura.
Los desarrolladores que tienen el don de trabajar con dicho código son muy valorados en el equipo.
Hay laberintos milagrosos del código cuando el código fuente tiene:
- Estilo de desarrollo inconsistente
- Estructura de programa demasiado compleja y confusa
- Errores u omisiones lógicos obvios
- Negligencia
Debe comprender que existe una gran diferencia entre el código de trabajo en vivo y algún código educativo y educativo. En el primer caso, el proceso de desarrollo puede verse influenciado por una variedad de razones técnicas, comerciales e incluso domésticas. Bajo su influencia, incluso el diseño de software más austero y elegante puede convertirse en espagueti. Muchos programadores conocen las principales razones de esta metamorfosis.
- El primer requisito básico para un programa que funcione es que debe ejecutarse aquí y ahora, a menudo en diferentes dispositivos y plataformas. Si necesita encontrar soluciones extrañas debido a las restricciones impuestas por las políticas de dominio, estas soluciones definitivamente serán inventadas e implementadas.
- Desarrollo de software para AppleStore, el ejemplo de Wireguard es bastante revelador.
- . , .
- , .
- PHP, JavaScript.
Higo. 1 Hazañas de una mamá .
La hermenéutica del código fuente requiere habilidades y herramientas especiales. Las habilidades de este tipo solo se obtienen con la experiencia, pero un conocimiento profundo de las características sintácticas del idioma y la documentación que lo acompaña puede facilitar las cosas a quienes carecen de experiencia práctica. Otra de estas ayudas son las herramientas de investigación de código fuente dedicadas.
Sourcetrail al rescate
Sourcetrail es un explorador y analizador interactivo avanzado que le permite explorar activamente su código fuente indexando y recopilando datos de estructura. La interfaz de la aplicación incluye tres partes principales.
Higo. 2 Interfaz Sourcetrail .
- Rápida búsqueda y selección de símbolos indexados en el código fuente. Una ventana de autocompletar proporcionará instantáneamente una descripción general de todos los resultados coincidentes en todo el código base. Se admite la búsqueda aproximada.
- El gráfico muestra la estructura del código fuente. El foco está en el símbolo seleccionado actualmente, el diagrama indica explícitamente las dependencias entrantes y salientes de otros símbolos.
- En la vista, el código en una lista muestra todas las piezas del código fuente para el carácter seleccionado actualmente.
Al inicio, Sourcetrail le solicita que seleccione un proyecto. El conjunto incluye varios cursos educativos y de formación para todos los idiomas admitidos. Después de seleccionar un proyecto, Sourcetrail indexa el código fuente y luego puede comenzar a trabajar con el proyecto.
Higo. 3 selección de proyectos .
Las estructuras y clases se muestran en gris; paquetes, módulos y espacios de nombres - rosado ; las funciones y los métodos están en amarillo , y las variables y los alcances están en azul . Actualmente, se admiten los siguientes lenguajes de programación:
- C / C ++;
- Java;
- Pitón.
Higo. 4 método Ejecutar .
Seleccionamos el proyecto tictactoe_cpp y luego el método Run. Usando el gráfico, puede ver claramente que Run se llama una vez desde la función principal. Además de los vértices del gráfico, los bordes también tienen una carga semántica útil.
- Incluyendo texto del archivo: verde → verde.
- Tipo de usos: amarillo → gris.
- Uso variable: amarillo → azul.
- Llamada de función: amarillo → amarillo.
Figura 5 designación de los bordes del gráfico .
Además, hay definiciones para invalidación (izquierda) y herencia de métodos (derecha).
Fig. 6 notación de aristas para anular y heredar un método .
Sourcetrail se esfuerza por implementar el comportamiento interactivo de todas las formas posibles. Cuando selecciona objetos de gráfico en la vista de código, los símbolos correspondientes se resaltan automáticamente. Lo contrario también es cierto, la elección de símbolos en la representación del código da como resultado una reconfiguración automática del gráfico. El elemento seleccionado en el gráfico se mueve inmediatamente al centro y el contenido del panel de código también se actualiza. Cuando pasa el cursor sobre los objetos gráficos, los símbolos correspondientes se resaltan con un marco rectangular. Una vez más, ocurre lo contrario para pasar el cursor sobre los caracteres en el panel de código.
Puede establecer el nivel de detalle y la profundidad de la construcción del gráfico utilizando los controles de ruta en la esquina superior izquierda.
Higo. 7 configuraciones de visualización de gráficos .
Un concepto de interfaz de usuario interesante para esta clase de aplicaciones es la navegación al estilo de un navegador web. En la Fig. 2, los botones Atrás , Adelante e Inicio están visibles . Debo decir que es realmente conveniente. El botón Actualizar no vuelve a dibujar el gráfico, como cabría esperar, pero sugiere volver a indexar los archivos de código fuente. El botón Marcadores le permite agregar un símbolo a sus favoritos.
Uno de los controles de senderos es el sendero personalizado., en la parte superior. Al llamar al formulario apropiado, puede seleccionar el gráfico compuesto requerido, el detalle, el nodo inicial y objetivo y el tipo de construcción.
Higo. 8 Creación de un gráfico con un recorrido personalizado .
Instalación de Sourcetrail
Sourcetrail está disponible para Windows, macOS y Linux. Los usuarios de Windows ejecutan setup.exe como de costumbre, para macOS, la instalación se realiza utilizando herramientas estándar del sistema operativo. Para Linux, hay dos opciones:
- descargue el paquete .tar.gz y luego ejecute el comando Sourcetrail.sh;
- cargue AppImage, conceda permiso de ejecución con chmod + x filename y luego ejecútelo.
La configuración se almacenará en las siguientes ubicaciones.
- Ventanas
- macOS ~ / Biblioteca / Soporte de aplicaciones / Sourcetrail;
- Linux ~ / .config / sourcetrail.
La versión actual de Sourcetrail requiere que se instale el tiempo de ejecución de Java 8 para indexar proyectos de Java. La arquitectura binaria de SourceTrail debe coincidir con la del JRE. Sourcetrail de 32 bits requiere un JRE de 32 bits y una versión de 64 bits de la aplicación requiere un JRE de 64 bits, respectivamente.
Soporte para IDE y editores de terceros
Sourcetrail admite la integración con una variedad de IDE y editores de texto. Todos los complementos son de código abierto, el desarrollo se realiza en github .
- Átomo;
- CLion;
- Eclipse;
- Emacs;
- IntelliJ IDEA;
- Creador de Qt;
- Texto sublime;
- Empuje;
- Código de Visual Studio.
Capacidades de CLI
Usando la línea de comando, puede indexar o personalizar el proyecto en Sourcetrail.
sourcetrail index [options...] projectfile
Posibles opciones:
--help; --version; --project-file # .srctrlprj .
Configuración del proyecto:
sourcetrail config [options...] --help; --indexer-threads # ; --use-processes #, C/C++ ; --logging-enabled #/ / ; --verbose-indexer-logging-enabled # , ; --jvm-path; --jvm-max-memory; --maven-path # maven; --jre-system-library-paths # jar JRE; --global-header-search-paths; --global-framework-search-paths; --show # ;
Resumen
Se cree que los desarrolladores dedican la mayor parte de su tiempo a dar sentido al código existente en lugar de escribir código nuevo. Las herramientas de análisis de código fuente como Sourcetrail pueden inclinar significativamente la balanza a favor de este último, sin sacrificar la calidad. Me gustaría señalar el enfoque en una interfaz de usuario dinámica bien pensada y familiar, que desempeña a la perfección el papel de un asistente discreto y ahorra significativamente tiempo en los procedimientos de rutina.