Laravel

Un framework qui rend heureux

Voir cette catégorie
Vers le bas
La chasse aux erreurs
Dimanche 21 juillet 2024 13:57

Dans le monde du développement web avec Laravel, la chasse aux erreurs de codage est un aspect crucial de la création d'applications efficaces et sécurisées. Heureusement, il existe de nombreux outils et packages Laravel qui facilitent cette tâche pour les développeurs. Parmi ces outils, nous allons nous concentrer sur un package récent et prometteur : Laravel-error-solutions.

Laravel-error-solutions est un package open source créé par l'équipe de Spatie, bien connue pour ses contributions au monde Laravel. Ce package a été conçu pour simplifier le processus de résolution de problèmes en fournissant des solutions pour les erreurs les plus courantes rencontrées lors du développement avec Laravel. En intégrant Laravel-error-solutions à vos projets, vous pourrez bénéficier d'une panoplie de fonctionnalités pratiques, notamment :

  • Affichage de solutions pour les erreurs courantes, telles que les fautes d'orthographe dans les noms de fonction.
  • Automatisation de certaines solutions qui peuvent être corrigées automatiquement.
  • Prise en charge des solutions générées par IA (il faut ajouter un complément et avoir une clé API).
  • Création de classes de solution personnalisées pour ajouter vos propres solutions.

Laravel-error-solutions est non seulement facile à installer et à utiliser, mais il est également entièrement personnalisable (on peut ajouter ses propres solutions), ce qui permet aux développeurs d'adapter la résolution de problèmes à leurs propres besoins.

Dans cet article, nous explorerons plus en détail les fonctionnalités de Laravel-error-solutions et nous vous guiderons pas à pas dans son installation et son utilisation. À mesure que nous approfondirons cet outil, vous découvrirez comment il peut vous aider à améliorer la productivité de votre développement et à créer des applications Laravel de qualité supérieure.

Les erreurs de codage

L'erreur est humaine, et le développement web n'y échappe pas. Les erreurs de codage peuvent survenir à tout moment dans le processus de développement, et ce, pour de multiples raisons. Identifier et corriger ces erreurs est essentiel pour garantir la qualité et la sécurité des applications web. Dans ce chapitre, nous aborderons les différents types d'erreurs courantes, leurs causes et les stratégies pour les prévenir et les résoudre.

Types d'erreurs courantes

  • Erreurs de syntaxe : Ces erreurs apparaissent lorsque le code ne respecte pas les règles de syntaxe du langage de programmation utilisé.
  • Erreurs sémantiques : Ces erreurs sont causées par une mauvaise utilisation des fonctions, des variables ou des structures de contrôle.
  • Erreurs logiques : Ces erreurs surviennent lorsque l'algorithme est incorrect ou lorsque le code ne produit pas les résultats escomptés.
  • Erreurs de typage : Ces erreurs sont causées par l'utilisation de types de données incorrectes ou incompatibles.

Causes des erreurs de codage

Les erreurs de codage peuvent être attribuées à divers facteurs tels que :
  • Inexpérience : Les débutants peuvent commettre des erreurs en raison de leur manque de connaissances et d'expérience dans le domaine.
  • Fatigue : Travailler pendant de longues périodes sans pause peut entraîner la fatigue et, par conséquent, une augmentation des erreurs.
  • Manque de précision : L'inattention aux détails ou la mauvaise compréhension des besoins du projet peuvent entraîner des erreurs de codage.
  • Dépendance à des outils : L'utilisation de logiciels ou de frameworks obsolètes ou peu fiables peut également contribuer aux erreurs.

Stratégies pour prévenir et résoudre les erreurs de codage

  • Pratiques de codage propres : Suivre les meilleures pratiques de codage, telles que la modularisation, le commentaire du code et l'utilisation de noms de variables clairs, peut aider à réduire les erreurs.
  • Tests automatisés : La mise en place de tests unitaires et d'intégration permet de détecter les erreurs de codage précocement dans le processus de développement.
  • Examens de code par des pairs : La revue du code par des collègues ou des pairs peut contribuer à identifier les erreurs et à améliorer la qualité du code.
  • Apprentissage continu : Maintien à jour avec les dernières technologies et les meilleures pratiques peut aider à réduire les erreurs de codage et à améliorer la productivité.

En conclusion, les erreurs de codage sont inévitables dans le développement web, mais en comprenant leur nature, leurs causes et en appliquant les stratégies appropriées pour les prévenir et les résoudre, nous pouvons améliorer la qualité et la fiabilité de nos applications.

Installation du package

L'installation du package Laravel-error-solutions est classique avec Composer :
composer require spatie/laravel-error-solutions --dev
On peut au besoin publier le fichier de configuration :
php artisan vendor:publish --tag="error-solutions"
Mais ce n'est utile que dans de rares cas. Voici son contenu :
return [
    /**
     * Display solutions on the error page
     */
    'enabled' => true,

    /*
     * Enable or disable runnable solutions.
     *
     * Runnable solutions will only work in local development environments,
     * even if this flag is set to true.
     */
    'enable_runnable_solutions' => true,

    /*
     * The solution providers that should be used to generate solutions.
     *
     * First we load the default PHP and Laravel defaults provided by
     * the base error solution package, then we load the ones you provide here.
     */
    'solution_providers' => [
        'php',
        'laravel',
        // your solution provider classes
    ],

    /*
     * When a key is set, we'll send your exceptions to Open AI to generate a solution
     */
    'open_ai_key' => env('ERROR_SOLUTIONS_OPEN_AI_KEY'),

    /*
     * This class is responsible for determining if a solution is runnable.
     *
     * In most cases, you can use the default implementation.
     */
    'runnable_solutions_guard' => Spatie\LaravelErrorSolutions\Support\RunnableSolutionsGuard::class,
];
Si vous voulez bénéficier de l'aide de l'IA pour trouver des solutions, il faut ajouter cette dépendance :
composer require openai-php/client
Et dans le fichier .env préciser votre clé pour l'API d'OpenAI :
ERROR_SOLUTIONS_OPEN_AI_KEY=votre-clé-ici

