KI Quality Gate: comment ChatGPT et l'IA améliorent la qualité du code

Une solution logicielle doit toujours rester en mouvement. C’est pourquoi, dans cet article de blog, nous abordons le sujet des Quality Gates et de l’IA. La question de la maintenance et de l’évolution continue est tout aussi importante que l’exploitation quotidienne. À travers différentes approches (organisation d’équipe, état d’esprit de l’entreprise), on cherche souvent à réduire au maximum les cycles de livraison. De telles dynamiques ne peuvent fonctionner de manière fiable que s’il existe un haut degré d’automatisation et de transparence. Un élément clé dans ce contexte est le Quality Gate, qui contribue à améliorer la qualité du code.

Que signifie Quality Gate ?

Un Quality Gate définit à l’avance si les prochaines étapes d’un projet sont validées ou non, sur la base de critères de qualité clairement établis. Mais comment évaluer la qualité du code dans ce contexte ? De manière générale, de nombreuses techniques regroupées sous le terme « Clean Code » tournent autour d’une question centrale : comment une équipe de développeurs peut-elle écrire du code de manière à ce que de nouveaux membres puissent être opérationnels immédiatement, sans longue phase d’intégration ? En plus de l’analyse statique du code (complexité, heuristiques de bugs, etc. – mot-clé SonarQube), la revue de code constitue une autre solution possible.

Qui est responsable des revues de code ?

Les revues de code permettent le transfert de savoir-faire des collaborateurs expérimentés vers les nouveaux membres de l’équipe.

Elles sont toutefois souvent très chronophages. C’est pourquoi cette tâche devrait principalement être assurée par les architectes logiciels.

Voyons à quoi ressemble une pipeline de déploiement classique :

  1. Écriture du code & commit
  2. Déclenchement du build (tests unitaires, tests d’acceptation, tests d’intégration, ...)
  3. Quality Gate (standards de clean code, sécurité, licences, ...)


Ce n’est qu’après ces étapes que la revue de code intervient.

Code Review & Quality Gate

Le rôle de l’IA

Essayons une interface de complétion de code d’OpenAI, capable de soutenir les contrôles de qualité du code. Notre projet d’exemple contient deux méthodes différentes : une en TypeScript et une en Java. L’exemple TypeScript est une simple fonction d’addition :

function add(x, y) { return x + y; }

La classe Java, en revanche, est plutôt difficile à comprendre et utilise des conventions de nommage qui ne sont pas très parlantes :


import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class SomeClass {

    static boolean sA(final String s) {

        String bKram = s;
        String sFe = fo(bKram);
        return bKram.equals(sFe);
    }

    static String fo(String bKram) {
        List<String> faef = Stream.of(bKram)
            .map(c -> c)
            .collect(Collectors.toList());

        StringBuilder dram = new StringBuilder(bKram).reverse();

        if (Objects.nonNull(faef)) {
            return dram.toString();
        }
        return null;
    }
}
                

Tentons notre chance :

const question = "Can you write unit tests for this code:";

Nous utilisons l’API createCompletion d’OpenAI :


const completion = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: question + fileContents,
  temperature: 0,
  max_tokens: 3600,
});
                

Et voilà le résultat :


@Test
public void testSA() {
    String s = "test";
    assertTrue(SomeClass.sA(s));
}

@Test
public void testFo() {
    String s = "test";
    assertEquals("tset", SomeClass.fo(s));
}
                

Même si le fonctionnement exact de la classe reste peu clair, sa logique a été extraite – en quelques secondes seulement.


describe('add function', () => {
  it('should add two numbers', () => {
    expect(add(1, 2)).toEqual(3);
  });
});
            

Dans ce processus, OpenAI – ChatGPT reconnaît qu’il s’agit de palindromes. L’intelligence artificielle comprend ainsi l’objectif de la fonction :

IA et son utilité pour les Quality Gates

AI Quality Gate

Revenons au sujet principal et analysons l’intérêt de l’IA pour les Quality Gates. Un nouveau code signifie-t-il automatiquement qu’une IA peut écrire des tests pour celui-ci ?
Si une méthode est concise et présente peu d’effets de bord, elle est probablement interprétable et testable par une IA.
Cela signifie également que l’IA peut servir de filtre pour mettre en évidence les parties du code nécessitant une revue humaine.
Avec l’intelligence artificielle, notre pipeline ressemble désormais à ceci :

  1. Écriture du code & commit
  2. Déclenchement du build (tests unitaires, tests d’acceptation, tests d’intégration, ...)
  3. Revue de code par IA
  4. Quality Gate (standards de clean code, sécurité, licences, ...)

IA dans les pipelines de déploiement

De cette manière, l’IA peut être intégrée aux pipelines de déploiement et utilisée également pour des aspects de sécurité liés au code. Il en résulte une amélioration de la stabilité, de la maintenabilité et de la qualité globale des logiciels livrés. Le principal bénéfice de l’utilisation de l’IA dans les Quality Gates est une augmentation significative de la productivité au sein du cycle de développement.

Back to top

Sprache: