LXR 교차 참조기

LXR Cross Referencer
LXR 교차 참조기
LXR logo 80 pixels.png
초기 릴리즈c. 1994 (1994년)[1]
안정적 해제
2.3.5 / 2019년 3월 20일; 3년(2019-03-20)
리포지토리
기록 위치
유형인덱서 및 상호 참조기
면허증GNU GPL 2
웹사이트lxr.sourceforge.그물을 치다 Edit this on Wikidata

일반적으로 LXR로 알려진 LXR 교차 참조기는 소스 코드의 웹 기반 검색을 제공하는 범용 소스 코드 인덱서 및 코드 이해를 위한 상호 참조기로, 식별자의 정의 및 사용에 대한 링크를 제공한다.

역사

LXR은 리눅스 커널이 개발되는 동안(원래 이름: LXR은 "Linux Cross-Referencecer"를 의미함) 리눅스 커널을 감시할 수 있는 툴의 필요성에서 탄생했다.문서가 부족하고 기여자 수가 많으므로 이러한 도구는 더욱 필요하다.

두 명의 노르웨이 학생인 Arne Georg Gleditsch와 Per Kristian Gjermshus는 Linux 아키텍처에 대해 궁금해하면서 웹브라우저를 통해 파일들을 전시하고 이름을 한 번 클릭하면 변수 사용법을 보여주는 작은 프로그램을 쓰기 시작했다.일반적인 관심을 의식해, 그들은 그것을 SourceForge(1994년 초?)[1]에 빠르게 게시했다.

시간이 지나면서 팬들은 코드 완성도를 높이기 위해 개발팀에 합류했다. 하지만 그들의 숫자는 결코 10을 넘지 않았다.[2]이러한 특성을 가진 LXR은 전형적인 SourceForge 주관 프로젝트지만 소규모 프로젝트 중에서는 예외적인 수명 기간을 보인다.

초창기 크리에이터 중 한 명이 LXRng 스핀오프(spin-off)를 제공하는 새로운 기술을 탐구했다.이 실험 개발은 전통적인 버전에 존재하는 모든 특징을 포함하지는 않으며 특히 LXR 설립 원리에서 출발한다.

도구 주변에서 실제로 커뮤니케이션이 이루어지지 않았지만 LXR은 리눅스 저널과 같은 몇몇 종이 칼럼을 통해 나아갔다.[3]그러나 인터넷에서 LXR에 대한 참조를 수집할 때 도구 자체와 인덱스된 소스 코드를 표시하는 LXR 인스턴스 사이에 모호성이 있다(많은 사이트들이 원래 "LXR"을 "Linux Cross-Referencecer"라는 의미에서 "LXR"을 사용하기 때문이다).

Mozilla Application Suite에 대한 소스 코드를 인덱싱하기 위해 LXR을 채택한 후, Mozilla는 LXR을 MXR(Mozilla Cross Reference)로 포커싱했다.MXR은 모질라 개발의 필요성, 혼합 C++와 자바스크립트 코드베이스의 코드 네비게이션의 충족을 위해 포크화되었다.수년간의 MXR 사용 후, 모질라는 더 나은 정적 분석과 동적 아약스 UI에 초점을 맞춘 새로운 도구에 대한 작업을 시작했다.결과는 DXR(Deffra Cross Reference[4])이다.DXR이 성숙된 후, mxr.mozilla.org의 MXR 인스턴스는 해체되었다.

기술

LXR은 미니멀리스트적이며 최소한의 원칙을 고수한다.

미니멀리즘에 대한 의도적인 편견은 너무 많은 다른 기술을 사용하는 것을 피한다.따라서, 그것은 의존성을 제한하고 소프트웨어는 특별한 적응 없이 많은 구성으로 지원될 수 있다.

설계 선택에는 해석 언어(Java 또는 JavaScript 등)의 금지 또는 엄격한 HTML 4.01 준수가 포함된다.

최소한원칙은 툴 프로그래밍이 이미 존재하는 경우(적어도 오픈 소스로서) 금지한다.

이로 인해 디스플레이용 웹 브라우저 사용(HTML 및 CSS는 고급 페이지 레이아웃 허용), 사용 가능한 관계형 데이터 베이스에 저장된 정의 및 참조, Exuberant ctags 도구를 사용한 파일 구문 분석 등이 가능해진다.