Et tout devrait aller... Mais j'ai eu personnellement un souci au départ que j'ai signalé sur Github. Si vous avez le même problème, j'ai proposé ma solution temporaire qui fonctionne plutôt bien.

Cas d'utilisation

Une importation de classe manquante

Voyons un premier cas avec une importation de classe manquante : On voit la solution de base proposée par le package :
You have a missing class import. Try importing this class: App\Models\Survey.
Et celle de l'IA qui en est très proche, juste un peu plus conviviale et précise :
Make sure to import the Survey model at the top of your file using use App\Models\Survey;.

Erreur sur une variable

J'ai ce code :
foreach($this->survey->participants as $participant) {
    $answers = str_split($participant->pivot->answers);

    foreach($answers as $questionIndex => $answer) {
        $questionId = $this->survey->questions[$questionIndex]->id;
        if(isset($questions[$questionId])) {
            $questions[$questionId]['answers'][$answer - 1]++;
        }
    }
}
Mais je fais cette erreur :
foreach($answers as $questionIndex => $answers) {
J'ai tapé $answers au lieu de $answer. La fatigue sans doute... Mais là l'IA n'y arrive manifestement pas : Mais heureusement, l'erreur en elle-même met bien sur la piste de la solution.

Erreur dans une boucle Blade

Considérons maintenant ce code dans Blade :
@foreach ($results as $question)
    <h2>@lang('Question') {{ $loop->index + 1 }}</h2>
    <x-badge value="{!! $question['text'] !!}" class="p-4 badge-primary" /><br>

    @foreach($question['answers'] as $index => $answerCount)
        <div>
            <p>{{ $survey->questions[$loop->parent->index]->answers[$index]->answer_text }}: {{ $answerCount }} votes</p>
        </div>
    @endforeach
@endforeach
Et on va oublier de boucler :
@foreach ($results as $question)
    <h2>@lang('Question') {{ $loop->index + 1 }}</h2>
    <x-badge value="{!! $question['text'] !!}" class="p-4 badge-primary" /><br>

    @foreach($question['answers'] as $index => $answerCount)
        <div>
            <p>{{ $survey->questions[$loop->parent->index]->answers[$index]->answer_text }}: {{ $answerCount }} votes</p>
        </div>
@endforeach
Voici le résultat : Cette fois, l'IA est plutôt pertinente. L'erreur de base n'est pas très précise.

Erreur de paramètres

Considérons maintenant ce code :
$questions = $this->survey->questions->mapWithKeys(function($question) {
    return [$question->id => [
        'text' => $question->question_text,
        'answers' => array_fill(0, $question->answers->count(), 0)
    ]];
})->toArray();
Mais on va oublier le deuxième paramètre pour la fonction array_fill :
array_fill(0, $question->answers->count())
Voilà le résultat : Ici l'IA s'en sort très bien et nous accompagne dans la résolution.

Non définition d'une variable

J'ai oublié de définir cette variable :
public array $results = [];

L'erreur de base nous indique bien l'absence de la définition. L'IA nous conseille de vérifier que la variable existe bien avant de l'utiliser. Il aurait été plus judicieux de nous expliquer comment la définir.

Erreur avec Eloquent

Mes doigts ont un peu glissé et j'ai ajouté un caractère dans ce code :
$this->postsSearchable = Post::query()
    ->select('id', 'title')
    ->doesntHave('quiz')
    ->wherse('title', 'like', "%$value%")
Évidemment, la sentence ne tarde pas : Là la solution du package est pertinente et L'IA muette.

Erreur de typage

On définit une variable avec un certain type :
public Survey $surveys;
Et ensuite on l'utilise :
$this->surveys = Survey::where('active', true)->get();
Et évidemment on a une erreur : L'erreur de base est déjà explicite. Mais l'IA se montre bien plus didactique.

Conclusion

En explorant les fonctionnalités de Laravel-error-solutions et en testant le package sur différents cas d'utilisation, nous avons constaté que cet outil est un atout précieux pour les développeurs Laravel. En combinant des solutions générées par IA et une base de connaissances humaine, Laravel-error-solutions réussit à offrir une aide précise et pertinente pour les erreurs courantes rencontrées lors du développement avec Laravel.

Le package de base est un point de départ solide pour identifier et résoudre des problèmes, tandis que l'intégration de l'IA (dans la version payante pour bénéficier de l'API) permet d'améliorer encore la précision des solutions proposées. La communauté active et l'équipe de développement talentueuse derrière Laravel-error-solutions assureront sans doute un support continu et des mises à jour régulières, offrant ainsi aux développeurs une solution de débogage fiable et durable.

Au-delà des avantages techniques, Laravel-error-solutions contribue à l'amélioration de la productivité et de l'efficacité des développeurs en permettant une résolution de problèmes plus rapide et plus précise. Enfin, la personnalisation offerte par le package, que je n'ai pas illustrée dans cet article) permettra aux développeurs de s'adapter aux besoins spécifiques de leur projet et d'optimiser encore davantage leur workflow.

En résumé, Laravel-error-solutions est un outil puissant et innovant qui, associé à la force de l'IA, transforme la façon dont les développeurs Laravel identifient et résolvent les erreurs de codage, conduisant ainsi à des applications web de qualité supérieure et une expérience de développement améliorée.



Par bestmomo

Aucun commentaire