Ejemplo n.º 1
0
        private async Task <List <StyleError> > ConvertStyleErrors(SolutionBuildResult buildResult)
        {
            var styleErrors = new List <StyleError>();

            foreach (var error in buildResult.StyleErrors)
            {
                if (!await styleErrorsRepo.IsStyleErrorEnabled(error.ErrorType))
                {
                    continue;
                }
                styleErrors.Add(new StyleError
                {
                    ErrorType = Enum.GetName(typeof(StyleErrorType), error.ErrorType),
                    Message   = error.Message,
                    Span      = new StyleErrorSpan
                    {
                        StartLinePosition = new StyleErrorSpanPosition {
                            Line = error.Span.StartLinePosition.Line, Character = error.Span.StartLinePosition.Character
                        },
                        EndLinePosition = new StyleErrorSpanPosition {
                            Line = error.Span.EndLinePosition.Line, Character = error.Span.EndLinePosition.Character
                        }
                    }
                });
            }
            return(styleErrors);
        }
Ejemplo n.º 2
0
        private void FailOnError(ExerciseSlide slide, SolutionBuildResult solution, string ethalonSolution)
        {
            ReportSlideError(slide, $@"ETHALON SOLUTION:
{ethalonSolution}
SOURCE CODE: 
{solution.SourceCode}
ERROR:
{solution.ErrorMessage}");
        }
Ejemplo n.º 3
0
        public static SolutionBuildResult ValidateSingleFileSolution(this ISolutionValidator validator, string userWrittenCode, string fullCodeFile)
        {
            string message;

            if ((message = validator.FindFullSourceError(userWrittenCode)) != null)
            {
                return(SolutionBuildResult.Error(message, fullCodeFile));
            }
            return(validator.ValidateSolution(userWrittenCode, fullCodeFile));
        }
Ejemplo n.º 4
0
        public static SolutionBuildResult ValidateSolution(this ISolutionValidator validator, string userWrittenCode, string fullCodeFile)
        {
            string message;

            if ((message = validator.FindSyntaxError(fullCodeFile)) != null)
            {
                return(SolutionBuildResult.Error(message, fullCodeFile));
            }
            if ((message = validator.FindValidatorError(userWrittenCode, fullCodeFile)) != null)
            {
                return(SolutionBuildResult.StyleIssue(message, fullCodeFile));
            }
            return(SolutionBuildResult.Success(fullCodeFile));
        }
Ejemplo n.º 5
0
 private static async Task <int> CreateInitialSubmission(string courseId, ExerciseSlide exerciseSlide, string userCode, Language language,
                                                         string userId, string userName, bool hasAutomaticChecking, SolutionBuildResult buildResult, IServiceScopeFactory serviceScopeFactory)
 {
     using (var scope = serviceScopeFactory.CreateScope())
     {
         var userSolutionsRepo       = (IUserSolutionsRepo)scope.ServiceProvider.GetService(typeof(IUserSolutionsRepo));
         var compilationErrorMessage = buildResult.HasErrors ? buildResult.ErrorMessage : null;
         var submissionSandbox       = (exerciseSlide.Exercise as UniversalExerciseBlock)?.DockerImageName;
         var automaticCheckingStatus = hasAutomaticChecking
                                 ? buildResult.HasErrors
                                         ? AutomaticExerciseCheckingStatus.Done
                                         : AutomaticExerciseCheckingStatus.Waiting
                                 : (AutomaticExerciseCheckingStatus?)null;
         return(await userSolutionsRepo.AddUserExerciseSubmission(
                    courseId,
                    exerciseSlide.Id,
                    userCode,
                    compilationErrorMessage,
                    null,
                    userId,
                    "uLearn",
                    GenerateSubmissionName(exerciseSlide, userName),
                    language,
                    submissionSandbox,
                    hasAutomaticChecking,
                    automaticCheckingStatus
                    ));
     }
 }