LXR은 Perl로 작성되며, CGI 스크립트를 위한 편리한 선택이지만 어휘적 또는 구문적 구문 분석에는 적합하지 않다.[5]

LXR은 가능한 한 적은 제약조건을 부과하려고 한다.

  1. 몇 가지 데이터베이스 선택사항:MySQL, PostgreSQL, SQLite 또는 Oracle
  2. Slime과 SWISH-E 사이의 전체 텍스트 검색에 대한 선택사항
  3. CGI 스크립트(Apache, Cherokee, lighttpd, Nginx 및 ttpd에 대한 지침이 제공됨)를 실행할 수 있다면 HTTP 서버에 대한 무료 선택
  4. 실제 디렉터리 또는 버전 관리 시스템 저장소(CVS, Git,[7] MercurialSubversion 중 선택[6])에 저장된 소스 파일.

사용법

사소한 업무는 아니지만 전문성이 필요 없는 소프트웨어 설치 후 소스코드를 사전 처리하고 이를 표시하도록 LXR을 구성해야 한다.

다른 소스 코드 버전은 하위 디렉터리로 구현된다.
대체 버전은 소스 코드를 버전 관리 시스템에 저장한다.

두 번째 단계에서 코드가 색인화된다. 식별자가 수집되고 데이터 베이스에 그 위치가 입력된다.재색인은 소스 코드가 수정되거나 새 버전이 추가된 경우에만 필요하다.

이후 소스 코드에 해당하는 URL로 웹 브라우저를 시작하고 식별자와 연결된 하이퍼링크를 통해 파일을 탐색하는 것이 전부다.

기능 및 제한

소스 코드는 엑수버런트 ctags가 다룰 수 있는 어떤 언어로도 쓸 수 있지만 파서들은 똑같이 미세하게 분류되지 않는다.

동일한 파일의 두 버전을 시각적으로 향상된 차이점과 나란히 비교할 수 있다(LXR에서 실행한 diff 명령을 통해).

변수의 하이퍼링크 외에도 양식은 사용자가 입력한 식별자를 검색할 수 있다.

인덱싱 단계 제한을 해결하기 위해 모든 문자 시퀀스를 광범위한 원본 파일 트래버설 비용으로 검색할 수 있다(전체 텍스트).

LXR 제한은 주로 Exuberant ctags 지원 도구의 제한 사항이다.그러나 난관의 주요 원인은 기본적으로 파일에 대한 잘못된 액세스 권한에서 비롯된다.

또 다른 제한사항은 의미 분석을 컴파일 단계로 수행하는 다른 솔루션과 대조적으로 정적 코드 분석만 수행하는 설계 선택에서 발생한다.

고급 사용자는 페이지 템플릿 사용자 정의(HTML로 작성)와 계단식 스타일시트(CSS)를 통해 LXR 레이아웃과 렌더링을 변경할 수 있다.

LXR 컬렉션

(아카이브에는 디렉토리 구조만 표시 - 2016년 3월)
(아카이브에는 디렉토리 구조만 표시 - 2016년 3월)
(아카이브 사용 불가 - 2016년 3월)

참고 항목

참조

  1. ^ a b SourceForge의 CVS 저장소에 있는 날짜에 따름
  2. ^ "LXR Cross Referencer Open Source Project on Open Hub: Contributors".
  3. ^ Kamran Soomro (June 1, 2007). "Read source code the HTML way".
  4. ^ "Dehydra". MDN Web Docs. Retrieved 2020-11-13.
  5. ^ 유한 상태 자동화는 대개 역추적 없이 텍스트(또는 소스 코드)를 왼쪽에서 오른쪽으로 스캔한다.Perl에서 정규식을 사용하면 이미 처리된 조각에 가짜로 대체된 텍스트를 여러 번 스캔할 수 있다.
  6. ^ 처음에는 BitKeeper를 사용할 수 있었지만, 라이선스가 독점화되면서 (2005년경) 지원이 중단되었다.
  7. ^ Git 지원은 릴리스 1.0에서 수정되었다.

외부 링크

LXRng(포크)