public void avaliarCodigoFonte() {
        try {
            //Compilação do código-fonte
            String nameCommand = "gcc " + nameTestFile + ".c" + " -lcunit -o " + nameTestFile;
            Process process = Runtime.getRuntime().exec(nameCommand);

            BufferedReader entrada = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String resultado = "";
            String linha = null;
            while ((linha = entrada.readLine()) != null) {
                resultado += linha;
            }
            entrada.close();

            if (!resultado.equals("")) {
                javax.swing.JOptionPane.showMessageDialog(null, "Tem erro de compilação");
                hasCompileErrors = true;
                if (countAttempts < 3) {
                    exerciseMark -= 0.5;
                    countAttempts += 1;
                } else {
                    endOfAttempts = true;
                }
            } else {
                assertProgram();
                javax.swing.JOptionPane.showMessageDialog(null, "Nota testes de unidade : " + testMark);
                if (testMark == 0) {
                    exerciseMark = 0;
                } else {
                    //calculoDasMetricasEComparacaoComAsDaRespostaModelo();
                    calcExerciseMark();
                }
                javax.swing.JOptionPane.showMessageDialog(null, "Nota Exercício : " + exerciseMark);
                javax.swing.JOptionPane.showMessageDialog(null, "Exercicio enviado com sucesso. Vamos fazer o próximo exercicio");
                hasCompileErrors = false;

            }

            testFile.delete(); 
            metricsFile.delete();
            modelResponseFile.delete();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }