internal CaDETToDataSetBuilder(string projectAndCommitUrl, string projectPath, LanguageEnum language, bool includeClasses, bool includeMembers) { _projectAndCommitUrl = projectAndCommitUrl; _cadetProject = new CodeModelFactory(language).CreateProjectWithCodeFileLinks(projectPath); _includeClasses = includeClasses; _includeMembers = includeMembers; }
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); }
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)); }
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)); }
private static List <DataSetInstance> FillInstancesWithMetrics(List <DataSetInstance> annotatedInstances, CaDETProject project) { return(annotatedInstances.Select(i => { i.MetricFeatures = project.GetMetricsForCodeSnippet(i.CodeSnippetId); return i; }).ToList()); }