public static StudentsAnswers OfDirPath(string dirPath, InputOutput[] inputOutputPath, LogFile logFile)
        {
            logFile.WriteLine("Checking " + dirPath);
            logFile.IncorporateTab();
            try
            {
                var cFilePath = GetcFile(dirPath, logFile);
                if (cFilePath != null)
                {
                    var ids            = ExtractIds(cFilePath, logFile);
                    var exeFile        = CompilingOperation.Compile(cFilePath, logFile);
                    var runningResults = CheckingOperation.RunTests(exeFile, inputOutputPath);
                    logFile.WriteLine("Ended checking");
                    var didCompile = (exeFile != null).AsString();

                    return(new StudentsAnswers(cFilePath, didCompile, ids, runningResults));
                }

                return(null);
            }
            finally
            {
                logFile.UncorporateTab();
            }
        }
        private void RunButton_OnClick(object sender, RoutedEventArgs e)
        {
            using (var logFile = LogFile.CreateAt(DesktopPath))
            {
                logFile.WriteLine("Automatic Hw Checker, " + DateTime.Now.ToLongDateString());


                logFile.WriteLine();

                logFile.WriteLine("Input-Output Files:");
                logFile.IncorporateTab();
                logFile.WriteLine("Directory: " + InputOutputDirectoryPath);
                var inputOutputPairs = InputOutput.ParseOfDirectory(InputOutputDirectoryPath);
                inputOutputPairs.Select(x => x.AsString()).ForEach(logFile.WriteLine);
                logFile.UncorporateTab();

                logFile.WriteLine();

                RenameToEnglish(HomeworkSolutionsDirectoryPath);

                logFile.WriteLine("Checking Files:");
                logFile.IncorporateTab();
                var studentsResults = CheckingOperation.CheckHw(HomeworkSolutionsDirectoryPath, inputOutputPairs, logFile);
                logFile.UncorporateTab();


                logFile.WriteLine("Publishing CSV result at: " + CsvResultPath);
                File.WriteAllLines(CsvResultPath, StudentsAnswers.ToCsvLines(studentsResults, inputOutputPairs));
                Process.Start(CsvResultPath);


                var cFilesDir = Path.Combine(DesktopPath, "cFiles");
                Directory.CreateDirectory(cFilesDir);
                var rnd = new Random();
                studentsResults.Where(r => r.cFilePath != null)
                .Select(r => r.cFilePath).ForEach(sourcePath =>
                {
                    var resultPath = Path.Combine(cFilesDir, Path.GetFileNameWithoutExtension(sourcePath) + "_" + rnd.Next() + ".c");
                    File.Copy(sourcePath, resultPath);
                });


                logFile.WriteLine();
                logFile.WriteLine("Finished Successfully");
            }
        }