VISO TRUST MCP Server

officiel

Accédez et gérez votre programme de risques tiers VISO TRUST directement via votre assistant IA.

Documentation

Serveur MCP VISO TRUST

Un serveur Model Context Protocol (MCP) pour intégrer les capacités de l'API VISO TRUST avec des assistants IA.

Prérequis

  • Java 21+
  • Gradle
  • Docker (optionnel pour le déploiement conteneurisé)
  • MCP Inspector (optionnel pour les tests)

Configuration

Configuration de l'API VISO TRUST

Les propriétés suivantes peuvent être configurées pour l'API VISO TRUST :

  • visotrust.api.base-url : L'URL de base pour l'API VISO TRUST (par défaut : http://localhost:8080)
  • visotrust.api.token : Votre jeton API depuis la plateforme VISO TRUST (obligatoire)
  • visotrust.api.timeout : Délai d'expiration des requêtes API en millisecondes (par défaut : 30000)
  • visotrust.api.connect-timeout : Délai d'expiration de connexion API en millisecondes (par défaut : 5000)

Pour savoir comment générer un jeton API pour la variable d'environnement visotrust.api.token, consultez la documentation de support VISO TRUST.

Profils d'application

Cette application prend en charge les profils Spring Boot pour activer différentes configurations selon les scénarios de déploiement.

Profil Remote

Le profil remote est spécifiquement conçu pour la prise en charge MCP à distance utilisant les Server-Sent Events (SSE). Ce profil configure l'application pour fonctionner de manière optimale dans des environnements distribués où le serveur MCP doit communiquer avec des clients distants via des connexions HTTP/SSE.

Différences clés du profil remote :

  • Configuré pour la communication basée sur SSE au lieu des entrées/sorties standard
  • Paramètres serveur optimisés pour les connexions client distantes
  • Journalisation améliorée pour le débogage distribué

Comment activer le profil remote :

Lors de l'exécution directe avec Java :

java -jar viso-mcp-server-<version>.jar --spring.profiles.active=remote

Lors de l'exécution avec Gradle :

./gradlew bootRun --args="--spring.profiles.active=remote"

Lors de l'utilisation de Docker :

docker run -i --rm \
  -e VISOTRUST_API_TOKEN=<your-api-token> \
  -e SPRING_PROFILES_ACTIVE=remote \
  viso-mcp-server

Quand utiliser le profil remote :

  • Lors du déploiement du serveur MCP sur un serveur distant ou un environnement cloud
  • Lorsque les clients se connecteront via HTTP/SSE plutôt qu'en stdio direct
  • Lorsque vous avez besoin d'une journalisation et d'une surveillance améliorées pour les déploiements distribués
  • Lors de l'intégration avec des assistants IA basés sur le web nécessitant une communication SSE

Pour le développement local et la communication stdio directe, utilisez le profil par défaut (aucune spécification de profil nécessaire).

Installation

Installation rapide

Cliquez sur l'un des boutons ci-dessous pour installer le serveur MCP VISO dans VS Code :

Install with Docker in VS Code Install with Docker in VS Code Insiders

Configuration manuelle avec VS Code

Ajoutez le bloc JSON suivant à votre fichier User Settings (JSON) dans VS Code. Vous pouvez le faire en appuyant sur Ctrl + Shift + P et en tapant Preferences: Open User Settings (JSON).

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "viso_baseurl",
        "description": "VISO TRUST API Base URL",
        "default": "https://app.visotrust.com"
      },
      {
        "type": "promptString",
        "id": "viso_token",
        "description": "VISO TRUST API Token",
        "password": true
      }
    ],
    "servers": {
      "viso-mcp": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "VISOTRUST_API_TOKEN",
          "-e",
          "VISOTRUST_API_BASEURL",
          "visotrustai/viso-mcp-server:latest"
        ],
        "env": {
          "VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
          "VISOTRUST_API_TOKEN": "${input:viso_token}"
        }
      }
    }
  }
}

