/// <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 GetCorrespondentChangeForLineNoChange()
        {
            var diffentry = VsSonarUtils.GetChangeForLine(3, this.rep);

            Assert.AreEqual(0, diffentry.SourceIndex);
            Assert.AreEqual(0, diffentry.DestIndex);
            Assert.AreEqual(DiffResultSpanStatus.NoChange, diffentry.Status);

            var diffentry1 = VsSonarUtils.GetChangeForLine(4, this.rep);

            Assert.AreEqual(3, diffentry1.SourceIndex);
            Assert.AreEqual(4, diffentry1.DestIndex);
            Assert.AreEqual(DiffResultSpanStatus.NoChange, diffentry1.Status);

            var diffentry2 = VsSonarUtils.GetChangeForLine(7, this.rep);

            Assert.AreEqual(6, diffentry2.SourceIndex);
            Assert.AreEqual(6, diffentry2.DestIndex);
            Assert.AreEqual(DiffResultSpanStatus.NoChange, diffentry2.Status);

            var diffentry3 = VsSonarUtils.GetChangeForLine(10, this.rep);

            Assert.AreEqual(9, diffentry3.SourceIndex);
            Assert.AreEqual(9, diffentry3.DestIndex);
            Assert.AreEqual(DiffResultSpanStatus.NoChange, diffentry3.Status);
        }
        public void TestGetProjetKeyFromPomFileNonExistentFile()
        {
            var sonrunfilepath = Path.Combine(this.sampleDataPath, string.Empty);
            var sol            = Path.GetDirectoryName(sonrunfilepath);

            Assert.AreEqual(string.Empty, VsSonarUtils.GetProjectKey(sol));
        }
 public void TestFileDoesNotExist()
 {
     VsSonarUtils.WriteDataToConfigurationFile("key", "data", this.fileName);
     string[] lines = File.ReadAllLines(this.fileName);
     Assert.AreEqual(lines.Length, 1);
     Assert.AreEqual(lines[0], "key=data");
 }
        public void TestGetProjetKeyFromPomFile()
        {
            var sonrunfilepath = Path.Combine(this.sampleDataPath, "maven\\pom.xml");
            var sol            = Path.GetDirectoryName(sonrunfilepath);

            Assert.AreEqual("my:project", VsSonarUtils.GetProjectKey(sol));
        }
        public void TestGetProjetKeyFromSonarRunnerFile()
        {
            var sonrunfilepath = Path.Combine(this.sampleDataPath, "sonar-runner\\sonar-project.properties");
            var sol            = Path.GetDirectoryName(sonrunfilepath);

            Assert.AreEqual("my:project", VsSonarUtils.GetProjectKey(sol));
        }
Exemplo n.º 7
0
        public void TestCompare()
        {
            var source      = Path.Combine(this.sampleDataPath, "SonarSource.txt");
            var destination = Path.Combine(this.sampleDataPath, "LocalSource.txt");
            var rep         = VsSonarUtils.GetSourceDiffFromStrings(File.ReadAllText(source), File.ReadAllText(destination));

            Assert.AreEqual(9, rep.Count);
        }
 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));
 }
