menu Menu documentation

Questions sur le projet personnalisé

Dernière mise à jour le - Available in English

Pour créer un projet personnalisé, accédez à la page Questions et cliquez sur Créer une question, puis sélectionnez Projet. Cela ouvre le flux de travail de création de projet, dans lequel vous concevrez un environnement de codage complet adapté à vos besoins d'évaluation spécifiques.

Capture d'écran de l'interface de CoderPad Screen montrant une fenêtre contextuelle intitulée "Sélectionner le type de question". Les options listées sont : Choix multiple, Texte libre, Exercice de codage, Téléchargement de fichier et Projet. L'option "Projet" est identifiée par une étiquette rouge "Nouveau". Une grande flèche rouge pointe directement vers l'option "Projet".

Sélection d'un modèle

Les modèles sont des projets minimaux préconfigurés construits autour de combinaisons technologiques spécifiques, conçus pour servir de points de départ à vos projets personnalisés.

Les modèles sont intentionnellement minimaux afin de fournir une base propre tout en vous donnant une flexibilité totale pour personnaliser l'environnement en fonction de vos besoins spécifiques.

/citation

Capture d'écran de l'écran "Sélectionner un modèle" dans CoderPad. Huit options de modèles sont affichées dans une grille:Modèle par défaut - Modèle Node.js minimaliste.React - Contre-application React 19 de base avec Vite et Node.js.Angular - Application Angular 19 de base avec Vite et Node.js.Python - Environnement avec Poetry, Volta et Node.js.Java - Environnement avec Maven, Gradle, Volta et Node.js.Go - Environnement avec Volta et Node.js.js.Java - Environnement avec Maven, Gradle, Volta, et Node.js.Go - Environnement avec Volta et Node.js.NET - Environnement (C#, F#, Vb.net) avec Xunit, Volta, et Node.js.Next.js - Full stack Next.js 15.5 avec Node.js, Prisma, et PostgreSQL.


Modifier votre projet dans l'IDE

Une fois que vous avez sélectionné un modèle, descendez jusqu'à la section Projet et cliquez sur Editer votre projet dans l'IDE. Vous accéderez à un environnement VS Code complet dans lequel vous pourrez concevoir votre projet.

Capture d'écran de l'interface de CoderPad dans la section "Questions". Une case en surbrillance intitulée "Projet" comprend une icône de dossier et un bouton intitulé "Modifier votre projet dans l'IDE". En dessous, le panneau "Paramètres" affiche des champs : Domaine défini sur Node.js, Difficulté définie sur Facile, Durée 40 minutes, Points 200, et Équipe définie sur CoderPad Inc.


Ce qui est disponible dans l'IDE

Capture d'écran de l'interface CoderPad Screen 'Project edition'. La barre latérale gauche affiche un dossier de projet nommé "PROJECT [CODERPAD]" contenant des fichiers : .coderpad, .vscode, .gitignore et instructions.md (sélectionné). L'éditeur principal affiche le fichier instructions.md avec un texte en markdown expliquant comment utiliser le modèle de projet, enregistrer le travail et définir des instructions. Le panneau de droite intitulé "AI Assist" affiche le logo de ChatGPT et un champ d'invite. En bas à droite, un bouton jaune intitulé "Mettre à jour le projet" est visible

Votre environnement de projet personnalisé comprend toutes les fonctionnalités standard de VS Code :

  • Terminal intégré avec un accès complet à la ligne de commande pour l'installation de paquets, l'exécution de scripts et les opérations du système
  • IntelliSense fournir une complétion intelligente du code, des conseils sur les paramètres et une détection des erreurs
  • Assistant IA pour obtenir de l'aide pour affiner votre projet
  • Marché de l'extension l'accès à l'installation d'outils spécifiques à la langue et d'outils d'amélioration de la productivité
  • Débogueur intégré la prise en charge de plusieurs langages de programmation avec des points d'arrêt, l'inspection des variables et l'analyse de la pile d'appels
  • Intégration de Git pour les flux de travail de contrôle des versions et le suivi des modifications

ℹ️ Configurations de l'environnement

  • Les projets sont exécutés dans des conteneurs Linux x64 isolés.
  • Taille du projet (taille maximale du référentiel) : 50MB
  • Espace disque (espace de stockage mis à la disposition des candidats pendant leur projet) : 5GB
  • Mémoire (RAM) : 2GB

Instructions pour les candidats

Chaque projet doit inclure un fichier instructions.md contenant l'énoncé du problème et des conseils d'installation. Il utilise la syntaxe markdown. Ce fichier est automatiquement ouvert et rendu lorsque le candidat commence la question.

Utilisez-le pour :

  • Énoncé du problème et critères d'acceptation
  • Étapes d'installation et d'exécution et notes sur l'environnement
  • Les contraintes, les attentes ou les résultats attendus

coderpad/settings.json fichier

Le fichier .coderpad/settings.json contrôle le comportement critique du projet et doit être configuré correctement pour une expérience optimale du candidat.

Exemple

{
    "files.exclude": ["solution.md"],
    "workbench.defaultOpenFiles": ["src/App.tsx"],
    "autograding" (négociation automatique): {
        "runCommand": "rm -f result.tap && npm ci && npx jest --ci --reporters=default --reporters=jest-tap-reporter > result.tap",
        "rapports": {
            "TAP": ["result.tap"]
        }
    }
}Langage du code : JSON / JSON avec commentaires (json)

Options de configuration

  • Ouvrir des fichiers: Spécifier quels fichiers doivent être ouverts par défaut lorsque les candidats démarrent le projet (en plus de instructions.md). Cela permet d'attirer leur attention sur des points de départ ou des dossiers clés.
  • Fichiers exclus: Liste des fichiers et des répertoires qui ne seront pas inclus dans l'environnement du projet du candidat.
  • Logique d'autograding: Définir la manière dont les tests automatisés doivent être exécutés et dont les résultats doivent être communiqués (voir la section sur l'évaluation automatique ci-dessous).

