2012-12-10 3 views
8

Microsoft .NET Framework에서 주어진 C# 파일의 구문과 구문 만 확인하는 방법을 아는 사람이 있습니까?명령 줄에서 C# 구문 확인

약간의 배경 지식으로, syntastic을 설정하여 .cs 파일의 구문을 확인하십시오. 기본적으로 syntynt는이 작업을 수행하기 위해 --parse 플래그가있는 Mono C# 컴파일러를 사용하지만 Microsoft .NET 프레임 워크에서는 해당 항목을 찾을 수 없습니다.

이것을 작동 시키려면 먼저 mcs --parse 대신 csc /target:library /nologo을 사용하는 것이 가장 좋았지 만 문제는 이것이 파일 단위로 호출된다는 것입니다. 결과적으로 구문 오류가 아닌 누락 된 네임 스페이스 (전체 프로젝트 빌드에 있음)를보고합니다.

+0

왜 이렇게 했습니까? – mellamokb

+4

모노를 설치하지 않는 이유는 무엇입니까? –

답변

1

icsharpcode IDE에서 전에 NRefactory을 사용했습니다. 기본적인 내용은 쉽고 빠릅니다. 나는 C#을 예에서 VB.NET 예제를 만드는 데 사용 Using NRefactory for analyzing C# code

:

은이 문서를 참조하십시오. 이건 정말 솔직하다하지 쉽게 여러분의 필요에 적용 할 수있는 방법

private static void ConvertLanguage(TextReader input, TextWriter output, SupportedLanguage language, Action<string> onError) 
    { 
     using (IParser parser = ParserFactory.CreateParser(language, input)) 
     { 
      parser.Parse(); 
      var specials = parser.Lexer.SpecialTracker.RetrieveSpecials(); 
      var result = parser.CompilationUnit; 
      //if (parser.Errors.Count > 0) 
      // MessageBox.Show(parser.Errors.ErrorOutput, "Parse errors"); 

      IOutputAstVisitor outputVisitor; 
      if (language == SupportedLanguage.CSharp) 
       outputVisitor = new VBNetOutputVisitor(); 
      else 
       outputVisitor = new CSharpOutputVisitor(); 

      outputVisitor.Options.IndentationChar = ' '; 
      outputVisitor.Options.IndentSize = 4; 
      outputVisitor.Options.TabSize = 4; 

      using (SpecialNodesInserter.Install(specials, outputVisitor)) 
       result.AcceptVisitor(outputVisitor, null); 

      if (outputVisitor.Errors.Count > 0 && onError != null) 
       onError(outputVisitor.Errors.ErrorOutput); 

      output.Write(outputVisitor.Text); 
     } 
    } 

참고 : 앞의 코드는 이전 버전에서하고 NRefactory 라이브러리의 최신 버전에 대해 컴파일하지 않을 수 있습니다 .

+0

이것은 최상의 CLR 구현 독립적 인 답변 인 것으로 보입니다. – Michael

0

나는 귀하의 질문에 대한 해결책을 가지고 있다고 생각합니다. 디버거에 있지 않고 코드 구문을 확인하려는 경우 compilr으로 온라인 컴파일러를 사용할 수 있습니다. 리스토어를 출력하려면 Html Agility이라는 놀라운 API를 사용하여 온라인 컴파일러의 결과를 쉽게 가져올 수 있습니다. 희망이 도움이!

2

Roslyn CTP을 통해이를 수행 할 수 있습니다. .cs 파일을 완전히 구문 분석하고 전체 트리를 탐색하여 오류를 찾을 수 있습니다.

자세한 내용은 C# 파일의 구문 트리를 보는 기본 접근 방식을 보여주기 때문에 C#에 Walkthrough: Getting Started with Syntax Analysis을 다운로드하는 것이 좋습니다.