3 points par xguru 4 시간 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Compare les entités de code plutôt que les lignes pour montrer quelles fonctions/méthodes/classes ont été ajoutées, modifiées, supprimées, déplacées ou renommées
    • « la ligne x~y a changé » → « la fonction blah a changé »
  • Fonctionne sans configuration sur n’importe quel dépôt Git, et permet aussi de comparer des fichiers arbitraires en dehors de Git
  • Le cache d’entités stocké dans SQLite est conservé dans le répertoire de cache de l’OS, hors du dépôt, ce qui n’altère pas l’arborescence de travail
  • Analyse le code avec tree-sitter et relie le code avant/après changement dans l’ordre suivant : ID d’entité → hash structurel de l’AST → similarité de tokens supérieure à 80 %, afin de détecter les renommages et les déplacements
  • Commandes prises en charge

    • sem diff : compare l’arborescence de travail / la zone de staging / des commits / une plage de commits / deux fichiers arbitraires, avec sortie en texte brut, Markdown ou JSON
    • sem impact : trouve le code dépendant, les appelants et les tests affectés lorsqu’une fonction donnée change
    • sem blame : affiche au niveau entité le dernier auteur d’une modification sur une fonction/classe/méthode
    • sem log : suit via l’historique Git comment une entité a évolué
      • Si aucune entité n’est spécifiée, analyse les hotspots (éléments souvent modifiés) / co-change pairs (paires modifiées ensemble de façon répétée) du dépôt (« si vous touchez à l’un, n’oubliez pas l’autre »)
    • sem entities : affiche toutes les entités sous le dossier courant
    • sem context : assemble uniquement le code contextuel nécessaire à un agent en respectant le budget de tokens
    • sem setup : une fois exécuté, la sortie de git diff passe au niveau entité, et un hook pre-commit affichant la portée d’impact des changements stagés est aussi installé
      • Sur macOS et Linux, relie Claude Code à un graphe de dépendances résident et à un hook de contexte au démarrage du prompt, pour éviter de réanalyser le dépôt ou de repartir à la recherche du code à chaque fois
    • sem mcp : fournit diff, impact, context, entities, blame, log comme outils MCP afin qu’un agent de codage puisse consulter uniquement les fonctions et dépendances nécessaires au lieu de fichiers complets
  • En ajoutant une GitHub Action, met à jour sur chaque PR un commentaire épinglé unique avec les fonctions/classes/méthodes modifiées, et distingue aussi les PR où seuls le formatage ou les commentaires ont changé
  • Prend en charge 32 langages, dont TypeScript, Python, Go, Rust, Java, Swift, SQL, C/C++, ainsi que JSON/YAML/TOML/CSV/Markdown
    • Les fichiers non pris en charge sont traités avec un diff par chunks
  • Licence : MIT OR Apache-2.0

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.