2015-01-17 5 views
3

AnalysisContext context 개체에서 사용할 모든 메서드/메서드의 로컬 변수가 RegisterSymbolAction() 또는 RegisterSyntaxNodeAction() 인 메서드를 혼동합니다.Roslyn 코드 진단 프로그램을 사용하여 지역 변수 및 매개 변수를 식별하고 분석하는 방법은 무엇입니까?

Roslyn SDK Project Templates.vsix의 코드 수정 진단 (NuGet + VSIX) 샘플에 따르면 RegisterSymbolAction() 일 가능성이 큽니다.

stringint 소수의 로컬 변수가있는 간단한 콘솔 앱을 사용하여 디버깅하고 있습니다.

나는이 두 가지를 시도했지만 두 변수 모두 해당하는 AnalyzeSymbol() 콜백 메소드에서 분석을 트리거하지 않습니다. 이러한 각 콜백 메소드 내의 중단 점은 로컬 변수에 적중하지 않습니다.

콜백 메소드 AnalyzeSymbol()에서 분석 할 지역 변수를 얻는 방법과 내가 뭘 잘못하고있는 걸까요?

var symbolsToActOn = new[] { SymbolKind.Local, SymbolKind.Parameter, SymbolKind.Field }; 
context.RegisterSymbolAction(AnalyzeSymbol, symbolsToActOn); 

또는 더 자세히 살펴에 대한 나의 demo project is on GitHub

var syntaxTypes = new[] { SyntaxKind.IdentifierName, SyntaxKind.IdentifierToken, SyntaxKind.Parameter }; 
context.RegisterSyntaxNodeAction(AnalyzeSyntaxNode, syntaxTypes); 

, 그리고 특정 부분은 DiagnosticAnalyzer.cs입니다.

답변

6

불행히도 RegisterSymbolAction은 현재 작업 방법 이상입니다. 지역 주민 및 매개 변수는 RegisterSyntaxNodeAction을 사용해야합니다. 나중에이 문제를 해결하기 위해 노력하겠습니다.

+4

이 상태는 무엇입니까? 우리는 메소드/코드 블록 내에서 로컬 심볼을 의미 론적으로 분석 할 수 있기를 원합니다. – Jaans