예제 #1
0
		private IModelNode TransformVertexRecursive(IModelNode vertex, TransformRule[] transforms)
		{
			var newName = transforms.Aggregate(
				vertex.DisplayName, 
				(name, rule) => GetTransform(rule.Pattern).Replace(name, rule.Name ?? string.Empty));
			var type = vertex.Type;
			var linesOfCode = vertex.LinesOfCode;
			var maintainabilityIndex = vertex.MaintainabilityIndex;
			var cyclomaticComplexity = vertex.CyclomaticComplexity;
			var quality = vertex.Quality;
			var children = vertex.Children.Select(x => TransformVertexRecursive(x, transforms));
			return vertex is StaticModelNode
					   ? new StaticModelNode(
							 newName, 
							 type, 
							 quality, 
							 linesOfCode, 
							 maintainabilityIndex, 
							 cyclomaticComplexity, 
							 children.ToList())
					   : new ModelNode(
							 newName, 
							 type, 
							 quality, 
							 linesOfCode, 
							 maintainabilityIndex, 
							 cyclomaticComplexity, 
							 children.ToList());
		}
			public async Task WhenTransformingThenAlsoTransformsChildren()
			{
				var rule = new TransformRule("Test", "[xyz]");
				var node = new ModelNode("a", "type", CodeQuality.Good, 3, 2, 1, new List<IModelNode> { new ModelNode("x", "type", CodeQuality.Good, 6, 5, 4) });

				var transformed = await _transformer.Transform(new[] { node }, new[] { rule }, CancellationToken.None);

				Assert.AreEqual("Test", transformed.First().Children.First().DisplayName);
			}