• 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 12/09/2019

Utilisez Eclipse pour envoyer des corrections sur GitHub

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Maintenant que vous avez un compte GitHub et que vous savez cloner un projet dans Eclipse, voyons comment contribuer à un projet GitHub.

Forker, cloner et importer un projet bogué dans Eclipse

Retournez sur la page GitHub, et si vous n'êtes pas déjà authentifié, connectez-vous avec votre compte précédemment créé. Allons voir un projet d'exemple que nous allons utiliser pour corriger du code.

Explorer le projet

Avez-vous remarqué qu'il s'agit d'un projet Maven ? Il y a en effet un fichier pom.xml à la racine. Si ce n'est pas clair, n'hésitez à retourner à la partie 2 pour revoir la structuration d'un projet Maven. Le projet contient un répertoire de sources src, et une documentation succincte sous la forme d'un fichier README.md.

Il y a deux problèmes. Apparemment, quelque part dans le code se trouve une boucle infinie ; nous allons devoir jouer les détectives pour comprendre pourquoi ! Un second problème concernerait une erreur à l'exécution. Nous allons exploiter nos compétences en débogage pour comprendre ce qui se passe. Mais avant cela, il faut nous créer une copie du projet sur notre propre espace GitHub : c'est le fork !

Le projet d'exemple
Le projet d'exemple

Forker le projet

Qu'est-ce que le fork ?

Le fork est une action dans GitHub qui permet de faire une copie d'un projet officiel sur votre espace GitHub. Cela permet d'apporter des modifications ou des évolutions à un projet de votre côté, quand on n'a pas les droits de modifier le projet officiel.

Pourquoi je ne peux pas apporter des modifications au projet officiel ? Il est bien open source ?

Un projet open source est un projet dont le code source est lisible par tout le monde. Cela ne signifie pas que tout le monde a le droit de modifier le code d'un projet ! Ce n'est pas comme Wikipedia où tout le monde peut apporter des modifications. Par contre, en principe, tout le monde a le droit de contribuer, via le mécanisme de pull request que nous allons voir un peu plus loin.

Quelle est la différence entre forker et cloner ?

Quand on forke, on crée une copie sur un autre espace GitHub. Quand on clone, on crée une copie sur son propre ordinateur, et cette copie n'est visible par personne d'autre que vous. La différence est très importante. Pour travailler avec d'autres développeurs, et faire des pull requests, c'est bien un fork qu'il nous faut !

Forkez dans GitHub

Depuis la page du projet d'exemple, cliquez sur le bouton Fork en haut à droite.

Voilà, c'est fait ! Rien de plus simple. Remarquez que l'URL du projet a changé. Vous êtes dans votre espace, le projet a le même nom, mais vous voyez en haut à gauche de l'écran l'identifiant de votre espace, et une indication que le projet a été forké depuis un autre dépôt.

Le projet forké dans votre espace
Le projet forké dans votre espace

Remarquez à droite du bouton Fork : il y a un nombre. Il s'agit du nombre de fois que le projet a été forké sur GitHub ! Nous sommes maintenant prêts pour cloner cette copie de projet !

Allez sur le côté droit de la page, cliquez sur le lien de couleur verte Clone or download et copiez-le en cliquant sur le bouton presse-papier à droite.

Clonez et importez dans Eclipse

Une fois que votre projet est forké, le travail va s'effectuer dans Eclipse pour cloner, corriger, et envoyer les corrections. Le screencast ci-dessous détaille l'ensemble des actions à faire.

Pour rappel, cloner un repository signifie en créer une copie que vous allez télécharger sur votre ordinateur :

  • depuis la page de projet forké, cliquez sur Clone or download en vert, puis sur le petit bouton à droite de l'adresse qui s'affiche. Cela permet de copier l'URL du projet dans le presse-papier ;

  • retournez dans Eclipse et clonez ce projet. Nous avons vu comment cloner un projet dans Eclipse au chapitre précédent. Dans la fenêtre Git Repositories, vous pouvez aussi cliquer sur le bouton droit dans un espace vide, et choisir Paste Repository Path or URL. Ensuite vous devez savoir comment aller jusqu'au bout de l'assistant ;

  • une fois le projet cloné, il apparaît dans la fenêtre Git Repositories. Cliquez maintenant sur le projet avec le bouton droit, et choisissez Import Projects... ;

  • regardez le contenu de l'assistant d'import. Il a détecté que c'était un projet Maven. Vous pouvez directement cliquer sur Finish sans rien modifier ;

Import d'un projet Git dans Eclipse
Import d'un projet Git dans Eclipse
  • changez de perspective et passez à la perspective Java. Pour rappel, il faut aller dans le menu Window -> Perspective -> Open Perspective -> Other...

Votre projet est bien importé dans Eclipse.

Projet d'exemple dans Eclipse
Projet d'exemple dans Eclipse

Maintenant, c'est parti pour la correction de bugs, et la diffusion de ces corrections sur GitHub !

Corrigez et diffusez vos corrections

Ouvrez le projet et corrigez des erreurs de syntaxe

