문제

Lisa Feigenbaum Microsoft Talks 여기 "complibiler as service"정보 "이 기능을 읽었 으면 리팩토링 도구를 더 쉽게 만들 수 있습니다.어떻게? Mono 's caas 는 훌륭하지만 Microsoft 버전이 비슷한 경우에는 보이지 않습니다.이 특정 유스 케이스가 어떻게 수행되는지.

도움이 되었습니까?

해결책

"컴파일러 서비스로 컴파일러"는 컴파일러를 개별 조각으로 분해하는 것을 의미합니다.

소스 코드가 한쪽 끝에 들어가고 컴파일 된 어셈블리가 다른 하나는 다른 하나는 입력 된 출력이있는 많은 작은 (검은 색) 상자를 많이 얻을 수 있습니다.

그래서 예를 들어 소스 코드를 하나의 상자에 넣고 다른 상자에 추상 구문 트리 (AST)를 가져올 수 있습니다. 그런 다음이 트리는 최적화 프로그램에 공급되기 전에 조작 될 수 있으며, 이들 중 일부는 컴파일러에 공급 될 수있는 코드의 다른 표현이 발생하여 실행 가능한 코드를 출력합니다.

미래의 .NET의 "complileer 서비스"의 일부분에 대한 정확한 계획에 대해 많이 알지 못한 이래로, 위는 야생 추측 일뿐 만 아니라 가능성을 보는 방법입니다.

리팩토링은 AST에서 작동 할 수 있으며, 매핑 및 변환을 통해 AST를 원래의 소스 코드로 돌아가는 방법이 있음을 가정 할 것입니다 (매핑은 AST에서 노드를 가져갈 수 있음을 의미하며 " 소스 코드의 어느 부분 이이 노드가 "그리고 변환이 의미합니다"라는 소스 코드를 "이제 수정 한 후에"수정 한 후에 소스 코드를 제공 할 수 있습니다.)

예를 들어, Microsoft에서 제공하는 리팩토링을 읽고 선택하는 코드를 읽고 선택하는 코드를 작성하여 CAAS가 제공 한 것을 사용하여 자신의 노력을 평가해야합니다.

다른 팁

Roslyn CTP에는 연습 빌딩 S "코드 액션"을위한 코드에 잘못된 것과 관련이있는 경우 "빠른 수정"일 수있는 무언가에 대한 용어 또는 문맥별로 제공되면 리팩토링이있는 경우

은 Roslyn CTP를 설치하는 경우 Visual Studio에서 볼 수있는 CodeReFactoring 프로젝트 템플릿을 살펴보십시오.

내 회사 (시맨틱 디자인)는 "서비스로 컴파일러"를 제공합니다 : DMS 소프트웨어 Reengineering toolkit .

DMS는 컴퓨터 (모든 공식) 언어와 관련하여 일반적입니다. 언어 설명 (DMS는 C ++, C #, Java, PHP, COBOL 및 기타 많은 언어의 경우에 강력한 버전이 있음) DMS는 소스를 ASTS로 구문 분석하고 Orginal 의견을 포함하여 ASTS에서 유효한 소스를 재생성 할 수 있습니다.

DMS는 구성 가능한 속성 평가, 흐름 분석, 반복 솔버, Use-Def 분석, 지역 및 글로벌 콜 그래프 구축 및 글로벌 포인트와 allaysis 모두 구성 가능한 다양한 분석기 엔진을 제공합니다. AST는 절차 코드 (클래식 컴파일러 트리 해킹) 또는 소스 - 소스 변환에 의해 수정 될 수 있습니다. 변환은 하나의 언어로 AST를 동일한 언어 ( "최적화") 또는 다른 Langauges ( "Refinement / Translation")로 매핑 할 수 있습니다. 이는 15 년 이상의 지속적인 엔지니어링이있는 매우 성숙한 인프라입니다.

원하는 입력 / 출력 언어 세트를 선택 / 정의하고 컴파일러 지향 DSL (DMS가 원하는 도구로 컴파일하여 컴파일 된 사용자 지정 코드를 작성하여 원하는 도구로 컴파일하게 작성한 사용자 정의 코드를 작성하여 DMS 기계를 만듭니다). 당신의 목적을 달성하십시오.

DMS는 언어 마이그레이션 도구를 구축하는 데 사용되었습니다 ( "Nofollow"> B-2 스텔스 폭격기 임무 소프트웨어 마이그레이션 ), 대규모 C ++ Re 구식 도구, 자동차 공장 조립 셀 및 많은 고전적인 소프트웨어 엔지니어링 도구 (테스트 범위, 프로파일 러, 복제 탐지, 스마트 차이점)를 실행하는 코드 생성 도구 짐마자 그것은 리팩토링 도구를위한 자연적 토대입니다. 우리는 이들을 위해 일하고 있습니다 : -}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top