public TextBufferIssueTracker(DTE dte, TaggerProvider provider, ITextDocument document,
                                      IEnumerable <AnalysisLanguage> detectedLanguages, IIssuesFilter issuesFilter,
                                      ISonarErrorListDataSource sonarErrorDataSource, IAnalysisIssueVisualizationConverter converter,
                                      IVsSolution5 vsSolution, ILogger logger)
        {
            this.dte = dte;

            this.Provider   = provider;
            this.textBuffer = document.TextBuffer;

            this.detectedLanguages    = detectedLanguages;
            this.sonarErrorDataSource = sonarErrorDataSource;
            this.converter            = converter;
            this.vsSolution           = vsSolution;
            this.logger       = logger;
            this.issuesFilter = issuesFilter;

            this.document = document;
            this.FilePath = document.FilePath;
            this.charset  = document.Encoding.WebName;

            this.Factory = new IssuesSnapshotFactory(new IssuesSnapshot(GetProjectName(), GetProjectGuid(), FilePath, new List <IAnalysisIssueVisualization>()));

            document.FileActionOccurred += SafeOnFileActionOccurred;

            sonarErrorDataSource.AddFactory(this.Factory);
            Provider.AddIssueTracker(this);

            RequestAnalysis(null /* no options */);
        }
예제 #2
0
        public void AddTagger(IssueTagger tagger)
        {
            Debug.Assert(!activeTaggers.Contains(tagger), "Not expecting the tagger to be already registered");
            activeTaggers.Add(tagger);

            if (activeTaggers.Count == 1)
            {
                // First tagger created... start doing stuff

                textBuffer.ChangedLowPriority += SafeOnBufferChange;

                this.dirtySpans = new NormalizedSnapshotSpanCollection(new SnapshotSpan(currentSnapshot, 0, currentSnapshot.Length));

                Provider.AddIssueTracker(this);

                RequestAnalysis();
            }
        }