/// <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)); }
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)); }
/// <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)); }