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 .
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.
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:
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.
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 .