Esempio n. 1
0
        public IEnumerable <IFilter> LearnJava(string fileName)
        {
            var profile  = LanguageSupports.GetCoverageModeByClassName("Java");
            var inPath   = Path.Combine(Fixture.GetCoverageInputPath(), fileName);
            var codeFile = new FileInfo(inPath);
            var ast      = profile.CodeToXml.GenerateFromFile(codeFile.FullName);
            var accepted = profile.AstAnalyzer.FindStatements(ast).ToList();
            var rules    = RuleLearner.Learn(new[] { new LearningRecord(ast, accepted) });

            return(rules);
        }
Esempio n. 2
0
        public void LearnC(string fileName)
        {
            var profile    = LanguageSupports.GetCoverageModeByClassName("C");
            var inPath     = Path.Combine(Fixture.GetCoverageInputPath(), fileName);
            var codeFile   = new FileInfo(inPath);
            var ast        = profile.CodeToXml.GenerateFromFile(codeFile.FullName);
            var statements = profile.AstAnalyzer.FindStatements(ast).ToList();

            RuleLearner.Learn(new[] { new LearningRecord(ast, statements) });
            //var statements2 = rule.Find(ast).ToList();
            //Assert.That(statements2.Count, Is.EqualTo(statements.Count));
            //Assert.That(statements2, Is.SubsetOf(statements));
        }
Esempio n. 3
0
        private void btnInfer_Click(object sender, EventArgs e)
        {
            NormalizeAllRange2Element(); // To infer good rules
            var learningRecrods = FreezedFiles
                                  .Concat(Enumerable.Repeat(_activeFile, 1))
                                  .Select(f => new LearningRecord(f.Ast, f.Range2Elements.Values))
                                  .ToList();
            var filters            = RuleLearner.Learn(learningRecrods).ToList();
            var newModifiableItems = new List <RuleListViewItem>();

            _eventEnabled = false;
            foreach (var filter in filters)
            {
                var freezedRuleItem = lvFreezedRule.Items.Cast <RuleListViewItem>()
                                      .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
                if (freezedRuleItem != null)
                {
                    freezedRuleItem.Update(Files);
                    continue;
                }

                var modifiableRuleItem = lvModifiableRule.Items.Cast <RuleListViewItem>()
                                         .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
                if (modifiableRuleItem != null)
                {
                    modifiableRuleItem.Update(Files);
                    newModifiableItems.Add(modifiableRuleItem);
                    continue;
                }

                var item = new RuleListViewItem(filter, Files);
                if (filter is NopFilter)
                {
                    item.Checked = true; //TODO: should use "filter is NopFilter;" ?
                }
                newModifiableItems.Add(item);
            }
            lvModifiableRule.Items.Clear();
            var sortedModifiableItems = newModifiableItems
                                        .OrderByDescending(i => i.ExactMatch)
                                        .ThenByDescending(i => i.Filter.LivingTime);

            foreach (var item in sortedModifiableItems)
            {
                lvModifiableRule.Items.Add(item);
            }
            _eventEnabled = true;
            lvRule_ItemChecked(null, null);
        }