Optionnellement, vous pouvez ajouter un exemple similaire (c'est-à-dire sans la clé mcp) à un fichier nommé .vscode/mcp.json dans votre espace de travail. Cela vous permettra de partager la configuration avec d'autres.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "viso_baseurl",
      "description": "VISO TRUST API Base URL",
      "default": "https://app.visotrust.com"
    },
    {
      "type": "promptString",
      "id": "viso_token",
      "description": "VISO TRUST API Token",
      "password": true
    }
  ],
  "servers": {
    "viso-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "VISOTRUST_API_TOKEN",
        "-e",
        "VISOTRUST_API_BASEURL",
        "visotrustai/viso-mcp-server:latest"
      ],
      "env": {
        "VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
        "VISOTRUST_API_TOKEN": "${input:viso_token}"
      }
    }
  }
}

Utilisation avec Claude Desktop et autres clients MCP

Configuration Docker

{
    "mcpServers": {
        "viso-mcp": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e", "VISOTRUST_API_TOKEN",
                "-e", "VISOTRUST_API_BASEURL",
                "visotrustai/viso-mcp-server:latest"
            ],
            "env": {
                "VISOTRUST_API_TOKEN": "<your-api-token>",
                "VISOTRUST_API_BASEURL": "https://app.visotrust.com"
            }
        }
    }
}

Configuration Java

{
    "mcpServers": {
        "viso-mcp": {
            "command": "java",
            "args": [
                "-jar",
                "viso-mcp-server-<version>.jar",
                "--port",
                "8080",
                "--host",
                "localhost"
            ],
            "env": {
                "JAVA_TOOL_OPTIONS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
                "VISOTRUST_API_TOKEN": "<your-api-token>",
                "VISOTRUST_API_BASEURL": "https://app.visotrust.com"
            }
        }
    }
}

Remarque : La variable d'environnement JAVA_TOOL_OPTIONS est utilisée pour définir les options JVM pour le débogage à distance. L'adresse et le port peuvent être modifiés selon les besoins.

💻 Développement

Configuration Docker

Construire l'image Docker

docker build -t viso-mcp-server .

Exécuter le conteneur Docker

docker run -i --rm -e VISOTRUST_API_TOKEN=<your-api-token> viso-mcp-server

Débogage

Installer MCP Inspector

npm -g install @modelcontextprotocol/inspector

Exécuter MCP Inspector pour les tests

  1. Construire le fichier JAR du serveur MCP
./gradlew bootJar
  1. Exécuter MCP Inspector
npx @modelcontextprotocol/inspector \
    -e JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=\*:5005 \
    -e VISOTRUST_API_TOKEN=<your-api-token> \
    java -jar build/libs/viso-mcp-server-<version>.jar \
    --port 8080 --host localhost

Remplacez <version> par la version actuelle du projet (par exemple, 1.0.0 ou la version de la dernière release).

Pipeline CI/CD

Ce projet utilise GitHub Actions pour l'intégration et le déploiement continus. Le workflow inclut les tâches suivantes :

Lint

Vérifie le formatage du code à l'aide de Spotless :

./gradlew spotlessCheck

Build

Construit l'application et crée un fichier JAR :

./gradlew build

Publish

Lorsqu'une nouvelle release est créée :

  1. Met à jour la version du projet dans build.gradle pour correspondre au tag de release
  2. Téléverse le fichier JAR vers la release GitHub avec la version du tag de release
  3. Construit et pousse l'image Docker vers Docker Hub avec les tags :
    • latest
    • Le tag de release (par exemple, v1.0.0)
Secrets requis pour la publication

Pour activer la publication sur Docker Hub, ajoutez ces secrets à votre dépôt GitHub :

  • DOCKERHUB_USERNAME : Votre nom d'utilisateur Docker Hub
  • DOCKERHUB_TOKEN : Votre jeton d'accès Docker Hub

🛠️ Outils

Cette section fournit la documentation des outils exposés par le serveur MCP VISO. Chaque outil a un objectif spécifique, des paramètres d'entrée et un format de sortie.

Évaluations

get_assessment - Obtenir une évaluation par son ID

  • id : ID de l'évaluation (nombre, obligatoire)

Renvoie des informations détaillées sur une évaluation spécifique.

get_assessment_summary - Obtenir le résumé d'une évaluation par son ID

  • id : ID de l'évaluation (nombre, obligatoire)

Renvoie les détails du résumé pour une évaluation spécifique.

