În prima secțiune vom discuta despre comentariile din codul sursa si cum se documenteaza un API. In a doua parte vom vorbi de Continuous Integration, in ce consta si moduri de a analiza codul.
Comentariile sunt printre cele mai folosite si abuzate moduri de a documenta codul. Acestea pot fi folosite pentru a ascunde diverse imperfectiuni ale codul sau proiectului ca nume neinspirate ale variabilelor sau functiilor, design slab al codului sau lipsa uneltelor de proces (sistem de versionare, issue tracking etc.). Comentariile pot fi utile pentru a explica de ce este facut un lucru in cod, pentru a documenta un design bazat pe pseudo-cod sau pentru a referentia lucruri conexe.
// TODO
Uneltele de documentare a API-urilor au devenit extrem de comune in prezent. Acestea:
Una dintre cele mai cunoscute unelte de documentare a API-urilor pentru ca este inclusa in distributia standard de Java. Comentariile specifice JavaDoc:
/** … */
, implicit procesate ca si comentarii de compilator@author <authorName>
, @param <name> <description>
, @return <description>
etc.Pentru a genera documentatia folosind JavaDoc se poate folosi:
javadoc -d destinationDir -sourcepath sourceCodeDir \
-link http://docs.oracle.com/javase/7/docs/api/
Exemplu de clasa Java documentata:
Pe langa verificarea functionalitatii codului prin testare, un alt mod de a cuantifica calitatea/performanta acestuia este prin a utiliza unelte de analiza. Aceste unelte pot face:
In cadrul Continuous integration practicile de version control, compilarea si testarea automata sunt combinate astfel incat schimbarile care ajung in repository-ul de version control sunt automat rebuild-ate, testate si regenerate rapoartele aferente. Este de preferat sa se faca aceste lucruri complet sau partial pentru a reduce riscul ca schimbarile noi sa introduca probleme ca erori de compilare sau bug-uri.
Pentru ca sunt multi pasi necesari in a executa un plan de Continuous Integration, durata poate sa fie extrem de mare. Datorita acestui fapt, de fiecare data cand se introduc schimbari noi se va prefera rularea unui plan redus(de exemplu care include compilarea si analiza statica, dar nu include testare si analiza dinamica). Planul complet poate sa fie rulat ocazional, cum ar fi peste noapte, cand poate sa dureze mult mai mult.
Pentru a putea beneficia de Continuous Integration, un proiect trebuie sa aiba mai multe caracteristici:
Avantaje:
Dezavantaje:
Un server de Continuous Integration este o masina accesibila din retea care:
Un CI runner (sau nod) e un proces pe o masina care:
Cand un runner este notificat de serverul de CI, acesta:
GitHub furnizeaza o solutie integrata de Continuous Integration printr-un serviciu numit “Actions”.
Acest serviciu poate fi accesat din pagina proiectului, selectand tab-ul Actions, de exemplu.
Pentru a creea un Action nou, este necesara creearea unui fisier de workflow la calea .github/workflows/
din repository. Acest lucru se poate face atat local cat si din GitHub. Fisierul de workflow are extensia .yml
pentru ca foloseste sintaxa YAML si contine indicatii legate de cand si ce este executat in cadrul unui action. Un exemplu de fisier de workflow care face build la un proiect Java cu Apache Ant gasiti aici.
Fisierele ce pot rezulta in urma rularii anumitor pasi pot fi publicate ca artefacte si in cadrul GitHub Actions. Pentru a face acest lucru, puteti folosi urmatoarea sintaxa, dupa pasul de generare al fisierului dorit:
- name: Upload a Build Artifact uses: actions/upload-artifact@v3.0.0 with: # Artifact name name: # optional # Destination path path: # optional
public Node getNextNode(Node currentNode);
in clasa CircularLinkedList. Aceasta va intoarce urmatorul nod din currentNode. Documentati aceasta functie.
build.xml
. Acesta este un fisier de build pentru Apache Ant (unealta folosita pentru a face toate procesele legate de compilarea si rularea aplicatiilor Java). Acest fisier contine target-uri pentru a face build si run la aplicatia proiectului, cat si generare a documentatiei folosind JavaDoc. Aceste target-uri vor trebui folosite in cadrul Action-ului/fisierului de workflow din GitHub. Puteti verifica local aceste target-uri din IntelliJ din Build→Build with Ant… daca aveti fisierul .xml in radacina proiectului. Target-urile se adauga la finalul comenzii de build din exemplu.