internal CaDETToDataSetBuilder(string projectAndCommitUrl, string projectPath, LanguageEnum language, bool includeClasses, bool includeMembers)
 {
     _projectAndCommitUrl = projectAndCommitUrl;
     _cadetProject        = new CodeModelFactory(language).CreateProjectWithCodeFileLinks(projectPath);
     _includeClasses      = includeClasses;
     _includeMembers      = includeMembers;
 }
示例#2
0
        private ChallengeEvaluation StrategyEvaluation(CaDETProject solution)
        {
            var evaluation = new ChallengeEvaluation(Id);

            foreach (var strategy in FulfillmentStrategies)
            {
                var result = strategy.EvaluateSubmission(solution.Classes);
                evaluation.ApplicableHints.MergeHints(result);
            }

            if (evaluation.ApplicableHints.IsEmpty())
            {
                evaluation.ChallengeCompleted = true;
                evaluation.ApplicableHints.AddAllHints(GetAllChallengeHints());
            }

            return(evaluation);
        }
示例#3
0
        public ChallengeEvaluation CheckChallengeFulfillment(string[] solutionAttempt, IFunctionalityTester tester)
        {
            CaDETProject solution = BuildCaDETModel(solutionAttempt);

            var errorEvaluation = CheckSyntaxErrors(solution.SyntaxErrors);

            if (errorEvaluation != null)
            {
                return(errorEvaluation);
            }

            if (tester == null)
            {
                return(StrategyEvaluation(solution));
            }

            var functionalEvaluation = tester.IsFunctionallyCorrect(solutionAttempt, TestSuiteLocation);

            return(functionalEvaluation ?? StrategyEvaluation(solution));
        }
示例#4
0
        private static IEnumerable <IGrouping <string, DataSetInstance> > GetAnnotatedInstancesGroupedBySmells(int?annotatorId)
        {
            var allAnnotatedInstances = new List <DataSetInstance>();

            var projects = GetAnnotatedProjects();

            foreach (var key in projects.Keys)
            {
                CodeModelFactory factory = new CodeModelFactory();
                CaDETProject     project = factory.CreateProjectWithCodeFileLinks(key.ToString());

                var annotatedInstances = LoadDataSet(projects[key].ToString()).GetAllInstances();
                LoadAnnotators(ref annotatedInstances);
                if (annotatorId != null)
                {
                    annotatedInstances = annotatedInstances.Where(i => i.IsAnnotatedBy((int)annotatorId)).ToList();
                }
                allAnnotatedInstances.AddRange(FillInstancesWithMetrics(annotatedInstances, project));
            }
            return(allAnnotatedInstances.GroupBy(i => i.Annotations.ToList()[0].InstanceSmell.Value));
        }
示例#5
0
 private static List <DataSetInstance> FillInstancesWithMetrics(List <DataSetInstance> annotatedInstances, CaDETProject project)
 {
     return(annotatedInstances.Select(i => {
         i.MetricFeatures = project.GetMetricsForCodeSnippet(i.CodeSnippetId);
         return i;
     }).ToList());
 }