create_assessment - Démarrer une évaluation pour une relation existante

  • relationshipId : L'ID de la relation pour laquelle créer une évaluation (nombre, obligatoire)
  • recipientEmail : Adresse e-mail du destinataire de l'évaluation (chaîne, optionnel)
  • recipientFirstName : Prénom du destinataire de l'évaluation (chaîne, optionnel)
  • recipientLastName : Nom de famille du destinataire de l'évaluation (chaîne, optionnel)
  • publicDocumentUrls : URLs des documents publics à inclure dans l'évaluation (chaîne[], optionnel)
  • followupType : Type de suivi (énumération de chaînes, optionnel)
  • followupRiskThreshold : Seuil de niveau de risque qui déclenche un suivi (énumération de chaînes, optionnel)
  • followupTimeline : Calendrier des actions de suivi (énumération de chaînes, optionnel)
  • collectionTimeline : Calendrier pour que le fournisseur termine la soumission de l'évaluation (énumération de chaînes, optionnel)
  • noVendorResponseAction : Action à entreprendre lorsque le fournisseur ne répond pas (énumération de chaînes, optionnel)
  • aiProcessingOnly : Traiter uniquement avec l'IA sans examen humain (booléen, optionnel)
  • requestedAuditTypes : Types d'audits demandés pour cette évaluation (chaîne[], optionnel)

Renvoie les détails de l'évaluation créée.

update_assessment_expiration_date - Mettre à jour la date limite à laquelle le fournisseur doit soumettre sa réponse à l'évaluation

  • id : ID de l'évaluation (nombre, obligatoire)
  • expirationDate : Nouvelle date/heure d'expiration, ISO-8601 avec décalage ; doit être dans le futur (chaîne, obligatoire)

Renvoie un message de confirmation.

update_assessment_followup - Mettre à jour la configuration de suivi pour une évaluation

  • id : ID de l'évaluation (nombre, obligatoire)
  • followupType : Type de suivi (énumération de chaînes, obligatoire)
  • followupRiskThreshold : Seuil de risque auquel ou au-dessus duquel une évaluation de suivi doit être déclenchée (énumération de chaînes, optionnel)
  • followupTimeline : Calendrier de suivi (énumération de chaînes, optionnel)

Renvoie un message de confirmation.

Journaux d'audit

get_user_audit_log_events - Obtenir les événements du journal d'audit limités à l'utilisateur pour votre organisation

  • start : Date/heure de début de la requête, ISO-8601 avec décalage (chaîne, obligatoire)
  • end : Date/heure de fin de la requête, ISO-8601 avec décalage (chaîne, obligatoire)
  • eventTypes : Ensemble optionnel de types d'événements à filtrer (par exemple USER_LOGGED_IN) ; laisser vide pour tous (chaîne[], optionnel)

Renvoie une liste d'événements du journal d'audit utilisateur, limitée à 500 enregistrements.

get_audit_log_events - Obtenir les événements filtrés du journal d'audit (événements utilisateur, organisation, évaluation et relation)

  • start : Date/heure de début de la requête, ISO-8601 avec décalage (chaîne, obligatoire)
  • end : Date/heure de fin de la requête, ISO-8601 avec décalage (chaîne, obligatoire)
  • eventTypes : Ensemble optionnel de types d'événements à filtrer (par exemple ASSESSMENT_COMPLETED, RELATIONSHIP_CREATED) ; laisser vide pour tous (chaîne[], optionnel)

Renvoie des enregistrements d'événements du journal d'audit polymorphes. Chaque élément a au moins auditEventType et dateTime.

Cas d'affaires

get_all_business_cases - Obtenir tous les cas d'affaires disponibles pour votre organisation

Aucun paramètre requis.

Renvoie une liste de tous les cas d'affaires disponibles pour votre organisation.

Types de données

get_all_datatypes - Obtenir tous les types de données disponibles pour votre organisation

Aucun paramètre requis.

Renvoie une liste de tous les types de données disponibles pour votre organisation.

Annuaire des fournisseurs

search_vendor_directory - Rechercher un fournisseur dans l'annuaire des fournisseurs VISO TRUST par URL ou domaine

  • urlOrDomain : L'URL ou le nom de domaine à rechercher, par exemple example.com (chaîne, obligatoire)