Recommander des extensions

Utilisez le fichier standard VS Code .vscode/extensions.json pour recommander des extensions. Exemple :

{
  "recommandations": [
    "Orta.vscode-jest"
  ]
}Langage du code : JSON / JSON avec commentaires (json)

Lorsque les candidats démarrent votre projet, ils reçoivent des notifications leur suggérant ces extensions, ce qui les aide à mettre en place rapidement un environnement de développement optimal.

Pré-installation d'extensions

Vous pouvez définir une liste d'extensions qui s'installeront automatiquement au démarrage du projet, tant pour les recruteurs que pour les candidats.

Pour cela, ajoutez vos extensions au champ vscodeExtensions.installedByDefault dans le fichier .coderpad/settings.json de votre projet. Voici un exemple :

{
    "vscodeExtensions.installedByDefault": [
        "ms-python.python",
        "esbenp.prettier-vscode"
    ]
}Langage du code : JSON / JSON avec commentaires (json)

Assistant IA

L'assistant AI peut être activé ou désactivé au niveau du test par le biais des paramètres du test. S'il est activé :

  • Les candidats voient un Assistant IA et peut dialoguer avec un modèle disponible.
  • Les conversations AI apparaissent en lecture pour les relecteurs.

Rendu frontal

Pour les projets de développement web, le module VS Code Simple Browser rend automatiquement votre application, fournissant aux candidats un retour visuel immédiat.

  • Lorsque votre serveur de développement démarre sur n'importe quel port disponible, le Simple Browser s'ouvre automatiquement
  • Ils estiment que 3 étapes constituent une bonne Ports dans le panneau VS Code montre tous les ports transférés et leur état.

Aperçu du site web

