Sourcetrail: un outil pour comprendre le code de quelqu'un d'autre et ne pas se tirer une balle dans la tête





J'ai le regret d'annoncer que je viens de revoir mes programmes pour les facteurs premiers et le tic-tac-toe, et ils sont entièrement libres de toute sorte de commentaires ou de documentation.

- Donald E. Knuth



Chaque programmeur a rencontré à plusieurs reprises une situation où vous devez lire le code de quelqu'un d'autre sans avoir une idée de ce à quoi sert telle ou telle fonction ou classe et comment elle est interconnectée en général.



Cela se produit même avec leurs propres programmes et scripts écrits en écriture seule YP.



Les développeurs qui ont un don pour travailler avec un tel code sont très appréciés dans l'équipe.



Il existe de tels labyrinthes miraculeux du code lorsque le code source a:



  • Style de développement incohérent
  • Structure de programme trop complexe et déroutante
  • Erreurs ou omissions logiques évidentes
  • Négligence


Vous devez comprendre qu'il y a une grande différence entre un code de travail en direct et un code éducatif et éducatif. Dans le premier cas, le processus de développement peut être influencé par diverses raisons techniques, commerciales et même nationales. Sous leur influence, même la conception logicielle la plus austère et la plus élégante peut se transformer en spaghetti. Les principales raisons de cette métamorphose sont familières à de nombreux programmeurs.



  • La toute première exigence de base pour un programme de travail est qu'il doit être exécuté ici et maintenant, souvent sur différents appareils et plates-formes. Si vous devez trouver des solutions de contournement étranges en raison de restrictions imposées par les stratégies de domaine, ces solutions seront certainement inventées et mises en œuvre.
  • Développement logiciel pour AppleStore, l' exemple de Wireguard est assez révélateur.
  • . , .
  • , .
  • PHP, JavaScript.




Figure. 1 Exploits d'une maman .



L'herméneutique du code source nécessite des compétences et des outils spéciaux. Les compétences de ce type viennent uniquement avec l'expérience, mais une connaissance approfondie des caractéristiques syntaxiques de la langue et de la documentation qui l'accompagne peut faciliter les choses pour ceux qui manquent d'expérience pratique. Les outils de recherche de code source dédiés constituent une autre aide de ce type.



Sourcetrail à la rescousse



Sourcetrail est un explorateur et un analyseur interactif avancé qui vous permet d'explorer activement votre code source en indexant et en collectant des données de structure. L'interface de l'application comprend trois parties principales.





Figure. 2 Interface Sourcetrail .



  • Recherche rapide et sélection de symboles indexés dans le code source. Une fenêtre de saisie semi-automatique fournira instantanément un aperçu de tous les résultats correspondants sur l'ensemble de la base de code. La recherche floue est prise en charge.
  • Le graphique affiche la structure du code source. Le focus est sur le symbole actuellement sélectionné, le diagramme indique explicitement les dépendances entrantes et sortantes sur d'autres symboles.
  • Dans la vue, le code dans une liste affiche tous les morceaux de code source pour le caractère actuellement sélectionné.


Au démarrage, Sourcetrail vous invite à sélectionner un projet. L'ensemble comprend plusieurs cours d'éducation et de formation pour toutes les langues prises en charge. Après avoir sélectionné un projet, Sourcetrail indexe le code source et vous pouvez ensuite commencer à travailler avec le projet.





Figure. 3 sélection de projets .



Les structures et les classes sont affichées en gris; packages, modules et espaces de noms - rosâtres ; les fonctions et méthodes sont en jaune et les variables et les portées sont en bleu . Actuellement, les langages de programmation suivants sont pris en charge:



  • C / C ++;
  • Java;
  • Python.




Figure. 4 méthode Run .



Nous avons sélectionné le projet tictactoe_cpp puis la méthode Run. En utilisant le graphique, vous pouvez clairement voir que Run est appelé une fois à partir de la fonction principale. En plus des sommets du graphe, les arêtes portent également une charge sémantique utile.



  • Y compris le texte du fichier: vert → vert.
  • Type d'utilisation: jaune → gris.
  • Utilisation variable: jaune → bleu.
  • Appel de fonction: jaune → jaune.




