# Revisió de codi

La revisió de codi és un examen sistemàtic (normalment conegut com a Avaluació d'experts) del codi font d'un programa. Està orientat a trobar i reparar errors passats per alt en la primera fase de desenvolupament, millorant tant la qualitat del programari com les habilitats del programador.
Les revisions són fetes de diverses maneres com la programació en parella, inspeccions informals i formals. És l'última etapa del procés de l'enginyeria de programari.

## Introducció

La revisió de codi pot sovint trobar i eliminar vulnerabilitats comuns com exploits de cadena de caràcters, condicions de carrera, vessaments de memòria i sobrecàrrega de búffers, millorant així la seguretat del programari. Els repositoris de programari en línia com ara Git, Mercurial o altres permeten a grups d'individus col·laborar en la revisió del codi. A més, eines específiques per la revisió de codi col·laborativa poden facilitar el procés de correcció.
La revisió de codi automatitzada disminueix la dificultat de revisar grans trossos de codi sistematitzant la cerca de vulnerabilitats conegudes. Un estudi del 2012 realitzat per VDC Research estima que un 17.6% dels enginyers de programari residents utilitza eines automatitzades per a la revisió de codi i un 23.7% espera utilitzar-les en 2 anys.
L'anàlisi realitzat per Capers Jones sobre 12,000 projectes de desenvolupament de programari mostren que la taxa de descobriment d'errors de les inspeccions formals està entre el 60-65%. Per a les inspeccions informals, la xifra és de menys del 50%. La taxa latent de descobriment de defectes per a la majoria de mètodes de prova és del 30%.
Les taxes normals de revisió de codi s'acosten a les 150 línies de codi per hora. Inspeccionar i revisar-ne més d'un centenar de línies de codi per hora pot ser massa precipitat per a trobar errors.
Els tipus de defectes detectats en revisions de codi també han estat estudiats. Estudis empírics proven que més del 75% de defectes en la revisió de codi afecta a la capacitat d'evolució més que a la funcionalitat, fent que les revisions de codi siguin una eina excel·lent per a les companyies amb productes de llarga estada o cicles de vida de sistema.

## Tipus

Les pràctiques de revisió de codi es divideixen en dues categories: revisió de codi formal i revisió de codi lleugera.
La revisió de codi formal, com ara una inspecció de Fagan, requereix un procés cuidat i detallat amb múltiples participants i múltiples fases. La revisió de codi formal és el mètode tradicional, en el qual els desenvolupadors de programari assisteixen a una sèrie de trobades i revisen el codi línia per línia, normalment utilitzant còpies impreses del material. Les inspeccions formals són fetes en profunditat i han sigut efectives en la cerca de defectes de codi sota revisió.
Les revisions de codi lleugeres requereixen menys supervisió que les revisions de codi formal, tot i que poden ser igual d'efectives quan són realitzades correctament. Són conduïdes com a part del procés de desenvolupament:
* Over-the-shoulder – un programador vigila a l'altre mentre va picant codi.
* Email pass-around – el sistema d'administració de codi font envia un email als revisors amb el codi automàticament quan es confirma un canvi.
* Pair programming – dos autors desenvolupen codi junts a la mateixa estació de treball.
* Tool-assisted code review – Autors i revisors utilitzen eines de programari, informals com ara Pastebin i IRC o eines especialitzades per a revisió de codi.
Algunes d'aquests tipus de revisió de codi són coneguts com a guia(informal) o crítica(ràpida i informal).
Molts dels equips que eviten les revisions de codi formals i tradicionals utilitzen una de les maneres de revisió de codi lleugera com a part del seu procés de desenvolupament. Un estudi publicat en el llibre Best Kept Secrets of Peer Code Review va trobar que les revisions de codi lleugeres trobaven tants errors de codi com les revisions formals, però de manera més ràpida i efectiva.

## Crítica

Històricament, les revisions de codi formals han requerit una inversió considerable en la preparació per al moment de la revisió i el temps d'execució.
L'ús de les eines d'anàlisi de codi poden ajudar a aquesta activitat. Especialment les eines integrades en els entorns de desenvolupament perquè proveeixen una retroacció directa als programadors que compleixen amb els mètodes de desenvolupament estàndards.

## Referències

* 1 2 Kolawa, Adam. Automated Defect Prevention: Best Practices in Software Management. ISBN 978-0-470-04212-0.
* ↑ «Embedded Software: Facts, Figures, and Future». [Consulta: 7 octubre 2015].
* ↑ «A Guide to Code Inspections». Jack Ganssle. [Consulta: 7 octubre 2015].
* ↑ «[http://lib.tkk.fi/Diss/2009/isbn9789512298570/article5.pdf What Types of Defects Are Really Discovered in Code Reviews?]». Mika V. Mäntylä i Casper Lassenius. [Consulta: 7 octubre 2015].