CodeTest pro Visual Studio Code

Oficiální rozšíření pro výukový programovací portál CodeTest.
Řešte semestrální práce a školní úlohy v jazyce C, testujte kód v serverovém Sandboxu s GCC a AddressSanitizerem a odevzdávejte řešení přímo z Visual Studio Code bez nutnosti neustále přepínat do prohlížeče.
Hlavní funkce • 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ů.
- 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.
📖 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í.
⚡ Vytvoření C šablony jedním kliknutím
- Tlačítko Vytvořit soubor pro řešení vygeneruje soubor
solution_<id>_<nazev>.c s předvyplněnou hlavičkou úlohy, autorstvím a základní kostrou programu v jazyce C.
- 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 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.
- Kompilace GCC: Přísné přepínače
-g -pedantic -Wall -Wextra -Werror a zapnutý -fsanitize=address pro okamžité odhalení práce s neplatnou pamětí, memory leaků a přetečení bufferů.
- 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 předmětů a přiřazených úloh.
- Kliknutím na úlohu nebo ikonu informací
$(info) otevřete zadání úlohy.
- Kliknutím na ikonu
$(file-code) vytvořte soubor šablony v jazyce 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ů.
⌨️ 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í C kód na serveru |
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 C soubor se šablonou pro danou úlohu |
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
| |