ArchiMetrics.Analysis.SemanticAnalyzer.GetUnusedParameters C# (CSharp) Метод

GetUnusedParameters() публичный Метод

public GetUnusedParameters ( Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax method ) : IEnumerable
method Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax
Результат IEnumerable
		public IEnumerable<ParameterSyntax> GetUnusedParameters(BaseMethodDeclarationSyntax method)
		{
			if (method.ParameterList.Parameters.Count == 0 || method.Body == null || !method.Body.ChildNodes().Any())
			{
				return new ParameterSyntax[0];
			}

			var bodyNodes = method.Body.ChildNodes();
			var dataflow = _model.AnalyzeDataFlow(bodyNodes.First(), bodyNodes.Last());

			var usedParameterNames = dataflow.DataFlowsIn
				.Where(x => x.Kind == SymbolKind.Parameter)
				.Select(x => x.Name)
				.AsArray();

			var unusedParameters = method.ParameterList.Parameters
				.Where(p => !usedParameterNames.Contains(p.Identifier.ValueText))
				.AsArray();
			return unusedParameters;
		}

Usage Example

		protected override Task<EvaluationResult> EvaluateImpl(SyntaxNode node, SemanticModel semanticModel, Solution solution)
		{
			var method = (MethodDeclarationSyntax)node;
			var analyzer = new SemanticAnalyzer(semanticModel);
			if (analyzer.GetUnusedParameters(method).Any())
			{
				var snippet = method.ToFullString();
				return Task.FromResult(new EvaluationResult
					   {
						   Snippet = snippet
					   });
			}

			return Task.FromResult((EvaluationResult)null);
		}