Ejemplo n.º 1
0
        protected override IEnumerable <IInspectionResult> DoGetInspectionResults()
        {
            var excel = State.DeclarationFinder.Projects.SingleOrDefault(item => !item.IsUserDefined && item.IdentifierName == "Excel");

            if (excel == null)
            {
                return(Enumerable.Empty <IInspectionResult>());
            }

            var targetProperties = BuiltInDeclarations
                                   .OfType <PropertyGetDeclaration>()
                                   .Where(x => InterestingMembers.Contains(x.IdentifierName) && InterestingClasses.Contains(x.ParentDeclaration?.IdentifierName))
                                   .ToList();

            var members = targetProperties.SelectMany(item =>
                                                      item.References.Where(reference => !IsIgnoringInspectionResultFor(reference, AnnotationName)));

            return(members.Select(issue => new IdentifierReferenceInspectionResult(this,
                                                                                   string.Format(InspectionResults.ImplicitActiveWorkbookReferenceInspection, issue.Context.GetText()),
                                                                                   State,
                                                                                   issue)));
        }
Ejemplo n.º 2
0
        protected override IEnumerable <IInspectionResult> DoGetInspectionResults()
        {
            var excel = State.DeclarationFinder.Projects.SingleOrDefault(item => !item.IsUserDefined && item.IdentifierName == "Excel");

            if (excel == null)
            {
                return(Enumerable.Empty <IInspectionResult>());
            }

            var targetProperties = BuiltInDeclarations
                                   .OfType <PropertyDeclaration>()
                                   .Where(x => InterestingMembers.Contains(x.IdentifierName) && InterestingClasses.Contains(x.ParentDeclaration?.IdentifierName))
                                   .ToList();

            var references = targetProperties.SelectMany(declaration => declaration.References
                                                         .Where(reference => !IsIgnoringInspectionResultFor(reference, AnnotationName) &&
                                                                IsAccessedWithStringLiteralParameter(reference))
                                                         .Select(reference => new IdentifierReferenceInspectionResult(this,
                                                                                                                      InspectionResults.SheetAccessedUsingStringInspection, State, reference)));

            var issues = new List <IdentifierReferenceInspectionResult>();

            foreach (var reference in references)
            {
                using (var component = GetVBComponentMatchingSheetName(reference))
                {
                    if (component == null)
                    {
                        continue;
                    }
                    using (var properties = component.Properties)
                    {
                        reference.Properties.CodeName = (string)properties.Single(property => property.Name == "CodeName").Value;
                    }
                    issues.Add(reference);
                }
            }
            return(issues);
        }