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.
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
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.
Ce qui est disponible dans l'IDE
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 webopenByDefault: Détermine si l'aperçu s'ouvre automatiquement au démarrage du projetport: Spécifie le port sur lequel la prévisualisation sera mappéenom: 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.
Les informations d'identification de la connexion sont fournies par des variables d'environnement. Par exemple :
nom d'utilisateur : process.env.POSTGRES_LOGINmot de passe : process.env.POSTGRES_PASSWORDhost : '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
- Sauvez tous les fichiers dans VS Code (Ctrl/Cmd + S)
- Cliquez sur Mise à jour du projet en bas de l'écran
- Fermer l'IDE
- 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 && commande2empêche la deuxième suite de s'exécuter si la première échoue.- Certains modèles nettoient les
junit-reportsau 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)
ℹ️
utilise des modèles globaux, et non des noms de dossiers littéraux.hiddenValidationFiles
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.mddocs/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 :
- Ouvrez la question du projet.
- Cliquez sur Avant-première.
- Appliquez la solution ou la solution partielle que vous avez envisagée.
- Soumettre l'aperçu.
- 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



![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](https://coderpad.io/wp-content/uploads/2025/09/image-6-1024x486.png)