Pour les projets de développement web, un composant de prévisualisation web peut être utilisé pour rendre votre application, fournissant aux candidats un retour visuel immédiat. Pour activer un aperçu Web dans vos projets, configurez le service exposé dans le fichier .coderpad/settings.json à l'aide des champs suivants :

  • mode: Ce mode permet d'activer la prévisualisation web
  • openByDefault: Détermine si l'aperçu s'ouvre automatiquement au démarrage du projet
  • port: Spécifie le port sur lequel la prévisualisation sera mappée
  • nom: Définissez un nom d'affichage personnalisé pour votre application

Par exemple :

"exposé": [
    {
        "mode": "navigateur", 
        "openByDefault": true, 
        "port": 5173, 
        "nom": "MonApp" 
    }
]Langage du code : JSON / JSON avec commentaires (json)

Connexion à une base de données

Vous pouvez attacher des bases de données PostgreSQL ou MySQL à n'importe quel projet via la section Environnement d'exécution de l'éditeur de questions.

Capture d'écran des paramètres de l'environnement d'exécution dans CoderPad montrant un environnement en cours d'exécution avec Node 22.9 et PostgreSQL 16.4. Le menu déroulant “Ressources” est en surbrillance, ce qui indique que PostgreSQL 16.4 est sélectionné.

Les informations d'identification de la connexion sont fournies par des variables d'environnement. Par exemple :

  • nom d'utilisateur : process.env.POSTGRES_LOGIN
  • mot de passe : process.env.POSTGRES_PASSWORD
  • host : 'screen-execute-environment-node-postgres'

ℹ️ Limitations de la mémoire vive de la base de données

  • PostgreSQL : 200 Mo
  • MySQL : 500 MO

Intégration de Git

Les projets incluent un .gitignore par défaut pour garder les artefacts éphémères ou de construction hors du contrôle de version. Au fur et à mesure que vous modifiez votre projet, vous pourrez suivre toutes les modifications grâce au module Source Control.

Lorsque vous commencez à modifier votre projet, une branche est créée. Lorsque vous cliquez sur Mettre à jour le projet, vos modifications sont automatiquement validées et transférées dans le référentiel du projet distant.

Une fois la question sauvegardée, les commits poussés sont fusionnés sur main, et une version est créée. Les utilisateurs avancés peuvent gérer les commits manuellement via le panneau Source Control de VS Code.

Comment sauvegarder votre travail

  1. Sauvez tous les fichiers dans VS Code (Ctrl/Cmd + S)
  2. Cliquez sur Mise à jour du projet en bas de l'écran
  3. Fermer l'IDE
  4. Cliquez sur Sauvez au bas de la page de la question

⚠️ Votre branche temporaire contenant votre projet mis à jour ne sera fusionnée dans la branche principale que lorsque vous aurez enregistré la question à partir de l'éditeur de questions.

Notation automatique

Un fichier .coderpad/settings.json correctement configuré est nécessaire pour la fonctionnalité de classement automatique. La configuration définit comment les tests sont exécutés et où les résultats sont stockés.

Exemple de configuration

{
  "autograding" (négociation automatique): {
    "rapports": {
      "TAP": ["result.tap"]
    },
    "runCommand": "rm -f result.tap && npm ci && npx jest --ci --reporters=default --reporters=jest-tap-reporter > result.tap"
  }
}Langage du code : JSON / JSON avec commentaires (json)

Exigences de la commande d'exécution

La runCommand doit être conçue pour fonctionner dans un environnement de conteneurs frais et devrait :

  • Installation de dépendances: Utilisation npm ci, pip install -r requirements.txtou équivalent
  • Exécuter les tests: Exécutez votre cadre de test avec les rapporteurs appropriés
  • Générer des rapports: Sortie des résultats au format TAP ou JUNIT
  • Manipuler le nettoyage: Supprimer les anciens fichiers de résultats pour éviter les conflits

Exécution de suites de tests multiples (Backend + Frontend)