Figure 5 désignation des arêtes du graphique .



En outre, il existe des définitions pour le remplacement (à gauche) et l'héritage de méthode (à droite).





Fig. 6 notation des arêtes pour remplacer et hériter d'une méthode .



Sourcetrail s'efforce de mettre en œuvre un comportement interactif de toutes les manières possibles. Lorsque vous sélectionnez des objets graphiques dans la vue de code, les symboles correspondants sont automatiquement mis en surbrillance. L'inverse est également vrai, le choix des symboles dans la représentation du code entraîne une reconfiguration automatique du graphe. L'élément sélectionné dans le graphique se déplace immédiatement vers le centre et le contenu du volet de code est également mis à jour. Lorsque vous placez le curseur sur les objets graphiques, les symboles correspondants sont mis en surbrillance avec un cadre rectangulaire. Encore une fois, le contraire est vrai pour le survol des caractères dans le volet de code.



Vous pouvez définir le niveau de détail et la profondeur de la construction du graphique à l'aide des commandes de suivi dans le coin supérieur gauche.





Figure. 7 paramètres d'affichage graphique .



Un concept d'interface utilisateur intéressant pour cette classe d'applications est la navigation de type navigateur Web. En figue. 2, les boutons Précédent , Suivant et Accueil sont visibles . Je dois dire - c'est vraiment pratique. Le bouton Actualiser ne redessine pas le graphique, comme on pouvait s'y attendre, mais suggère de réindexer les fichiers de code source. Le bouton Signets vous permet d'ajouter un symbole à vos favoris.



L'un des contrôles de piste est le sentier personnalisé, tout en haut. En appelant le formulaire approprié, vous pouvez sélectionner le graphe composé, le détail, le nœud de départ et cible et le type de construction requis.





Figure. 8 Création d'un graphique avec une trace personnalisée .



Installation de Sourcetrail



Sourcetrail est disponible pour Windows, macOS et Linux. Les utilisateurs de Windows exécutent setup.exe comme d'habitude, pour macOS, l'installation se fait à l'aide des outils standard du système d'exploitation. Pour Linux, il existe deux options:



  1. téléchargez le package .tar.gz puis exécutez la commande Sourcetrail.sh;
  2. chargez l'AppImage, accordez l'autorisation d'exécution avec chmod + x nom de fichier, puis exécutez-le.


Les paramètres seront stockés dans les emplacements suivants.



  • les fenêtres
  • macOS ~ / Library / Application Support / Sourcetrail;
  • Linux ~ / .config / sourcetrail.


La version actuelle de Sourcetrail nécessite l'installation du runtime Java 8 pour indexer les projets Java. L'architecture binaire Sourcetrail doit correspondre à celle du JRE. Sourcetrail 32 bits nécessite un JRE 32 bits et une version 64 bits de l'application nécessite un JRE 64 bits, respectivement.



Prise en charge des IDE et éditeurs tiers



Sourcetrail prend en charge l'intégration avec une variété d'EDI et d'éditeurs de texte. Tous les plugins sont open source, le développement est effectué sur github .



  • Atome;
  • CLion;
  • Éclipse;
  • Emacs;
  • IntelliJ IDEA;
  • Créateur Qt;
  • Texte sublime;
  • Vigueur;
  • Code Visual Studio.


Capacités CLI



À l'aide de la ligne de commande, vous pouvez indexer ou personnaliser le projet dans Sourcetrail.



sourcetrail index [options...] projectfile

      
      





Options possibles:



--help;
--version;
--project-file #  .srctrlprj .

      
      





Configuration du projet:



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 #   ;

      
      





Résumé



On pense que les développeurs passent la plupart de leur temps à comprendre le code existant plutôt qu'à écrire un nouveau code. Les outils d'analyse de code source tels que Sourcetrail peuvent faire pencher la balance de manière significative en faveur de ce dernier, sans sacrifier la qualité. Je tiens à souligner l'accent mis sur une interface utilisateur dynamique bien pensée et familière, qui joue parfaitement le rôle d'un assistant discret et permet de gagner beaucoup de temps sur les procédures de routine.






All Articles