Pour ouvrir le projet, cliquez deux fois sur le projet, puis sur src/main/java, puis sur le paquetage, et enfin sur le seul fichier source disponible. Les croix rouges symbolisent les emplacements des erreurs détectées, que ce soit au niveau des paquetages/fichiers dans le package explorer, ou bien les lignes exactes dans l'éditeur de code.

Recherche d’erreurs de syntaxe
Recherche d’erreurs de syntaxe

Vérifions toutes ces erreurs une par une. Si vous cliquez sur une croix rouge à côté des numéros de ligne, vous aurez un indice sur le problème.

On trouve une croix aux lignes 7 et 8. Voici les problèmes qui se trouvaient dans GitHub :

  • ligne 7 : la croix indique qu'il ne reconnaît pas la variable i. Il faut déclarer à la ligne 6 la variable i et non Index ! (Ou alors il faut renommer i en "index" dans la ligne 7, au choix) ;

  • ligne 8 : le caractère: est inattendu ici ; il faut mettre un caractère ; pour terminer la ligne. Remplaçons : par ;;

  • ligne 7 à nouveau : une nouvelle erreur apparaît. La variable i ne peut pas changer de valeur. Car elle est déclarée à la ligne 6 final. Supprimons le mot clé "final" à la ligne 6.

Voici le code corrigé !

Erreurs de syntaxe corrigées : plus de croix rouges
Erreurs de syntaxe corrigées : plus de croix rouges

Lançons-le pour voir comment ça se passe ! Mince, on dirait que le résultat n’aboutit pas. C’est ce qu’on appelle une boucle infinie. Nous arrivons au problème à l'exécution.

Corrigez un problème de boucle infinie

Une boucle infinie est une erreur d'exécution. Cela signifie que le code va compiler parce que la syntaxe est correcte, mais que quand on exécute le programme, le comportement n'est pas celui souhaité, et ici, le programme reste bloqué sans se terminer. C’est le moment d’utiliser un débogueur.

Récapitulons comment nous avons réglé notre problème de boucle infinie :

  • mettez un breakpoint à la ligne 7 et lancez le déboggage ;

  • cliquez sur The Step Into et Step Over ;

  • au fur et à mesure de votre progression dans le code, vous pouvez voir à quoi est égal i. Si vous voyez que i >= 0, à quel moment la boucle for se termine-t-elle ? Bonne question, puisque si elle est écrite comme ça, cette boucle ne finira jamais ! Vous devez donc l’interrompre ;

  • arrêtez l'exécution du programme en cliquant sur le carré rouge en haut à gauche.

Nous allons lui faire répéter la ligne de code trois fois. Pour ça, changez la ligne de déclaration de la boucle for en for (i=0; i<3; i++) {

Boucle infinie corrigée
Boucle infinie corrigée

Super, le problème de boucle infinie est réglé !

Envoyez vos corrections sur GitHub

Maintenant que nous avons corrigé les problèmes, envoyons le code propre sur GitHub !

Vous devez effectuez un commit, c’est-à-dire créer une sauvegarde des changements que vous avez opérés dans HelloJava.java avec Git. Cela va créer une ligne d'historique avec votre nom et un commentaire que vous aurez saisi. Ensuite, vous allez effectuer un push, c'est-à-dire envoyer ce nouvel historique à GitHub.

Faites un clic droit sur Project → Team → Commit. Vous allez voir que le fichier qui a changé apparaît dans l’onglet Git Staging. Si ce n’est pas le cas, cliquez sur le signe + vert. Les fichiers modifiés devraient maintenant apparaître dans la fenêtre Staged Changes. Ici, Eclipse vous permet d'effectuer le commit et de push sur GitHub en une seule étape. Indiquez un message dans l'encart Commit Message, c'est obligatoire, afin d'expliquer en quelques mots quelles sont les modifications effectuées. Puis cliquez sur Commit and Push...

Commit et push avec Eclipse
Commit et push avec Eclipse

Cliquez sur OK dans toutes les fenêtres. Maintenant, rendez-vous sur github.com et cliquez sur Refresh. Vous devriez voir de nouvelles dates de modification.

Cliquez maintenant sur Compare & Pull Request. Une pull request informe le responsable du projet que vous souhaitez qu'il intègre vos modifications sur son dépôt, le plus souvent le projet officiel. Il est donc notifié et peut vérifier votre travail. Il est donc important d’ajouter un message détaillant les informations qui ont été modifiées.

Ci-dessous, vous trouverez une pull request avec description des modifications à HelloBugs.java.

Création et envoi d’une pull request avec description des corrections
Création et envoi d’une pull request avec description des corrections

Une fois cette pull request effectuée, le responsable du projet officiel peut intégrer les modifications à la master branch.

Félicitations, vous avez officiellement contribué à un projet open source ! Vous pouvez aussi utiliser ce processus quand vous travaillez avec une équipe de développeurs sur un projet Java.

En résumé

Vous savez maintenant :

  • trouver et corriger des erreurs basiques dans du code ;

  • effectuer un commit de vos modifications et push sur GitHub ;

  • effectuer une pull request pour notifier un responsable de projet de vos modifications.

Exemple de certificat de réussite
Exemple de certificat de réussite