Example #1
0
        private HintDirectory EvaluateNames(Dictionary <string, List <string> > namesUsedInCodeSnippet)
        {
            var hints = new HintDirectory();

            hints.MergeHints(EvaluateBannedWords(namesUsedInCodeSnippet));
            hints.MergeHints(EvaluateRequiredWords(namesUsedInCodeSnippet));
            return(hints);
        }
Example #2
0
        private HintDirectory GetApplicableHintsForIncompleteMethods(List <CaDETClass> solutionAttempt)
        {
            var challengeHints = new HintDirectory();

            foreach (var caDETMethod in GetMethodsFromClasses(solutionAttempt))
            {
                foreach (var metricRule in MethodMetricRules)
                {
                    var result = metricRule.Evaluate(caDETMethod.Metrics);
                    if (result == null)
                    {
                        continue;
                    }
                    challengeHints.AddHint(caDETMethod.Signature(), result);
                }
            }
            return(challengeHints);
        }
Example #3
0
        private HintDirectory GetApplicableHintsForIncompleteClasses(List <CaDETClass> solutionAttempt)
        {
            var challengeHints = new HintDirectory();

            foreach (var caDETClass in solutionAttempt)
            {
                foreach (var metricRule in ClassMetricRules)
                {
                    var result = metricRule.Evaluate(caDETClass.Metrics);
                    if (result == null)
                    {
                        continue;
                    }
                    challengeHints.AddHint(caDETClass.FullName, result);
                }
            }
            return(challengeHints);
        }
Example #4
0
        private HintDirectory EvaluateBannedWords(Dictionary <string, List <string> > namesUsedInCodeSnippet)
        {
            if (BannedWords == null || BannedWords.Count == 0)
            {
                return(null);
            }

            var hints = new HintDirectory();

            foreach (var codeSnippetId in namesUsedInCodeSnippet.Keys)
            {
                if (ContainsBannedName(namesUsedInCodeSnippet[codeSnippetId]))
                {
                    hints.AddHint(codeSnippetId, Hint);
                }
            }

            return(hints);
        }
Example #5
0
        private HintDirectory EvaluateRequiredWords(Dictionary <string, List <string> > namesUsedInCodeSnippet)
        {
            if (RequiredWords == null || RequiredWords.Count == 0)
            {
                return(null);
            }

            var allNames = namesUsedInCodeSnippet.Values.SelectMany(n => n);
            var allWords = allNames.SelectMany(GetWordsFromName).ToList();

            if (RequiredWords.All(req => allWords.Contains(req, StringComparer.OrdinalIgnoreCase)))
            {
                return(null);
            }

            var hints = new HintDirectory();

            hints.AddHint("ALL", Hint);
            return(hints);
        }