Riferimento incrociato LXR

Riferimento incrociato LXR Descrizione dell'immagine LXR logo 80 pixels.png.

Informazione
Prima versione circa 1994
Ultima versione 2.2.1 (25 marzo 2017)
Depositare sourceforge.net/projects/lxr
Scritto in Perl
Ambiente Cross-platform
Le lingue inglese
genere Indicizzatore e riferimenti incrociati
Licenza GNU GPL
Sito web http://lxr.sourceforge.net http://sourceforge.net/projects/lxr

LXR Cross Referencer , meglio noto come LXR , è un'utilità di indicizzazione e riferimento incrociato del codice sorgente generale che consente la navigazione all'interno del codice sorgente utilizzando la tecnologia web con collegamenti alla definizione e agli usi degli identificatori .

Storico

LXR nasce dall'esigenza di uno strumento che consenta una visione sintetica del kernel Linux durante il suo sviluppo. Tale strumento è tanto più necessario quando la documentazione è assente e il numero di contributori è elevato.

Due studenti norvegesi, interessati all'architettura di Linux, hanno intrapreso la stesura di una piccola utility visualizzando i file che la componevano in un browser web e presentando gli usi delle variabili dopo un semplice click sul nome. Consapevoli dell'interesse di questo software, lo depositarono molto presto (nel 1994?) Su SourceForge.net .

Nel tempo, gli appassionati si sono uniti al team di sviluppo per dare più maturità al codice, senza che il loro numero superi in qualsiasi momento alcune unità. Da questo punto di vista, LXR è tipico della maggior parte dei progetti ospitati su SourceForge.net ma mostra un'eccezionale longevità tra i piccoli progetti.

Uno dei due creatori di LXR ha esplorato nuove tecniche, culminando in LXRng . Questo sviluppo sperimentale non offre tutte le funzioni della versione tradizionale e si discosta in modo significativo dai principi originali di LXR.

Sebbene non sia stata effettuata alcuna comunicazione sullo strumento, LXR è stato citato in articoli su riviste di computer, ad esempio Linux Journal . Tuttavia, una ricerca su Internet mostra l'ambiguità tra lo strumento e il suo utilizzo per visualizzare altri software.

Tecnologia

LXR è minimalista e segue il principio del minimo sforzo.

Il pregiudizio minimalista evita di ricorrere a troppe tecniche diverse. In tal modo, il numero di dipendenze è limitato e il software può funzionare in varie configurazioni senza adattamenti speciali.

Le scelte di progettazione includono la negazione del linguaggio lato client interpretato (come Java o JavaScript ) o la stretta conformità con HTML 4.01.

L'applicazione del principio del minimo sforzo proibisce la programmazione di uno strumento se già esiste (almeno come software libero ).

Ciò ha portato ad utilizzare un browser web per la visualizzazione ( HTML e CSS consentono tutte le fantasie di layout), un database relazionale per memorizzare le definizioni e i riferimenti incrociati e utilità Exuberant ctags  (in) per l'analisi lessico-sintattica dei file sorgenti.

LXR è scritto in Perl , una scelta pratica per gli script CGI , ma non necessariamente adatto per l'analisi lessicale-sintattica.

LXR cerca di essere il meno vincolante possibile:

  1. diverse scelte di database: MySQL , PostgreSQL , SQLite o Oracle ,
  2. scelta per la ricerca full-text tra Glimpse  (en) e SWISH-E  (en) ,
  3. libera scelta del server HTTP fintanto che può eseguire script CGI (le istruzioni sono fornite per Apache , Cherokee , lighttpd , Nginx e thttpd ,
  4. archiviazione dei file sorgenti in una directory reale o in un repository del sistema di controllo della versione (a scelta tra CVS , Git , Mercurial e Subversion ).

uso

Dopo aver installato il software , operazione che, pur non essendo banale, non richiede competenze IT, è necessario preparare il codice sorgente e configurare LXR per visualizzarlo.

Le diverse versioni del codice sorgente vengono presentate come sottodirectory.L'altra possibilità è memorizzare il codice sorgente nel software di controllo della versione.

La seconda fase consiste nell'indicizzazione di questo codice (riconoscimento degli identificatori e inserimento delle loro posizioni in un database). La reindicizzazione è necessaria solo quando il codice sorgente viene modificato o viene aggiunta una nuova versione.

Quindi basta avviare un browser web con un URL corrispondente al codice sorgente per visualizzarlo e sfruttare i collegamenti ipertestuali associati agli identificatori.

Possibilità e limitazioni

Il codice sorgente può essere scritto in qualsiasi lingua riconosciuta da Exuberant ctags , ma non tutti i parser offrono lo stesso livello di finezza.

È possibile confrontare due versioni dello stesso file affiancate con l'identificazione visiva delle differenze (grazie al comando diff emesso da LXR).

Oltre ai collegamenti ipertestuali sotto le variabili , un modulo consente di cercare un identificatore inserito dall'utente.

Infine, per ovviare alle inadeguatezze della fase di indicizzazione, è possibile ricercare una qualunque sequenza di caratteri (in full text) a costo dell'intera ricerca dei file sorgente.

I limiti di LXR sono quelli degli strumenti su cui fa affidamento, principalmente ctags esuberanti. Ma la prima fonte di difficoltà è principalmente dovuta a un'errata assegnazione dei diritti di accesso ai file.

Un altro limite deriva dalla scelta progettuale di eseguire solo un'analisi statica del codice mentre gli strumenti eseguono un'analisi semantica.

Un utente sofisticato può modificare la presentazione di LXR adattando i modelli di pagina (scritti in HTML) e il rendering modificando il foglio di stile CSS .

Collezioni LXR

I collegamenti interrotti di cui sopra sono stati rilevati in agosto 2014.

Vedi anche

Note e riferimenti

  1. Secondo le date del deposito CVS su SourceForge
  2. Vedi le statistiche del progetto LXR su [1]
  3. (in) Leggi il codice sorgente HTML Way, 1 giugno 2007 di Kamran Soomro
  4. Una macchina a stati generalmente esplora un testo (o un programma sorgente) da sinistra a destra senza tornare indietro. L'uso di espressioni regolari in Perl comporta il rischio di più ricerche per indicizzazione del testo con sostituzioni indesiderate su parti già elaborate.
  5. C'era anche la possibilità di usare BitKeeper , ma il monitoraggio è stato interrotto (intorno al 2005) quando la sua licenza ha preso il sopravvento.
  6. funzionamento in Git è stato corretto dalla versione 1.0.

link esterno