Kompileerimisviga on viga arvutikeele masinkoodifaili koostamisel. Paljud arvutikeeled kompileerivad oma lähtekoodi enne programmide koostamist või käivitamist masinkoodifailideks. Kõige tavalisem kompileerimisvea tüüp on põhiline süntaksiviga; üks väike viga võib koodiga palju probleeme tekitada.
Levinumad objektorienteeritud programmeerimiskeeled C++ ja Java® kasutavad mingil kujul kompileerimist. See erineb oluliselt tõlgendatud keeltest, mis kasutavad programmi käivitamiseks käitusajal lähtekoodi. Keel ei pea olema oma olemuselt objektorienteeritud, et olla kompileeritav; Näiteks C++ saab struktureerida objektorienteeritud või protseduurilise programmeerimise abil.
Kompileerimisvigade kõige levinum põhjus on süntaksiviga. Süntaksivead on toorlähtekoodi kujul esinevad vead, mis on tavaliselt põhjustatud mõnest arvutikeele põhimõtete rikkumisest. Need vead võivad olla nii lihtsad kui semikooloni unustamine koodirea lõpus või nii keerulised kui massiivi vale lähtestamine. Tavaliselt ei ole nende vigade leidmine ja diagnoosimine eriti keeruline; enamik kompilaatoreid näitavad vigu nende ilmnemisel ega luba masinkoodi moodustada enne, kui vead on parandatud. Erinevad keeled kasutavad aga erinevaid kompilaatoreid, mistõttu on võimalik, et ühes keeles võib esineda teatud tüüpi kompileerimisvigu, teises aga mitte.
Sõltuvalt kasutatavast keelest ja kompilaatorist võib üks kompileerimisviga kuvada sama palju vigu. Näiteks võib semikooloni unustamine rea lõpus, kui keel seda nõuab, põhjustada sõelumisvigu, kuna kompilaator ei tea, millal konkreetne rida peaks lõppema. See sõelumisviga võib ilmneda paljude kompileerimisvigadena, mistõttu tundub, et ühe väikese kirjavea asemel on koodiga äkki kohutavad probleemid. Üldiselt võib arvutikeele reeglite hoolikas järgimine seda tüüpi vigu vältida. Samamoodi võib kogenud programmeerija järeldada, et enamiku neist põhjustas üks väike viga, kui ilmnevad ootamatud kompileerimisvead.
Algajate programmeerijate levinud eksiarvamus on, et kompileerimisviga ajab arvuti kokku ja see pole kunagi nii. Kompileerimisvead piirduvad kompilaatoritega ja masinkoodi loomine põhjustab harva probleeme terves arvutisüsteemis. Ükski programm ei ole lollikindel, ka kompilaator, kuid võimalus tekitada probleeme terve arvutiga pelgalt koodi kompileerimise või kompileerimisvea ilmnemise tõttu on äärmiselt väike. Kui kõik kompileerimisvead on parandatud, on tõenäoline, et programm töötab tõrgeteta, nagu see oli ette nähtud.