Si votre projet exécute plusieurs suites de tests (par exemple, des tests backend et des tests frontend), nous vous recommandons vivement d'utiliser un script wrapper (par exemple, run-all-tests.sh) au lieu d'exécuter les commandes séquentiellement en utilisant des opérateurs tels que &&.

  • commande1 && commande2 empêche la deuxième suite de s'exécuter si la première échoue.
  • Certains modèles nettoient les junit-reports au début de chaque script, ce qui peut effacer les rapports produits précédemment.

Modèle recommandé

Créer un script d'encapsulation :

#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR"

# Nettoyer les rapports une fois
rm -rf "$PROJECT_ROOT/junit-reports"
mkdir -p "$PROJECT_ROOT/junit-reports"

./run-backend-tests.sh
./run-frontend-tests.shLangage du code : Bash (bash)

Mise à jour de .coderpad/settings.json :

"runCommand": "./run-all-tests.sh"Langage du code : JSON / JSON avec commentaires (json)

Cela permet de s'assurer que toutes les suites de tests s'exécutent et produisent les résultats combinés attendus.

Comportement correct en matière de nettoyage

Nettoyez le répertoire reports une fois au début, pas dans chaque script de test.

Evitez ceci dans les scripts de test:.

rm -rf junit-reportsLangage du code : Bash (bash)

Si le nettoyage s'effectue à l'intérieur de plusieurs scripts, une suite peut supprimer les rapports produits par une autre.

PATH Différences entre IDE et Auto-grader

Le PATH à l'intérieur du conteneur de l'auto-grader peut être différent de ce que vous voyez dans le terminal de l'IDE.

Si une commande fonctionne dans le terminal mais échoue lors de l'évaluation automatique :

  • Utilisez le chemin absolu de la commande. Exemple pour les projets Node.js :
/home/coderpad/.volta/bin/npm install
/home/coderpad/.volta/bin/npm testLangage du code : Bash (bash)

Cela garantit un comportement cohérent entre la prévisualisation, la synchronisation et la notation des candidats.

Les tests ignorés ne sont pas importés

La notation automatique ne peut importer que les cas de test qui apparaissent dans les rapports JUnit/XUnit/TAP.

Si un test est ignoré (par exemple, pytest.skip()) :

  • Il peut ne pas apparaître lorsque l'on clique sur Synchronisation à partir d'un projet
  • Il s'agit de ne pas inclure comme critère d'évaluation

Au lieu de sauter, il faut forcer une assertion défaillante :

affirmer Faux, "Le tableau X n'existe pas"Langage du code : PHP (php)

Cela garantit la visibilité pendant la configuration et la précision des importations.

Formats de rapports pris en charge

Votre commande de test doit générer des rapports de test au format TAP ou JUnit. La variable reports définit où les rapports de test sont écrits et dans quel format (TAP ou JUNIT).

Configuration des critères d'évaluation

Une fois que vous avez configuré votre fichier settings.json, vous pouvez personnaliser la façon dont les tests automatisés affectent vos rapports grâce à la section Critères d'évaluation de l'éditeur de questions.

Dans la section Automatique, cliquez sur Synchroniser à partir du projet pour importer les cas de test de votre projet. Le système démarre un nouvel environnement, exécute votre runCommand, analyse les rapports générés et affiche les cas de test individuels pour la configuration.

Pour chaque test importé, vous pouvez personnaliser :

  • Label:
    • Fournit une description lisible par l'homme, affichée dans les rapports.
    • Aide les examinateurs à comprendre ce que chaque test valide
  • Compétence:
    • regroupe les points dans des catégories de compétences spécifiques (par exemple, résolution de problèmes, fiabilité)
    • Chaque critère d'évaluation apporte des points à la compétence qui lui est attribuée
  • Points:
    • Ajuster le poids de 0 à 5 pour attribuer plus ou moins de points à chaque test
    • Pondération plus élevée = plus de points attribués
    • Le total des points de la question est réparti proportionnellement entre tous les critères en fonction de leur pondération.

Classement manuel

Vous pouvez compléter les tests automatisés par des critères manuels pour les signaux qualitatifs (par exemple, la structure du code, la lisibilité, la qualité des tests, la sécurité).

