2011-09-13 3 views
0

우리는 pl SQL 개발자를 사용하고 있으며 모든 개발자는 자신의 미화를 사용하고 있습니다. 즉, 일부는 쉼표가 사용되고 나머지는 시작 부분에 표시됩니다.pl SQL 파일 비교 도구에서 비교

이제 파일을 마지막으로 체크인 한 사람은 코드가 그의 미화와 함께 있습니다. 나중에 체크 아웃하는 사람에게이 사람이 다른 미화 규칙을 갖고 파일을 비교하는 경우 diff 도구는 모든 것을 diff로 표시합니다.

예 : 코드가 여기은 diff 도구 동일하지만 (다른 미화 규칙 체크) 저장소의 지역 코드

 .... 
     Line1, 
     Line2, 
     .... 

코드

 .... 
    ,Line1 
    ,Line2 
    ..... 

코드가 쉼표의 위치의 다른 beacuse이며 모든 보여줍니다 가정 이 줄 옆에 빨간색 표시가 있습니다. 실제 코드 변경이 아니라 실제 코드 변경 사항을 파악하기가 어렵습니다.

우리가 피할 수있는 일이나 pl SQL diff를 수행 할 수있는 도구가 있습니까? 모든 지침이 크게 적용됩니다. 고맙습니다.

답변

1

Smart Differencer 제품군을 참조하십시오.

이러한 도구는 코드의 구조 (형식 아님)를 비교하여 작동합니다. 그들은 컴파일러 - 정확한 구문 분석을 사용하여 소스 코드를 읽고 추상 구문 트리를 작성합니다. 텍스트가 아닌 나무가 비교됩니다. 따라서 형식, 레이아웃, 삽입 된 주석, 기수 또는 다른 문자로 변경되었지만 동등한 문자열 이스케이프는 모두 무시됩니다. 차이점은 언어 구조 (변수, 표현식, 명령문, 블록, 선언, ..) 및 그럴듯한 편집 작업 (이동, 복사, 삽입, 이름 바꾸기 등)에 따라 반환됩니다.

OP의 예에는 "변경 사항 없음"이 표시됩니다.

이러한 도구는 다양한 프로그래밍 언어 및 해당 방언에서 사용할 수 있습니다. 웹 사이트에서는 PL/SQL에 대해이 사실을 표시하지 않을 수도 있지만 실제로는 그렇게합니다. 웹 사이트에서 물어보십시오.

기존 diff를 실행하기 전에 두 소스 모두에서 미화 도구를 실행할 수 있습니다. 이것은 대부분 작동하지만 주석, 숫자 기수 및 이와 동등한 문자열 이스케이프의 차이점을 계속해서 살펴볼 것입니다. 당신은 또한 미화를 믿지 않을 수도 있습니다; 그것은 가짜 차이의 원천이 될 수 있습니다. (PL/SQL prettyprinter도 있습니다. 컴파일러가 정확하게 파싱하고 컴파일러가 정확한 재생성을 사용합니다. 즉 신뢰할 수 있습니다.