Exemplo n.º 9
0
        /// <summary>Generates a resource name from a given solution, it will bring Associtation View
        ///  in case automatic associations is not possible</summary>
        /// <param name="solutionName">The solution Name.</param>
        /// <param name="solutionPath">The solution Path.</param>
        /// <returns>The <see cref="Resource"/>.</returns>
        public Resource GetResourceForSolution(string solutionName, string solutionPath)
        {
            if (AuthtenticationHelper.AuthToken == null)
            {
                return(null);
            }

            try
            {
                var prop = this.configurationHelper.ReadSetting(
                    Context.GlobalPropsId,
                    Path.Combine(solutionPath, solutionName),
                    "PROJECTKEY");

                foreach (var project in this.associationViewModel.AvailableProjects)
                {
                    if (project.Key.Equals(prop.Value))
                    {
                        return(project);
                    }
                }

                try
                {
                    return(this.sonarService.GetResourcesData(AuthtenticationHelper.AuthToken, prop.Value)[0]);
                }
                catch (Exception ex)
                {
                    UserExceptionMessageBox.ShowException("Associated Project does not exist in server, please configure association", ex);
                    return(null);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            var sourceKey = VsSonarUtils.GetProjectKey(solutionPath);

            try
            {
                return(string.IsNullOrEmpty(sourceKey) ? null : this.sonarService.GetResourcesData(AuthtenticationHelper.AuthToken, sourceKey)[0]);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                sourceKey = sourceKey + ":" + this.SourceControl.GetBranch().Replace("/", "_");
                try
                {
                    return(string.IsNullOrEmpty(sourceKey) ? null : this.sonarService.GetResourcesData(AuthtenticationHelper.AuthToken, sourceKey)[0]);
                }
                catch (Exception exceptionBranch)
                {
                    Debug.WriteLine(exceptionBranch.Message);
                    return(null);
                }
            }
        }
 public void TestReadData()
 {
     VsSonarUtils.WriteDataToConfigurationFile("key", "data", this.fileName);
     VsSonarUtils.WriteDataToConfigurationFile("key1", "data1", this.fileName);
     VsSonarUtils.WriteDataToConfigurationFile("key2", "data2", this.fileName);
     Assert.AreEqual(VsSonarUtils.ReadPropertyFromFile("key", this.fileName), "data");
     Assert.AreEqual(VsSonarUtils.ReadPropertyFromFile("key1", this.fileName), "data1");
     Assert.AreEqual(VsSonarUtils.ReadPropertyFromFile("key2", this.fileName), "data2");
 }
 public void TestMultiplesData()
 {
     VsSonarUtils.WriteDataToConfigurationFile("key", "data", this.fileName);
     VsSonarUtils.WriteDataToConfigurationFile("key1", "data1", this.fileName);
     VsSonarUtils.WriteDataToConfigurationFile("key2", "data2", this.fileName);
     string[] lines = File.ReadAllLines(this.fileName);
     Assert.AreEqual(lines.Length, 3);
     Assert.AreEqual(lines[0], "key=data");
     Assert.AreEqual(lines[1], "key1=data1");
     Assert.AreEqual(lines[2], "key2=data2");
 }
 public void TestFileExistAddNewData()
 {
     VsSonarUtils.WriteDataToConfigurationFile("key", "data", this.fileName);
     string[] lines = File.ReadAllLines(this.fileName);
     Assert.AreEqual(lines.Length, 1);
     Assert.AreEqual(lines[0], "key=data");
     VsSonarUtils.WriteDataToConfigurationFile("key1", "data1", this.fileName);
     lines = File.ReadAllLines(this.fileName);
     Assert.AreEqual(lines.Length, 2);
     Assert.AreEqual(lines[0], "key=data");
     Assert.AreEqual(lines[1], "key1=data1");
 }
        /// <summary>
        ///     The refresh data for resource.
        /// </summary>
        /// <param name="res">
        ///     The res.
        /// </param>
        /// <param name="documentInView">
        ///     The document in view.
        /// </param>
        public void RefreshDataForResource(Resource res, string documentInView, string content, bool fromSource)
        {
            this.DocumentInView   = documentInView;
            this.ResourceInEditor = res;
            var newCoverage = this.restservice.GetCoverageInResource(AuthtenticationHelper.AuthToken, this.ResourceInEditor.Key);
            var newSource   = VsSonarUtils.GetLinesFromSource(this.restservice.GetSourceForFileResource(AuthtenticationHelper.AuthToken, this.ResourceInEditor.Key), "\r\n");
            var newIssues   = this.restservice.GetIssuesInResource(AuthtenticationHelper.AuthToken, this.ResourceInEditor.Key);

            this.IssuesGridView.UpdateIssues(newIssues);
            this.localEditorCache.UpdateResourceData(this.ResourceInEditor, newCoverage, newIssues, newSource);
            this.OnSelectedViewChanged();
        }
        /// <summary>
        ///     The refresh data for resource.
        /// </summary>
        /// <param name="res">
        ///     The res.
        /// </param>
        /// <param name="documentInView">
        ///     The document in view.
        /// </param>
        public void RefreshDataForResource(Resource res, string documentInView)
        {
            this.DocumentInView   = documentInView;
            this.ResourceInEditor = res;
            var newCoverage = this.restservice.GetCoverageInResource(this.userConfiguration, this.ResourceInEditor.Key);
            var newSource   = VsSonarUtils.GetLinesFromSource(this.restservice.GetSourceForFileResource(this.userConfiguration, this.ResourceInEditor.Key), "\r\n");
            var newIssues   = this.restservice.GetIssuesInResource(this.userConfiguration, this.ResourceInEditor.Key);

            this.IssuesGridView.UpdateIssues(newIssues, this.AvailableActionPlans);
            this.localEditorCache.UpdateResourceData(this.ResourceInEditor, newCoverage, newIssues, newSource);
            this.OnSelectedViewChanged();
        }
        /// <summary>The associate solution with sonar project.</summary>
        /// <param name="solutionName">The solution Name.</param>
        /// <param name="solutionPath">The solution Path.</param>
        /// <returns>The <see cref="Resource"/>.</returns>
        private Resource AssociateSolutionWithSonarProject(string solutionName, string solutionPath)
        {
            if (AuthtenticationHelper.AuthToken == null)
            {
                return(null);
            }

            try
            {
                var prop = this.configurationHelper.ReadSetting(
                    Context.GlobalPropsId,
                    Path.Combine(solutionPath, solutionName),
                    "PROJECTKEY");

                try
                {
                    return
                        (this.SonarRestConnector.GetResourcesData(
                             AuthtenticationHelper.AuthToken,
                             prop.Value)[0]);
                }
                catch (Exception ex)
                {
                    UserExceptionMessageBox.ShowException("Associated Project does not exist in server, please configure association", ex);
                    return(null);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            var sourceKey = VsSonarUtils.GetProjectKey(solutionPath);

            return(string.IsNullOrEmpty(sourceKey)
                       ? null
                       : this.SonarRestConnector.GetResourcesData(
                       AuthtenticationHelper.AuthToken,
                       sourceKey)[0]);
        }
        /// <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 GetNullChangeForLineForModifiedLine()
        {
            var diffentry = VsSonarUtils.GetChangeForLine(9, this.rep);

            Assert.IsNull(diffentry);
        }
 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));
 }