CodeTest pro Visual Studio Code

Oficiální rozšíření pro platformu CodeTest – výuková platforma pro programování s okamžitou zpětnou vazbou.
Řešte semestrální práce a školní úlohy v jazycích C, C++, Python a C#, testujte kód v serverovém Sandboxu v izolovaných Docker kontejnerech, získávejte herní Bity a odevzdávejte řešení přímo z Visual Studio Code bez nutnosti neustále přepínat do prohlížeče. Úlohy v Barevný blocích (Blockly) můžete přímo otevřít v příslušném webovém editoru.
Hlavní funkce • Herní systém a Bity • Filtrování a organizace • Rychlý start • Testování v Sandboxu • Příkazy • Nastavení
✨ Hlavní funkce
📋 Postranní panel CodeTest v Activity Baru
- Přehled zadaných úloh: Automaticky synchronizovaný seznam přiřazených úloh rozčleněný podle předmětů nebo jako plochý seznam.
- Důležité informace na očích: Termíny odevzdání, odpočet zbývajícího času u časově omezených úloh a počet povolených odevzdání.
- Rychlý stav řešení: Zelený, oranžový nebo červený indikátor úspěšnosti vašeho posledního odevzdaného pokusu.
🔍 Filtrování a organizace úloh
- Chytré filtry: Možnost filtrovat úlohy podle stavu (všechny, aktivní k řešení, splněné, po termínu, zamčené) nebo fulltextově vyhledávat podle názvu.
- Přepínání seskupení: Snadné přepínání mezi seskupením podle předmětů a plochým seznamem seřazeným dle termínu odevzdání (
$(list-tree)).
- Zrušení filtru jedním klikem: Indikace aktivního filtru a tlačítko pro jeho okamžité vyčištění (
$(clear-all)).
🎮 Herní systém a Bity
- Odměny za odevzdání: Získávání herních Bitů za úspěšné vyřešení úloh a bonus za vyřešení na první pokus.
- Herní peněženka: Zobrazení aktuálního zůstatku a historie transakcí přímo ve VS Code (
$(zap)).
- Herní výhody (Perky): Možnost pořídit si za nasbírané Bity užitečné výhody přímo v detailu zadání:
- Odemčení postupných nápověd k úloze (Hints).
- Prodloužení termínu odevzdání (+24 hodin).
- Navýšení limitu pokusů (+3 odevzdání).
- Prodloužení časového limitu úlohy (+15 minut).
- Odhalení detailů skrytého testu v případě neúspěchu.
- Respektování nastavení úlohy: Pokud vyučující u úlohy gamifikaci nepovolil, herní prvky a odznaky se automaticky skryjí.
📖 Detail zadání a historie řešení přímo v editoru
- Formátované zadání úlohy, specifikace a limity se otevírají přímo v přehledném panelu editoru.
- Seznam všech vašich předchozích odevzdání včetně stavu a data nahrání.
- Možnost rozkliknout detail výsledků kteréhokoliv odevzdaného řešení a zobrazit fáze testování.
- Tlačítko pro rychlé otevření konkrétní úlohy na webovém portálu.
⚡ Vytvoření šablony pro řešení jedním kliknutím
- Tlačítko Vytvořit soubor pro řešení vygeneruje soubor šablony v cílovém jazyce úlohy (
.c, .cpp, .py nebo .cs) s předvyplněnou hlavičkou, autorstvím a základní kostrou programu.
- Bezpečná kontrola – pokud soubor již existuje, rozšíření vás upozorní a nabídne otevření existujícího souboru namísto jeho nechtěného přepsání.
🧪 Rychlé testování v multijazyčném Sandboxu (s podporou STDIN)
- Tlačítko
$(play) v pravém horním rohu editoru odešle aktivní kód do izolovaného serverového kontejneru CodeTestu.
- Multijazyčná podpora: Automaticky detekuje programovací jazyk podle přípony souboru:
- C: GCC 12 s přepínači
-g -pedantic -Wall -Wextra -Werror a AddressSanitizerem (-fsanitize=address).
- C++: G++ 12 s podporou standardu C++20.
- Python: Python 3.11 s kontrolou syntaxe a izolovaným tokom stdout/stderr.
- C#: .NET 8 SDK a CLI běh v kontejneru.
- Interaktivní zadání standardního vstupu (STDIN):
- Před spuštěním se zobrazí dialog pro zadání testovacích dat (pro spuštění bez vstupu stačí stisknout
Enter).
- Podpora více řádků (pomocí
\n nebo přímého vložení víceřádkového textu).
- Automatické načtení z
input.txt: Pokud máte vedle zdrojového kódu připravený soubor input.txt nebo in.txt, v záhlaví dialogu se zobrazí tlačítko $(file-text) pro jeho okamžité načtení.
- Možnost načíst libovolný soubor z disku (
$(folder-opened)) nebo vložit označený text z editoru ($(selection)).
- Možnost otevřít dočasný textový editor (
$(edit)) vedle kódu pro pohodlné úpravy rozsáhlých matic či víceřádkových testovacích vstupů.
- Paměť posledního vstupu pro rychlé opakované spouštění při ladění.
- Detailní výstup v reálném čase: Panel Výstup (
CodeTest Sandbox) zobrazí výsledek kompilace, předaný vstup a skutečný výstup na stdout/stderr spolu s návratovým kódem programu.
🚀 Přímé odevzdání řešení
- Tlačítko
$(cloud-upload) odevzdá aktivní soubor na server k oficiálnímu automatickému vyhodnocení.
- Průběžný indikátor stavu a zobrazení výsledků jednotlivých testovacích fází (kompilace, referenční testy, I/O testy, unit asserty).
- V případě neúspěchu panel zobrazí přesný rozdíl výstupu (diff mezi očekávaným a skutečným výstupem programu), chybový výstup a návratový kód.
🔒 Bezpečné ukládání přihlašovacích údajů
- Možnost přihlášení uživatelským jménem a heslem (automaticky vygeneruje a pojmenuje Personal Access Token) nebo přímo stávajícím tokenem (
ct_...).
- Tokeny jsou bezpečně uloženy v systémové klíčence operačního systému (macOS Keychain, Windows Credential Manager, Linux Secret Service) přes oficiální rozhraní
vscode.SecretStorage.
🌐 Přepínání prostředí (Produkce / Localhost)
- Výchozím cílem je produkční server
codetest.cz. Vývojáři a správci mohou jedním kliknutím přepnout na lokální instanci (localhost:8080).
🚀 Rychlý start
- Instalace:
- Vyhledejte
CodeTest v záložce Rozšíření (Ctrl+Shift+X / Cmd+Shift+X) a klikněte na Install.
- Přihlášení k účtu:
- Otevřete panel CodeTest v levé postranní liště (Activity Bar).
- V sekci Účet a stav klikněte na Přihlásit se.
- Zadejte své přihlašovací jméno/e-mail a heslo k portálu CodeTest (nebo zadejte API token).
- Výběr úlohy a vytvoření souboru:
- V sekci Zadané úlohy k řešení uvidíte strom úloh (lze přepnout na plochý seznam nebo filtrovat).
- Kliknutím na úlohu nebo ikonu informací
$(info) otevřete zadání úlohy.
- Kliknutím na ikonu
$(file-code) vytvořte soubor šablony v příslušném jazyce úlohy (C, C++, Python nebo C#).
- Testování v Sandboxu:
- Napište své řešení v editoru.
- V pravém horním rohu editoru klikněte na tlačítko
$(play) Otestovat v Sandboxu.
- Zadejte testovací STDIN nebo stiskněte
Enter pro běh bez vstupu.
- V panelu Výstup (
CodeTest Sandbox) zkontrolujte průběh kompilace a výstup programu.
- Odevzdání řešení:
- Jakmile kód funguje, klikněte na tlačítko
$(cloud-upload) Odevzdat řešení.
- Potvrďte odeslání a sledujte průběh automatických testů a případný zisk herních Bitů.
⌨️ Přehled příkazů (Command Palette)
Všechny příkazy lze vyvolat přes Paletu příkazů (Ctrl+Shift+P na Windows/Linux, Cmd+Shift+P na macOS) zadáním prefixu CodeTest::
| Příkaz |
Umístění |
Popis |
CodeTest: Otestovat v Sandboxu |
Editor záhlaví $(play), Menu |
Zkompiluje a spustí aktivní kód (C, C++, Python, C#) v Sandboxu |
CodeTest: Otestovat v Sandboxu se zadáním STDIN... |
Kontextové menu, Status Bar |
Spustí test v Sandboxu s interaktivním zadáním STDIN |
CodeTest: Odevzdat aktivní soubor jako řešení |
Editor záhlaví $(cloud-upload) |
Odevzdá aktuální soubor na server k vyhodnocení |
CodeTest: Zobrazit zadání úlohy |
Strom úloh, Kontextové menu |
Otevře interaktivní panel se zadáním úlohy |
CodeTest: Vytvořit soubor pro řešení úlohy |
Strom úloh, Panel zadání |
Vygeneruje soubor se šablonou pro danou úlohu (C, C++, Python, C#) |
CodeTest: Herní peněženka & Bity |
Panel účtu $(zap), Status Bar |
Zobrazí stav herní peněženky, zůstatek a historii transakcí |
CodeTest: Filtrovat úlohy... |
Strom úloh $(filter) |
Filtrování úloh podle stavu nebo klíčového slova |
CodeTest: Zrušit filtr úloh |
Strom úloh $(clear-all) |
Vymaže aktivní filtr zadaných úloh |
CodeTest: Přepnout seskupení úloh |
Strom úloh $(list-tree) |
Přepne mezi seskupením dle předmětů a plochým seznamem |
CodeTest: Otevřít úlohu na webu |
Strom úloh, Kontextové menu |
Otevře vybranou úlohu přímo v prohlížeči |
CodeTest: Zobrazit výsledky testů řešení |
Detail řešení |
Zobrazí detailní výsledky a výstupy testovacích fází |
CodeTest: Přihlásit se jménem a heslem |
Panel účtu, Status Bar |
Přihlášení do portálu a uložení tokenu |
CodeTest: Přihlásit se pomocí API tokenu |
Panel účtu, Status Bar |
Přihlášení stávajícím Personal Access Tokenem |
CodeTest: Odhlásit se |
Panel účtu, Status Bar |
Odhlášení a bezpečné odstranění tokenu z klíčenky |
CodeTest: Přepnout server (Localhost / Produkce) |
Panel účtu, Status Bar |
Přepnutí mezi produkcí a lokálním serverem |
CodeTest: Obnovit data |
Panel účtu, Strom úloh |
Znovu načte zadané úlohy ze serveru |
CodeTest: Otevřít portál v prohlížeči |
Status Bar, Menu |
Otevře webové rozhraní CodeTestu v prohlížeči |
⚙️ Nastavení (Settings)
Rozšíření lze přizpůsobit v nastavení VS Code (Ctrl+, / Cmd+, → do vyhledávání zadejte codetest):
codetest.apiUrl (výchozí: https://codetest.cz/)
Základní URL adresa serveru CodeTest API. Pro lokální vývoj lze přepnout na http://localhost:8080/.
codetest.webUrl (volitelné)
Vlastní URL adresa webového rozhraní (pokud je prázdné, použije se odpovídající adresa dle apiUrl).
codetest.autoRefreshMinutes (výchozí: 5)
Interval v minutách pro automatické obnovení seznamu zadaných úloh na pozadí (hodnota 0 automatické obnovení vypne).
codetest.sandboxPromptStdin (výchozí: true)
Zda se má při každém spuštění v Sandboxu zobrazit dialog pro zadání standardního vstupu (STDIN). Při nastavení na false se kód spouští ihned bez dotazu.
💡 Užitečné tipy
[!TIP]
Rychlé načtení testovacího vstupu z input.txt
Vytvořte si ve stejné složce jako zdrojový kód soubor input.txt. Při spuštění Sandboxu rozšíření tento soubor automaticky rozpozná a nabídne tlačítko $(file-text) pro jeho načtení jedním kliknutím.
[!TIP]
Detekce chyb paměti pomocí AddressSanitizeru (ASan)
Serverový Sandbox kompiluje kód s volbou -fsanitize=address. Pokud váš program sahá mimo alokované pole, uvolňuje paměť dvakrát nebo čte z neplatného ukazatele, Sandbox okamžitě vypíše přesnou lokalizaci chyby v kódu.
📞 Podpora a zpětná vazba
| |