2011-07-28 4 views
1

resharper 용 테스트 프레임 워크 확장을 작성하고 싶습니다. 여기에 대한 문서는 다음과 같습니다. http://confluence.jetbrains.net/display/ReSharper/Test+Framework+Support특정 JetBrains.ReSharper.Psi.IDeclaredElement의 파일 이름과 줄 번호를 얻는 방법?

특정 부분이 테스트의 일부인지 여부를 나타냅니다. 코드 조각은 IDeclaredElement로 표현됩니다.

특정 IDeclaredElement가 나타내는 코드의 파일 이름과 줄 번호를 가져올 수 있습니까?

아래의 응답까지 다음은 당신이 나를 위해 한 지점을 명확히 할 수있는 경우

@Evgeny, 대답을 주셔서 감사합니다, 나는 궁금하다.

사용자가 Visual Studio에서이 테스트를 열었다 고 가정 해 보겠습니다. https://github.com/fschwiet/DreamNJasmine/blob/master/NJasmine.Tests/SampleTest.cs 사용자가 48 행인 'player.Resume()'표현식을 마우스 오른쪽 버튼으로 클릭한다고 가정합니다. IDeclaredElement가 48 행에서 실행하려고 구체적으로 말합니까? 아니면 전체 클래스에 해당하는 IDeclaredElement와 클래스 전체에 대한 파일 이름/행 번호 범위를 제공 할 예정입니까?

나는 이걸 가지고 놀아야하지만, 내가 아는 것을 두드려 주셔서 감사합니다.

답변

3

예.

"IDeclaredElement"엔티티는 코드 기호 (클래스, 메소드, 변수 등)입니다. 그것은 어셈블리 메타 데이터로부터로드 될 수 있으며, 소스 코드에서 선언 될 수 있고, 소스 코드에서 암시 적으로 올 수 있습니다.

당신은

그리고, 어떤 IDeclaration를 들어,

을 사용할 수 있습니다 (예를 들어,이 부분 클래스에 대해 여러 선언을 반환 할 수)가 선언 모든 AST 요소를 얻을 수

var declarations = declaredElement.GetDeclarations() 

을 사용할 수 있습니다

var documentRange = declaration.GetDocumentRange() 
if (documentRange.IsValid()) 
    Console.WriteLine ("File: {0} Line:{1}", 
DocumentManager.GetInstance(declaration.GetSolution()).GetProjectFile(documentRange.Document).Name, 
documentRange.Document.GetCoordsByOffset(documentRange.TextRange.StartOffset).Line 
); 

그런데 어떤 테스트 프레임 워크 확장을 개발하고 있습니까?

+0

감사를 문서의 좌표를 확인하시기 바랍니다. 프레임 워크는 https://github.com/fschwiet/DreamNJasmine/입니다. –

+0

Evgeny 나는 무엇이 반환 될지에 대한 더 자세한 정보를 얻기 위해 질문을 업데이트했다. 당신의 도움을 주셔서 감사합니다. –

0

IDeclaredElement는 특히 행 48에서 실행하겠습니까?

한 번 더 : IDeclaredElement는 파일에 위치를 지정하지 않습니다. 대신 선언문이 있습니다. 모든 선언 (IDeclaration은 정규 AST 노드 임)에는 문서에서 다루는 범위가 있습니다. 이전 예제에서는 TextRange.StartOffset을 사용했지만 TextRange.EndOffset을 사용할 수 있습니다. 이 파일에서 더 prcise 위치가 필요한 경우

는 AST 트리를 통과하고, 특정 표현/문에 대한 응답에 대한

+0

감사합니다. Evgeny. 나는 전체적으로 능력에 관심이 많기 때문에 IDeclaredElement와 GetDeclarations()에 의해 반환 된 개체 사이의 차이점을 언급하지 않았습니다. 클릭 한 대리자 내에서 특정 요소를 가져올 수 있는지 여부입니다. AST에서 사용할 수있는 것 같습니다.나는 줄 번호에 초점을 맞추었다. 그러나 그것에 대해 생각하는 것은 누군가가 같은 줄에 다른 것들을 많이 넣을 수 있다고 생각한다. 아무튼, 건배 –

관련 문제