3 points par GN⁺ 2024-03-22 | 1 commentaires | Partager sur WhatsApp

Outil de différences structurelles Difftastic

  • Difftastic est un outil de diff en CLI qui comprend la syntaxe et compare les fichiers sur une base syntaxique plutôt qu’au niveau des lignes.
  • Il fournit des différences précises, faciles à lire pour les humains.

Comprendre ce qui a réellement changé

  • Difftastic utilise tree-sitter pour analyser le code.
  • Contrairement aux diffs textuels ligne par ligne, il comprend que la représentation interne n’a pas changé.

Ignorer les changements de formatage

  • Lorsqu’un formateur de code décide de répartir le code sur plusieurs lignes, il n’affiche que ce qui a réellement changé.

Visualisation des changements d’enrobage

  • Lorsqu’un wrapper a été ajouté, Difftastic fait correspondre précisément les délimiteurs.
  • Même si le contenu interne est modifié, il peut montrer le wrapper ajouté.

Numéros de ligne réels

  • Il affiche les vrais numéros de ligne du fichier, avant comme après la modification.

Démo en 60 secondes

Prise en charge des langages de programmation

  • Prise en charge de nombreux langages, dont C++, C#, Clojure, Dart et Erlang.
  • La liste détaillée des langages pris en charge est disponible dans le manuel.

Prise en charge des formats de fichier

  • Prise en charge de nombreux formats de fichier, dont HCL, HTML, JSON et YAML.
  • La liste détaillée des formats de fichier pris en charge est disponible dans le manuel.

Compatible avec Git

  • Les instructions de configuration pour Git sont disponibles dans le manuel.

Entièrement open source

  • Difftastic est distribué sous licence MIT.
  • Il peut être téléchargé, modifié et partagé avec des amis.

Créateur

  • Créé par Wilfred Hughes, avec Emacs et du café.

Avis de GN⁺

  • Difftastic aide les développeurs à mieux comprendre les changements en identifiant les différences structurelles du code avec plus de clarté.
  • Par rapport aux outils de diff traditionnels basés sur les lignes, Difftastic permet des comparaisons plus fines grâce à sa compréhension de la syntaxe du code et à sa capacité à ignorer les changements de formatage.
  • En tant qu’outil open source, il peut continuer à s’améliorer grâce aux contributions de la communauté, avec l’avantage de pouvoir être librement modifié et étendu selon les besoins des utilisateurs.
  • Parmi les outils offrant des fonctions similaires, on peut citer l’outil intégré git diff de Git ou les outils de comparaison intégrés aux IDE comme IntelliJ IDEA de JetBrains, mais Difftastic propose une approche originale fondée sur une comparaison syntaxique.
  • Lors de l’adoption de Difftastic, il peut être nécessaire de vérifier les langages de programmation et formats de fichier pris en charge, ainsi que d’obtenir un consensus au sein de l’équipe sur l’usage de l’outil. Son utilisation peut améliorer l’efficacité des revues de code et réduire les malentendus dans les processus de collaboration.

1 commentaires

 
GN⁺ 2024-03-22
Avis Hacker News
  • Présentation d’une technologie basée sur Tree-sitter

    • Tree-sitter convertit le code en AST (Abstract Syntax Tree, arbre syntaxique abstrait) et fournit une interface standard à des clients comme les éditeurs ou les outils de diff.
    • Cela permet aux outils de prendre automatiquement en charge toutes les langues supportées par Tree-sitter, sans devoir implémenter eux-mêmes des dizaines de langages, simplement en ajoutant la prise en charge de Tree-sitter.
    • Lors du développement d’un nouveau langage, il suffit de créer un parseur Tree-sitter pour que tous les outils compatibles avec Tree-sitter prennent ce langage en charge.
    • Cette innovation réduit le travail en double dans le développement d’outils multilingues et contribue à un meilleur écosystème d’outillage.
  • Méthodes de mise à jour des projets et outils Rust

    • Présentation de la façon d’installer et de mettre à jour des projets basés sur Rust via cargo.
    • mise-en-place est une alternative à asdf, rapide et flexible.
    • zoxide est un remplacement de la commande cd qui mémorise les répertoires visités par l’utilisateur et permet d’y revenir rapidement via une recherche par correspondance partielle.
    • dust est un outil complémentaire à du qui affiche les répertoires utilisant le plus d’espace disque.
  • Retours d’expérience et avis sur Difftastic

    • Un utilisateur partage son expérience avec Difftastic et indique ressentir une gêne lorsqu’il utilise d’autres outils de diff.
    • Le commentaire explore aussi la possibilité d’un outil de diff « sémantique » capable de comparer des cas où la syntaxe change mais où le sens reste identique.
  • La praticité de Difftastic

    • Mise en avant de la fonctionnalité de Difftastic qui affiche les vrais numéros de ligne des fichiers, particulièrement utile avec git diff.
  • Outil associé : diff2html

    • diff2html est un outil qui affiche un diff au format HTML dans un onglet du navigateur via une CLI (Command Line Interface).
  • Expérience d’utilisation de la bibliothèque Augeas

    • Partage d’une expérience avec la bibliothèque Augeas pour détecter les différences dans des fichiers de configuration et permettre aux utilisateurs d’écrire des listes d’autorisation fines, insensibles à la syntaxe.
  • Comparaison avec Semantic Merge

    • Semantic Merge n’était pas open source, tandis que Difftastic l’est et fournit un meilleur diff.
    • Le commentaire exprime aussi la curiosité de savoir s’il existe un projet d’étendre Difftastic avec une fonction de merge.
  • Retour vers icdiff

    • Un avis indique avoir essayé Difftastic, mais être revenu à icdiff à cause de problèmes comme un formatage étrange appliqué à des parties inchangées.
  • Problèmes visuels de Difftastic

    • Il est souligné que, lors de l’inspection de gros fichiers XML, il est difficile de distinguer visuellement les lignes modifiées et les attributs modifiés, et qu’une documentation sur la manière de changer le style serait nécessaire.
  • Taille d’installation de Difftastic

    • Il est mentionné que le paquet Arch Linux fait 7 MB, mais passe à 80 MB après installation, et que le binaire difft lui-même fait 78 MB.
    • Sur un dataset ZFS utilisant la compression LZ4, il est affiché à 17 MB, ce qui soulève la question de savoir pourquoi du contenu compressible n’a pas été évité dans le binaire.