Automatisation des tâches et débogage avec des outils basés sur l’IA
Cette introduction à l’automatisation des tâches et au débogage avec les outils d’IA est exclue du livre Outils d’IA générative pour les développeurs : un guide pratiquedisponible dès maintenant sur SitePoint Premium.
Automatisation des tâches
L’une des façons dont les ingénieurs peuvent utiliser les outils basés sur l’IA consiste à automatiser les tâches. De nombreuses tâches banales et répétitives peuvent être automatisées à l’aide d’assistants de codage IA.
Par exemple, nous pouvons demander à notre assistant IA de générer du code passe-partout – pour les tâches courantes telles que la création d’une API REST de base avec des routes, des contrôleurs, des modèles, etc. Cela permet de gagner du temps lors de la configuration initiale d’un squelette de projet.
En utilisant Codeium, voici un exemple de la façon dont nous pouvons générer du code passe-partout.
Nous pouvons également utiliser Cody pour générer du code passe-partout.
Ici, nous pouvons voir qu’en utilisant un assistant de codage IA comme Codeium ou Cody, nous sommes capables de créer rapidement un serveur Express simple, suffisant pour démarrer avec la structure de base et les itinéraires définis. Pour ce faire, nous devons cliquer sur l’icône Codeium, qui doit se trouver parmi la liste des extensions sur le côté gauche de notre éditeur (ou à droite, selon l’endroit où nous avons placé les icônes). Cela ouvre l’interface de discussion Codeium qui nous permet de communiquer avec le serveur Codeium. C’est beaucoup plus rapide que d’écrire manuellement tout le code passe-partout à partir de zéro.
Voici ce que Codeium nous donne :
const express = require('express');
const app = express();
const port = 3000;
app.get("https://www.sitepoint.com/", (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
En utilisant Cody, voici ce que nous obtenons :
const express = require('express');
const app = express();
app.get("https://www.sitepoint.com/", (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
Demandons maintenant à notre assistant IA de écrire des tests. Les outils d’IA peuvent également nous aider à générer des cas de test comme point de départ pour tester notre code. Cela garantit que le code est testé dès le début, ce qui est important pour la qualité et pour éviter les bogues. Cela peut aider les ingénieurs qui apprennent encore à écrire des tests et également contribuer à introduire des pratiques de développement pilotées par les tests dans une base de code sans tests.
Voici un exemple de la façon dont nous pouvons procéder en utilisant GitHub Copilot Labs.
Nous pouvons également générer des tests en utilisant Codeium.
Dans cet exemple, nous voyons la fonctionnalité de test Copilot Labs et Codeium en action. Pour que cela fonctionne, nous devons lui fournir une fonction permettant de tester :
function milliSecondsToDayHourMin = (timeRemaining) => {
let dayInMilliseconds = 86400000;
let hourInMilliseconds = 3600000;
let day = Math.floor(timeRemaining / dayInMilliseconds);
let hour = Math.floor(
(timeRemaining - day * dayInMilliseconds) / hourInMilliseconds
);
let min = Math.round(
(timeRemaining - day * dayInMilliseconds - hour * hourInMilliseconds) /
60000
);
let seconds = Math.round(timeRemaining - min / 60);
const pad = function (num) {
return num < 10 ? "0" + num : num;
};
if (min === 60) {
hour++;
min = 0;
}
if (hour === 24) {
day++;
hour = 0;
}
return `${day} : ${pad(hour)} : ${pad(min)}: ${pad(seconds)}`;
};
Après cela, il est capable de générer des cas de test pour couvrir différents scénarios, tels que les cas valides, invalides et extrêmes. Le scénario de test généré peut constituer un bon point de départ pour les développeurs pour mettre en œuvre des tests appropriés.
Voici ce que Copilot nous donne :
describe('test Untitled_1', function() {
it('test Untitled-1.milliSecondsToDayHourMin', function(done) {
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(0), '0 : 00 : 00: 00');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(60000), '0 : 00 : 01: 01');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(3600000), '0 : 01 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000), '1 : 00 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(172800000), '2 : 00 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(259200000), '3 : 00 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(604800000), '7 : 00 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(604800000), '7 : 00 : 00: 60');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000 + 3600000 + 60000), '1 : 01 : 01: 01');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000 + 3600000 + 60000 + 1000), '1 : 01 : 01: 01');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000 + 3600000 + 60000 + 1000), '1 : 01 : 01: 01');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000 + 3600000 + 60000 + 1000), '1 : 01 : 01: 01');
assert.deepEqual(Untitled_1.milliSecondsToDayHourMin(86400000 + 3600000 + 60000 + 1000), '1 : 01 : 01: 01');
done();
})
})
Et voici ce que Codeium nous donne :
test("milliSecondsToDayHourMin - should return 0 : 00 : 00 : 00 for 0 milliseconds", () => {
expect(milliSecondsToDayHourMin(0)).toBe("0 : 00 : 00 : 00");
});
test("milliSecondsToDayHourMin - should return 1 : 00 : 00 : 00 for 86400000 milliseconds", () => {
expect(milliSecondsToDayHourMin(86400000)).toBe("1 : 00 : 00 : 00");
});
test("milliSecondsToDayHourMin - should return 1 : 01 : 00 : 00 for 90000000 milliseconds", () => {
expect(milliSecondsToDayHourMin(90000000)).toBe("1 : 01 : 00 : 00");
});
test("milliSecondsToDayHourMin - should return 1 : 01 : 01 : 00 for 90060000 milliseconds", () => {
expect(milliSecondsToDayHourMin(90060000)).toBe("1 : 01 : 01 : 00");
});
test("milliSecondsToDayHourMin - should return 1 : 01 : 01 : 01 for 90061000 milliseconds", () => {
expect(milliSecondsToDayHourMin(90061000)).toBe("1 : 01 : 01 : 01");
});
Débogage
Les outils basés sur l’IA sont également utiles pour le débogage. Le débogage est l’une des tâches les plus chronophages auxquelles un ingénieur est confronté quotidiennement, quel que soit son niveau d’expérience. L’intégration d’outils d’IA dans le flux de travail de débogage réduit le temps passé à essayer de comprendre ce qui ne va pas.
Voici un exemple de la façon dont nous pouvons déboguer à l’aide de Codeium :
function cleanupFounders() {
const founders = this.orgInfo.founders;
foundeers.map((document) => {
delete document.organisation;
delete document.createdAt;
delete document.updatedAt;
delete document.__v;
});
this.orgInfo.founders = founders;
}
Nous pouvons également utiliser Cody pour déboguer le code.
Et voici un autre exemple de la façon dont nous pouvons le faire en utilisant GitHub Copilot Labs.
Nous pouvons voir ci-dessus que Codeium signale un problème dans le code en comprenant d’abord le founders
déclaration de variable et recherche de la faute de frappe dans le code. Il produit ensuite une version fonctionnelle du code (sans faute de frappe) tout en expliquant également la véritable intention de la fonction.
Voici le code corrigé de Codeium :
function cleanupFounders() {
const founders = this.orgInfo.founders;
founders.map((document) => {
delete document.organisation;
delete document.createdAt;
delete document.updatedAt;
delete document.__v;
});
this.orgInfo.founders = founders;
}
En utilisant Cody, nous sommes également en mesure de déboguer le code en lui fournissant d’abord une fonction de débogage. Il produit ensuite une version fonctionnelle du code tout en expliquant la véritable intention de la fonction. Il va également plus loin en suggérant des idées supplémentaires pour améliorer le code.
Lorsque vous utilisez la fonctionnalité de débogage dans Copilot Labs, nous devons fournir une fonction de débogage. Lorsque nous faisons cela, nous pouvons voir que cela corrige automatiquement notre code et nous donne une version fonctionnelle du code :
function cleanupFounders() {
const founders = this.orgInfo.founders;
this.orgInfo.founders = founders.map((document) => {
delete document.organisation;
delete document.createdAt;
delete document.updatedAt;
delete document.__v;
return document;
});
}
Avec ces outils, le débogage est plus facile, plus rapide et plus efficace. Cependant, même si ces outils peuvent nous aider dans toutes ces tâches, il reste encore à revoir les solutions afin de vérifier la qualité du code. De cette façon, nous passons du temps à apprendre plutôt qu’à déboguer, à rechercher sur Internet et à être frustrés par les bogues de notre code.
Vous souhaitez en savoir plus sur les chatbots, les LLM et autres outils d’IA qui peuvent vous aider dans votre travail de développeur ? Vérifier Outils d’IA générative pour les développeurs : un guide pratiquedisponible dès maintenant sur SitePoint Premium.
Source link