Beispiel #1
0
        protected override bool EvaluateCanExecute(object parameter)
        {
            if (_state.Status != ParserState.Ready)
            {
                return(false);
            }

            var activeSelection = SelectionService.ActiveSelection();

            if (!activeSelection.HasValue)
            {
                return(false);
            }

            var interfaceClass = _state.AllUserDeclarations.SingleOrDefault(item =>
                                                                            item.QualifiedName.QualifiedModuleName.Equals(activeSelection.Value.QualifiedName) &&
                                                                            ModuleTypes.Contains(item.DeclarationType));

            if (interfaceClass == null)
            {
                return(false);
            }

            // interface class must have members to be implementable
            var hasMembers = _state.AllUserDeclarations.Any(item =>
                                                            item.DeclarationType.HasFlag(DeclarationType.Member) &&
                                                            item.ParentDeclaration != null &&
                                                            item.ParentDeclaration.Equals(interfaceClass));

            if (!hasMembers)
            {
                return(false);
            }

            var parseTree = _state.GetParseTree(interfaceClass.QualifiedName.QualifiedModuleName);
            var context   = ((ParserRuleContext)parseTree).GetDescendents <VBAParser.ImplementsStmtContext>();

            // true if active code pane is for a class/document/form module
            return(!context.Any() &&
                   !_state.IsNewOrModified(interfaceClass.QualifiedModuleName) &&
                   !_state.IsNewOrModified(activeSelection.Value.QualifiedName));
        }
Beispiel #2
0
        private static string Parse(string code, string filename)
        {
            IVBComponent component;
            var          vbe = MockVbeBuilder.BuildFromSingleStandardModule(code, out component);

            var state  = new RubberduckParserState(vbe.Object);
            var parser = MockParser.Create(vbe.Object, state);

            parser.Parse(new CancellationTokenSource());
            if (parser.State.Status == ParserState.Error)
            {
                Assert.Inconclusive("Parser Error: " + filename);
            }

            var tree       = state.GetParseTree(component);
            var parsed     = tree.GetText();
            var withoutEOF = parsed.Substring(0, parsed.Length - 5);

            return(withoutEOF);
        }
Beispiel #3
0
        private string Parse(string code)
        {
            var         builder = new MockVbeBuilder();
            VBComponent component;
            var         vbe      = builder.BuildFromSingleStandardModule(code, out component);
            var         mockHost = new Mock <IHostApplication>();

            mockHost.SetupAllProperties();
            var state  = new RubberduckParserState();
            var parser = MockParser.Create(vbe.Object, state);

            parser.Parse();
            if (parser.State.Status == ParserState.Error)
            {
                Assert.Inconclusive("Parser Error");
            }
            var tree       = state.GetParseTree(component);
            var parsed     = tree.GetText();
            var withoutEOF = parsed.Substring(0, parsed.Length - 5);

            return(withoutEOF);
        }
        private static string Parse(string code, string filename)
        {
            IVBComponent component;
            var          vbe = MockVbeBuilder.BuildFromSingleStandardModule(code, out component);

            var state  = new RubberduckParserState(vbe.Object, new DeclarationFinderFactory());
            var parser = MockParser.Create(vbe.Object, state);

            parser.Parse(new CancellationTokenSource());
            if (parser.State.Status == ParserState.Error)
            {
                Assert.Inconclusive("Parser Error: " + filename);
            }

            var tree       = state.GetParseTree(new QualifiedModuleName(component));
            var parsed     = tree.GetText();
            var withoutEOF = parsed;

            while (withoutEOF.Length >= 5 && String.Equals(withoutEOF.Substring(withoutEOF.Length - 5, 5), "<EOF>"))
            {
                withoutEOF = withoutEOF.Substring(0, withoutEOF.Length - 5);
            }
            return(withoutEOF);
        }
Beispiel #5
0
 public IEnumerable <ICodeMetricResult> ModuleResults(QualifiedModuleName moduleName, RubberduckParserState state)
 {
     return(TraverseModuleTree(state.GetParseTree(moduleName), state.DeclarationFinder, moduleName));
 }
 public ModuleMetricsResult GetModuleResult(RubberduckParserState state, QualifiedModuleName qmn)
 {
     return(GetModuleResult(qmn, state.GetParseTree(qmn), state.DeclarationFinder));
 }