Si des critères manuels sont définis, lorsque les candidats terminent leur test, vous recevrez un courrier électronique vous permettant de noter manuellement leur travail en fonction de ces critères.

Chaque projet doit comporter au moins un critère d'évaluation (automatique ou manuel).

Visibilité du dossier

Vous pouvez masquer des fichiers/dossiers à l'aide du paramètre hiddenValidationFiles dans .coderpad/settings.json.

Exemple :

{
  "autograding" (négociation automatique): {
    " hiddenValidationFiles ": ["docs/**"]
  }
}Langage du code : JSON / JSON avec commentaires (json)

ℹ️ hiddenValidationFiles utilise des modèles globaux, et non des noms de dossiers littéraux.

Ceci :

" hiddenValidationFiles ": ["docs"]Langage du code : JavaScript (javascript)

ne cache que le dossier lui-même, pas son contenu.

Pour masquer le dossier et tous les enfants, utilisez :

" hiddenValidationFiles ": ["docs/**"]Langage du code : JavaScript (javascript)

Ce modèle cache :

  • docs/
  • docs/file.md
  • docs/sous-dossier/...

Plus de documentation sur les modèles globaux : https://code.visualstudio.com/docs/editor/glob-patterns

Le masquage de fichiers fonctionne-t-il en mode prévisualisation ?

Oui - L'aperçu reflète la visibilité du candidat.

Si des fichiers cachés apparaissent toujours :

  • Confirmez que vous avez utilisé /**
  • Enregistrez le projet et cliquez sur Mise à jour du projet
  • Retirer puis réintroduire la question dans le test (pour actualiser la structure mise en cache)
  • Assurez-vous que le chemin d'accès correspond à la racine de l'espace de travail

Autres exemples

{
  "files.exclude": [
    ".env",            // cacher un seul fichier
    "docs/**",         // cacher tout le dossier
    "scripts/*.sh",    // cacher les fichiers correspondants
    "**/*.spec.js"     // cacher tous les fichiers de test n'importe où
  ]
}Langage du code : JSON / JSON avec commentaires (json)

Synchronisation à partir d'un projet

Lorsque vous cliquez sur Synchroniser à partir du projet, CoderPad :

  • Création d'un nouvel environnement
  • Exécutez votre commande d'exécution
  • Analyse les rapports de test générés
  • Affiche les cas de test qui apparaissent dans ces rapports

Cependant, Sync from project does not:

  • Vérifiez que votre commande fonctionne pour toutes les soumissions de candidats.
  • Garantir un comportement correct du PATH ou de l'environnement
  • S'assurer que les suites de tests sont exécutées dans le bon ordre
  • Validez l'exactitude de votre notation
  • Détecter les problèmes de nettoyage ou les incohérences de globes

En d'autres termes, Sync vérifie la disponibilité des rapports, et non leur correction complète.

Tester votre question sans utiliser de quota (mode aperçu)

Avant d'attribuer un projet à des candidats :

  1. Ouvrez la question du projet.
  2. Cliquez sur Avant-première.
  3. Appliquez la solution ou la solution partielle que vous avez envisagée.
  4. Soumettre l'aperçu.
  5. Examiner :
    • Points attribués
    • Analyse des fichiers JUnit/TAP
    • Rendu des rapports
    • Comportement attendu en cas de réussite ou d'échec

<Les soumissions en avant-première ne consomment pas de quota et constituent la méthode recommandée pour valider les projets de bout en bout.

Reclassement

Actuellement, il n'est pas possible de relancer automatiquement l'auto-évaluation pour les soumissions qui ont été complétées avant la mise à jour d'un projet.

Si des problèmes de configuration ont été résolus après la soumission des candidats :

Vous pouvez :

  • Ajuster la notation manuellement à l'aide de la touche “Corriger une question mal notée”Fonctionnalité
  • Mettre à jour le projet pour les futurs candidats