Renvoie les métadonnées de base du fournisseur (nom, page d'accueil, description, favicon, domaines connus).

Relations

get_all_relationships - Obtenir une liste de toutes les relations et leurs détails d'évaluation

Aucun paramètre requis.

Renvoie des informations sur les fournisseurs tiers, y compris leur statut d'évaluation, les niveaux de risque et les coordonnées.

get_relationship_by_id - Obtenir une relation spécifique et ses détails d'évaluation par ID

  • id : ID de la relation (nombre, obligatoire)

Renvoie des informations détaillées sur un fournisseur tiers, y compris le statut d'évaluation, les niveaux de risque et les coordonnées.

get_relationship_assessment_history - Obtenir l'historique des évaluations pour une relation

  • id : ID de la relation (nombre, obligatoire)

Renvoie une liste des évaluations associées à la relation spécifiée.

create_relationship - Créer une nouvelle relation avec un fournisseur tiers

  • name : Nom de la relation/fournisseur (chaîne, obligatoire)
  • homepage : URL de la page d'accueil du fournisseur (chaîne, obligatoire)
  • businessOwnerEmail : Adresse e-mail du propriétaire métier (chaîne, obligatoire)
  • businessOwnerFirstName : Prénom du propriétaire métier (chaîne, optionnel)
  • businessOwnerLastName : Nom de famille du propriétaire métier (chaîne, optionnel)
  • description : Description de la relation/fournisseur (chaîne, optionnel)
  • contextTypes : Liste des types de contexte métier pour cette relation (objet[], optionnel)
  • dataTypes : Liste des types de données traités dans cette relation (objet[], optionnel)
  • tags : Liste de tags pour catégoriser cette relation (chaîne[], optionnel)
  • thirdPartyContact : Coordonnées du représentant du fournisseur tiers (objet, optionnel)

Renvoie les détails de la relation créée.

create_relationship_by_domain - Créer une nouvelle relation en utilisant uniquement le domaine du fournisseur

  • domain : Domaine du fournisseur, par exemple visotrust.com (chaîne, obligatoire)
  • vendorName : Nom du fournisseur (chaîne, obligatoire)
  • product : Produit offert par le fournisseur (chaîne, optionnel)
  • description : Description de la relation fournisseur (chaîne, optionnel)

Renvoie les détails de la relation créée.

update_relationship - Mettre à jour une relation existante avec un fournisseur tiers

  • id : ID de la relation (nombre, obligatoire)
  • name : Nom de la relation/fournisseur (chaîne, obligatoire)
  • homepage : URL de la page d'accueil du fournisseur (chaîne, optionnel)
  • description : Description de la relation/fournisseur (chaîne, optionnel)
  • contextTypes : Liste des types de contexte métier (objet[], optionnel)
  • dataTypes : Liste des types de données traités dans cette relation (objet[], optionnel)
  • businessOwnerEmail : Adresse e-mail du propriétaire métier (chaîne, optionnel)
  • businessOwnerFirstName : Prénom du propriétaire métier (chaîne, optionnel)
  • businessOwnerLastName : Nom de famille du propriétaire métier (chaîne, optionnel)
  • tags : Liste de tags (chaîne[], optionnel)

Renvoie les détails de la relation mise à jour.

partially_update_relationship - Mettre à jour partiellement une relation existante

Accepte les mêmes champs que update_relationship. Seuls les champs fournis dans la requête sont modifiés ; les autres champs restent inchangés.

Renvoie les détails de la relation mise à jour.

search_relationships - Rechercher des relations par nom de domaine ou nom de fournisseur

  • domains : Liste des noms de domaine à rechercher (chaîne[], obligatoire)
  • name : Nom du fournisseur/de la relation à rechercher (chaîne, obligatoire)

Renvoie une liste des relations correspondantes avec leurs détails d'évaluation.

create_tags - Créer de nouveaux tags pour catégoriser les relations

  • tags : Liste des noms de tags à créer (chaîne[], obligatoire)

Renvoie une liste de tous les tags, y compris ceux nouvellement créés.

update_third_party_contact - Mettre à jour les coordonnées d'un fournisseur tiers

  • relationshipId : ID de la relation (nombre, obligatoire)
  • email : E-mail de contact (chaîne, obligatoire)
  • firstName : Prénom du contact (chaîne, obligatoire)
  • lastName : Nom de famille du contact (chaîne, obligatoire)

Renvoie les détails de la relation mise à jour.

onboard_relationship - Intégrer une relation, avec éventuellement un résumé d’approbation et des paramètres de gestion du cycle de vie

  • id : Identifiant de la relation (nombre, requis)
  • approvalSummary : Résumé d’approbation optionnel enregistré lors de l’intégration (chaîne, optionnel)
  • lifecycleManagementUpdateRequest : Paramètres optionnels de gestion du cycle de vie (objet, optionnel)
    • artifactUpdateSettings.artifactUpdateType : Type de mise à jour de l’artefact (énumération de chaînes)
    • recertificationSettings.recertificationType : Type de recertification (énumération de chaînes)
    • recertificationSettings.recertificationDate : Date/heure de la prochaine recertification, ISO-8601 avec décalage (chaîne)
    • recertificationSettings.reviewFrequency : THREE_YEARS, TWO_YEARS, ANNUAL, SEMIANNUAL, ou QUARTERLY (énumération de chaînes)

Renvoie les détails de la relation intégrée.

offboard_relationship - Désintégrer une relation

  • id : Identifiant de la relation (nombre, requis)

Renvoie les détails de la relation désintégrée.

archive_relationship - Archiver une relation

  • id : Identifiant de la relation (nombre, requis)

Renvoie les détails de la relation archivée.

Webhooks

get_all_webhooks - Obtenir tous les webhooks

Aucun paramètre requis.

Renvoie une liste de toutes les configurations de webhooks.

get_webhook - Obtenir une configuration de webhook par identifiant

  • id : Identifiant du webhook (nombre, requis)

Renvoie les détails d’une configuration de webhook spécifique.

create_webhook_configuration - Créer une configuration de webhook

  • request : Paramètres de création du webhook (objet, requis)
    • url : URL du webhook (chaîne, requis)
    • secret : Secret du webhook (chaîne, requis)
    • eventTypes : Types d’événements déclenchant le webhook (tableau de chaînes, requis)
    • serviceType : Type de service pour le webhook (chaîne, requis)

Renvoie la configuration de webhook créée.

update_webhook_configuration - Mettre à jour une configuration de webhook

  • request : Paramètres de mise à jour du webhook (objet, requis)
    • id : Identifiant du webhook (nombre, requis)
    • url : URL du webhook (chaîne, optionnel)
    • secret : Secret du webhook (chaîne, optionnel)
    • eventTypes : Types d’événements déclenchant le webhook (tableau de chaînes, optionnel)
    • serviceType : Type de service pour le webhook (chaîne, optionnel)

Renvoie la configuration de webhook mise à jour.

delete_webhook_configuration - Supprimer une configuration de webhook

  • id : Identifiant du webhook (nombre, requis)

Supprime la configuration de webhook spécifiée.

Rapports de renseignement

create_bitsight_intelligence_report - Créer un nouveau rapport de renseignement BitSight

  • request : Paramètres du rapport BitSight (objet, requis)
    • vendorDomain : Nom de domaine principal du fournisseur (chaîne, requis)
    • reportDate : Date/heure de génération du rapport (chaîne ISO 8601, requis)
    • link : Lien optionnel vers l’interface utilisateur du fournisseur (chaîne, optionnel)
    • guid : GUID BitSight de l’entité (chaîne, requis)
    • customId : Identifiant personnalisé provenant de BitSight (chaîne, optionnel)
    • name : Nom d’affichage de l’entité BitSight (chaîne, optionnel)
    • description : Description de l’entité BitSight (chaîne, optionnel)
    • primaryDomain : Domaine principal de l’entité BitSight (chaîne, optionnel)
    • ratingRange : Plage de notation BitSight (chaîne, optionnel)
    • ratingColor : Couleur de la notation BitSight (chaîne, optionnel)
    • confidence : Niveau de confiance de la notation BitSight (chaîne, optionnel)

Renvoie le rapport de renseignement créé.

create_security_scorecard_intelligence_report - Créer un nouveau rapport de renseignement SecurityScorecard

  • request : Paramètres du rapport SecurityScorecard (objet, requis)
    • vendorDomain : Nom de domaine principal du fournisseur (chaîne, requis)
    • reportDate : Date/heure de génération du rapport (chaîne ISO 8601, requis)
    • link : Lien optionnel vers l’interface utilisateur du fournisseur (chaîne, optionnel)
    • grade : Note alphabétique SecurityScorecard (chaîne, requis)
    • domain : Domaine associé à l’entité du scorecard (chaîne, optionnel)
    • score : Score numérique provenant de SecurityScorecard (nombre, optionnel)

Renvoie le rapport de renseignement créé.

create_recorded_future_intelligence_report - Créer un nouveau rapport de renseignement Recorded Future

  • request : Paramètres du rapport Recorded Future (objet, requis)
    • vendorDomain : Nom de domaine principal du fournisseur (chaîne, requis)
    • reportDate : Date/heure de génération du rapport (chaîne ISO 8601, requis)
    • entityType : Type d’entité Recorded Future, par ex. Company (chaîne, requis)
    • entity : Identifiant de l’entité Recorded Future (chaîne, requis)
    • riskScore : Score de risque numérique (nombre, requis)
    • riskLevel : Libellé du niveau de risque, par ex. Critical/High/Medium/Low (chaîne, requis)
    • link : Lien optionnel vers le rapport dans l’interface utilisateur du fournisseur (chaîne, optionnel)
    • firstSeen : Date la plus ancienne observée pour l’entité, ISO 8601 (chaîne, optionnel)
    • lastSeen : Date la plus récente observée pour l’entité, ISO 8601 (chaîne, optionnel)
    • triggeredRuleCount : Nombre de règles Recorded Future qui se sont déclenchées (nombre, optionnel)
    • maxRuleCount : Nombre maximum de règles Recorded Future évaluées (nombre, optionnel)
    • summary : Texte de résumé optionnel provenant de Recorded Future (chaîne, optionnel)
    • criticalityLabel : Libellé de criticité Recorded Future pour l’entité (chaîne, optionnel)

Renvoie le rapport de renseignement créé.

get_intelligence_reports_by_vendor - Obtenir tous les rapports de renseignement pour un fournisseur

  • vendorDomain : Nom de domaine principal du fournisseur (chaîne, requis)

Renvoie une liste de rapports de renseignement pour le fournisseur spécifié.

get_latest_intelligence_report - Obtenir le dernier rapport de renseignement pour un fournisseur depuis une source spécifique

  • vendorDomain : Nom de domaine principal du fournisseur (chaîne, requis)
  • source : Fournisseur de renseignement (énumération de chaînes : BITSIGHT, SECURITY_SCORECARD, ou RECORDED_FUTURE, requis)

Renvoie le dernier rapport de renseignement pour le fournisseur et la source spécifiés.

Utilisateurs

get_all_users - Obtenir tous les utilisateurs de votre organisation

  • page : Page de résultats à récupérer (nombre, optionnel ; par défaut 0)
  • size : Nombre d’enregistrements par page (nombre, optionnel ; par défaut 20)
  • sort : Critères de tri au format : propriété(,asc|desc) (chaîne, optionnel)

Renvoie une liste paginée d’utilisateurs.

get_user_by_email - Obtenir un utilisateur par email

  • email : Adresse email de l’utilisateur (chaîne, requis)

Renvoie les détails de l’utilisateur.

create_user - Créer un nouvel utilisateur

  • request : Paramètres de création de l’utilisateur (objet, requis)
    • email : Adresse email du nouvel utilisateur (chaîne, requis)
    • firstName : Prénom du nouvel utilisateur (chaîne, requis)
    • lastName : Nom de famille du nouvel utilisateur (chaîne, requis)

Renvoie l’utilisateur créé.

Formatage du code

Ce projet utilise Spotless avec Google Java Format pour le formatage du code. Un hook de pré-commit est automatiquement mis en place pour garantir un style de code cohérent.

Configuration

Après avoir cloné le dépôt, le hook de pré-commit sera automatiquement configuré lorsque vous exécuterez une commande Gradle.

Formatage manuel

Pour formater manuellement tous les fichiers :

./gradlew spotlessApply

Pour vérifier si les fichiers sont correctement formatés :

./gradlew spotlessCheck

Si le hook de pré-commit rejette votre commit en raison de problèmes de formatage, exécutez simplement ./gradlew spotlessApply pour corriger le formatage, puis réessayez de commiter.

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.