/// <summary>
        /// The get coverage DataCache for resource.
        /// </summary>
        /// <param name="resource">
        /// The resource.
        /// </param>
        /// <param name="currentSource">
        /// The current source.
        /// </param>
        /// <returns>
        /// The <see>
        ///         <cref>Dictionary</cref>
        ///     </see>
        ///     .
        /// </returns>
        public Dictionary <int, CoverageElement> GetCoverageDataForResource(Resource resource, string currentSource)
        {
            var coverageLine = new Dictionary <int, CoverageElement>();

            if (!DataCache.ContainsKey(resource.Key))
            {
                return(coverageLine);
            }

            EditorData element = DataCache[resource.Key];

            ArrayList diffReport = VsSonarUtils.GetSourceDiffFromStrings(element.ServerSource, currentSource, DiffEngineLevel.FastImperfect);

            foreach (var linecov in element.CoverageData)
            {
                int line = VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(linecov.Key, diffReport);

                if (line > 0 && !coverageLine.ContainsKey(line))
                {
                    coverageLine.Add(line, linecov.Value);
                }
            }

            return(coverageLine);
        }
 public void ShouldReportViolationInSameLine()
 {
     Assert.AreEqual(1, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(1, this.rep));
     Assert.AreEqual(2, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(2, this.rep));
     Assert.AreEqual(3, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(3, this.rep));
     Assert.AreEqual(7, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(7, this.rep));
     Assert.AreEqual(8, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(8, this.rep));
 }
        /// <summary>
        /// The get issues for resource.
        /// </summary>
        /// <param name="resource">
        /// The resource.
        /// </param>
        /// <param name="currentSource">
        /// The current source.
        /// </param>
        /// <returns>
        /// The
        ///     <see>
        ///         <cref>List</cref>
        ///     </see>
        ///     .
        /// </returns>
        public List <Issue> GetIssuesForResource(Resource resource, string currentSource)
        {
            var issues = new List <Issue>();

            if (!DataCache.ContainsKey(resource.Key))
            {
                return(issues);
            }

            EditorData element = DataCache[resource.Key];

            if (element.ServerSource == null)
            {
                return(element.Issues);
            }

            try
            {
                ArrayList diffReport = VsSonarUtils.GetSourceDiffFromStrings(element.ServerSource, currentSource, DiffEngineLevel.FastImperfect);

                foreach (Issue issue in element.Issues)
                {
                    int line = VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(issue.Line, diffReport);

                    if (line >= 0)
                    {
                        issues.Add(issue);
                    }
                }

                return(issues);
            }
            catch (Exception)
            {
                return(element.Issues);
            }
        }
 public void ShouldReportReturnInvalidIndex()
 {
     Assert.AreEqual(-1, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(6, this.rep));
 }
 public void ShouldReportViolationInLineWithCorrectNumberOfAddedLines()
 {
     Assert.AreEqual(14, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(11, this.rep));
     Assert.AreEqual(15, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(12, this.rep));
 }
 public void ShouldReportViolationInNextLine()
 {
     Assert.AreEqual(5, VsSonarUtils.EstimateWhereSonarLineIsUsingSourceDifference(4, this.rep));
 }