PyLXR

Nume și descriere proiect

PyLXR este o aplicație care oferă posibilitatea navigării codului printr-o interfață web. Aplicația este o reimplementare LXR sau lxrng dar scrisă în Python. Aplicațiile actuale scrise în Perl sunt dificil de înțeles și configurat. Considerăm că un limbaj precum Python poate oferi un timp de dezvoltare rapid și o mentenanță facilă a codului.

Categorie aplicație

  • Software engineering (parsing, căutare, baze de date, interfață web)

Aplicații similare

Obiective

  • Se dorește obținerea unei aplicații care să permită acces prin intermediul interfeței web la codul sursă al unui program.
  • Pentru moment este vizat limbajul C.
  • Se dorește căutarea atât după numele funcției sau variabilei (tag-search) cât și după nume de fișiere (file search) sau șiruri de caractere (freetext search).
  • Aplicația va fi implementată în Python.

Grup țintă

  • Dezvoltatori de programe, preponderent proiecte FOSS. Aplicații de source-code browsing precum ctags, cscope, GNU GLOBAL și cele care oferă interfață web precum LXR, lxrng sau GNU GLOBAL sunt utile pentru parcugerea rapidă și înțelegerea codului.

Limbaje de programare/biblioteci/aplicații/framework-uri folosite

  • Limbaj principal: Python
  • ctags, cscope sau GNU GLOBAL pentru obținerea backendului de tag-uri
  • Aplicație de indexare a codului care să permită căutarea rapidă
  • Bază de date (de preferat SQLite)
  • Python (CGI sau mod_python) pentru interfața web

Cunoștințe necesare

  • Cunoștințe de bază de progamare
  • Cunoștințe medii de programare C
  • Cunoștințe de algoritmi de căutare și sortare
  • Deprinderi în utilizarea unui sistem Unix (linia de comandă)
  • Deprinderi de folosire a tool-urilor principale de programare (editor, compilator, debugger)

Cunoștințe recomandate

  • Cunoștințe de bază Python
  • Cunoștințe de bază de web programming
  • Cunoștințe de bază de baze de date
  • Deprinderi de utilizare a ctags/csope
  • Folosirea unui sistem de versioning (CVS, SVN, Git, Darcs etc.)

Cunoștințe/abilități dobândite

  • Cunoștințe de software engineering, integrare de aplicații, folosirea unor aplicații deja existente
  • Cunoștințe medii/avansate de programare în Python
  • Cunoștințe de documentare a unui proiect de amploare
  • Cunoștințe de lucru în echipă, colaborare, comunicare
  • Deprinderi de folosire avansată a unui sistem Unix
  • Deprinderi de configurare/administrare a unui server web și a unui sistem de baze de date

Plan/roadmap pe termen scurt

  • 3-4 zile: training/acomodare cu limbajul Python, aplicațiile folosite, baze de date, proiectarea arhitecturii aplicației, proiectarea unui sistem de logging a informațiilor (probabil folosind Python logging
  • 1 săptămână: integrarea ctags/cscope/GNU GLOBAL în Python, proiectarea și configurarea bazei de date, proiectarea cazurilor de test
  • 1 săptămână: integrarea facilităților de căutare, aplicație de test în linia de comandă, proiectarea cazurilor de test
  • 3-4 zile: testarea aplicației în stadiul actual (integrare sistem de source code tagging și căutare în baza de date)

Plan pe termen mediu. Continuarea colaborării

  • Proiectarea unui fișier de configurare pentru aplicație (loc cod sursă, informații bază de date, informații despre publicare). Integrarea fișierului de configurare în aplicație
  • Definirea unui API de comunicare cu aplicația (văzută ca un backend). Diversele interfețe de folosire (CLI, GUI, WebUI) vor fi văzute ca front-end
  • Proiectarea și implementarea interfeței web folosite de aplicației
  • Integrarea interfeței web cu aplicația
  • Testarea aplicației
  • Installer pentru aplicație (pachet)

Draft arhitectură. Componente principale

Arhitectură PyLXR

Arhitectură PyLXR

Resurse disponibile

  • Vom folosi un proiect Redmine și repository Git pentru dezvoltare, testare și planificare. Instanța Redmine va fi creată în momentul pornirii proiectului.
  • Pentru comunicare vom folosi o listă de discuții. Lista de discuții va fi creată în momentul pornirii proiectului.
  • Pentru lucru efectiv vom folosi sala EG106.

Echipă

  • Razvan Deaconescu
  • Elena Burceanu
  • Sima Mihai Cotizo
  • Alexandru Cepoi
  • Davidoaia Bogdan-Mihai

  • Logo Stagii pe Bune