2014-01-08 4 views
1

이 질문을 StyleCop forum에 요청했지만 답변을 얻지 못했습니다.사용자 정의 StyleCop 규칙 테스트 : ReSharper testrunner를 사용할 때 AddSourceFile() 호출은 항상 false를 반환합니다.


나는 MSTEST를 사용하여 사용자 정의 규칙을 테스트하기위한 예제를 많이 발견하고 내가 충분히 쉽게 작업 할 that one을 얻었다.

그러나이 테스트는 ReSharper 테스트 러너를 사용할 때 작동하지 않습니다. 내가 VS 2010가 아닌 다른 뭔가를 사용할 때마다 몇 가지 이유를 들어

StyleCopConsole.Core.Environment.AddSourceFile(...) 

에 대한 호출은 항상 false를 반환의 내장의 TestRunner 시험보기를 통해. 그 테스트보기 아마도 내가 지금까지 테스트를 실행하는 데 사용했던 최소한의 사용자 친화적 인 도구입니다 ReSharper를 사용하는 것이 좋습니다. 많이.

내 테스트 어셈블리에 리소스라는 서브 폴더가 있는데 여기에는 내 테스트에 사용할 수없는 소스 파일과 Settings.StyleCop 파일이 들어 있습니다. 그들은 테스트 출력 폴더에 올바르게 복사됩니다. File.Exists을 사용하여 추가 검사를 추가하기 전에 AddSourceFile (...)을 호출하여 확인하십시오.

StyleCop.dll, StyleCop.CSharp.dll 및 StyleCop.CSharp.Rules.dll에 대한 참조가 추가되어 문제가 해결되지 않았습니다.

ReSharper 러너를 사용하면 StyleCopCore.Parsers 컬렉션은 항상 비어 있습니다. VS 러너를 사용할 때 CsParser이 포함되어 있습니다.

내가 누락 된 아이디어가 있습니까?

+0

파일 경로를 어떻게 가져 옵니까? 상대 경로입니까? 'Directory.GetCurrentDirectory()'를 실행하고 결과를 작성하여 기본 폴더가 어떻게 보이는지보십시오. 게다가, 당신은 파일 확장자에 대해'Parser' 객체를 등록했습니다. (힌트는 여기에서 찾을 수 있습니다 : https://stylecop.codeplex.com/SourceControl/latest#Project/Src/StyleCop/FileBasedEnvironment.cs) – jessehouwing

+0

@jessehouwing 힌트를 보내 주셔서 감사합니다. 필자는 수동으로 CsParser를 추가했으며 이제 AddSourceFile이 작동합니다. 그러나 그것은 나의 주문 규칙을 무시한다. –

+0

그건 단계 중 하나 :). 나는 당신의 규칙이 지금 방아쇠를 당길 수 없었던 이유를 전혀 모른다. .. 그러나 나는 내가 당신의 질문에 대답했다고 생각한다. :) – jessehouwing

답변

0

StyleCopConsole.Core.Environment은 사용자가 제공하는 파일 확장명에 대한 파서를 등록했기를 기대합니다. 따라서 CsParser 인스턴스를 Parsers 컬렉션에 추가하고 확장자를 .cs으로 설정하려고합니다.

다행히도 StyleCop의 소스를 사용할 수 있으므로 코드 경로가 왜 false를 반환하는지 확인하고 그 전제 조건이 통과되었는지 확인하는 것이 좋습니다.