private static PSPSizeMeasure consolidateMeasures(PSPSizeMeasure[] measures) { if (measures.Length == 2) { return(measures[1]); } else if (measures.Length == 1) { return(null); } else if (measures.Length == 0) { return(null); } var first = measures.First(); var last = measures.Last(); PSPSizeMeasure result = new PSPSizeMeasure() { Base = first.Base, Total = last.Total }; for (int i = 1; i < measures.Length; i++) { result.Added += measures[i].Added; result.Modified += measures[i].Modified; result.Deleted += measures[i].Deleted; } return(result); }
public static SizeFormModel[] ToPSPForm(this List <ComponentBase.FilePoint.CodeFile> files) { List <SizeFormModel> forms = new List <SizeFormModel>(); foreach (var codeFile in files) { CodeHistory[] newChanges = new CodeHistory[0]; PSPSizeMeasure[] measures = new PSPSizeMeasure[0]; try { newChanges = codeFile.Changes.SkipWhile(h => _visitedHistories.Contains(h.Id)).ToArray(); measures = newChanges.Select(h => h.GetMeasurement(typeof(PSPSizeMeasure).FullName)).Cast <PSPSizeMeasure>().ToArray(); var measure = consolidateMeasures(measures); if (measure == null || measure.NewAndChanged + measure.Deleted == 0) { continue; } forms.Add(new SizeFormModel(Guid.NewGuid()) { Program = codeFile.Name, CreatedAt = DateTime.Now, Base = measure.Base, Added = measure.Added, Modified = measure.Modified, Deleted = measure.Deleted, Reused = measure.Reused, Total = measure.Total, Solution = GetProjectName() }); } catch (Exception e) { Logger.Instance.Log(e.ToString()); } for (var i = 0; i < newChanges.Length - 1; i++) { _visitedHistories.Add(newChanges[i].Id); } } return(forms.ToArray()); }
private PSPSizeMeasure countAsBase(CodeHistory current) { var c = (LOCMeasure)loc.Measure(current); PSPSizeMeasure m = new PSPSizeMeasure() { Base = c.PhysicalLOC, Added = 0, Deleted = 0, Modified = 0, NewReuse = 0, Reused = 0, Total = c.PhysicalLOC }; return(m); }
private PSPSizeMeasure countAsModification(CodeHistory current, CodeHistory previous) { var c1 = (LOCMeasure)loc.Measure(previous); var c2 = (LOCMeasure)loc.Measure(current); var changes = DiffHelper.SimpleDiff(current.Content, previous.Content); PSPSizeMeasure m = new PSPSizeMeasure() { Base = c1.PhysicalLOC, Added = changes.Count(t => t == ChangeType.Inserted), Deleted = changes.Count(t => t == ChangeType.Deleted), Modified = changes.Count(t => t == ChangeType.Modified), Total = c2.PhysicalLOC }; return(m); }