Fix missing env var error #5

Merged
qpismont merged 4 commits from 1.0.1 into main 2026-06-16 22:05:25 +02:00
Owner
No description provided.
qpismont added 1 commit 2026-06-12 23:27:39 +02:00
Fix missing env var error
ci/woodpecker/push/tests Pipeline was successful
3f6c5b5559
Author
Owner
@Herald
Herald reviewed 2026-06-12 23:45:03 +02:00
Herald left a comment
Collaborator

Review Feedback

2 issues found.


Summary

La correction gère correctement l'erreur de variable d'environnement manquante en la transformant en erreur anyhow. Cependant, deux améliorations sont suggérées : éviter le format! redondant dans anyhow! et renommer la variable pour plus de clarté. Ces changements rendront le code plus idiomatique et maintenable.


Cost: $0.0001704

## Review Feedback ### 2 issues found. --- ### Summary La correction gère correctement l'erreur de variable d'environnement manquante en la transformant en erreur `anyhow`. Cependant, deux améliorations sont suggérées : éviter le `format!` redondant dans `anyhow!` et renommer la variable pour plus de clarté. Ces changements rendront le code plus idiomatique et maintenable. --- ### Cost: $0.0001704
src/env.rs Outdated
@@ -42,3 +42,3 @@
pub fn try_get_env(key: &str) -> anyhow::Result<String> {
let env = std::env::var(key)?;
let env = std::env::var(key).map_err(|e| anyhow::anyhow!(format!("{}: {}", key, e)))?;
Collaborator

L'utilisation de format! à l'intérieur de anyhow! est redondante. anyhow! accepte directement une chaîne formatée. Préférez anyhow!("{}: {}", key, e) pour plus de clarté et de concision.

L'utilisation de `format!` à l'intérieur de `anyhow!` est redondante. `anyhow!` accepte directement une chaîne formatée. Préférez `anyhow!("{}: {}", key, e)` pour plus de clarté et de concision.
Collaborator

Le nom de variable env est trop générique. Envisagez un nom plus explicite comme value ou env_value pour indiquer qu'il s'agit de la valeur de la variable d'environnement, et non de l'environnement lui-même.

Le nom de variable `env` est trop générique. Envisagez un nom plus explicite comme `value` ou `env_value` pour indiquer qu'il s'agit de la valeur de la variable d'environnement, et non de l'environnement lui-même.
qpismont marked this conversation as resolved
qpismont added 1 commit 2026-06-13 00:02:04 +02:00
Webhook action check before user check
Herald reviewed 2026-06-16 19:11:21 +02:00
Herald left a comment
Collaborator

Review Feedback

2 issues found.


Summary

Les modifications introduisent une gestion des variables d'environnement et une validation du corps de la PR pour le bot @HeraldTest. Cependant, le traitement des variables d'environnement vides est incomplet (src/env.rs, ligne 46) et l'accès au corps du commentaire dans gitea.rs pourrait être dangereux si les champs sont optionnels. Veuillez corriger ces points pour améliorer la robustesse.


Cost: $0.000354162

## Review Feedback ### 2 issues found. --- ### Summary Les modifications introduisent une gestion des variables d'environnement et une validation du corps de la PR pour le bot @HeraldTest. Cependant, le traitement des variables d'environnement vides est incomplet (src/env.rs, ligne 46) et l'accès au corps du commentaire dans gitea.rs pourrait être dangereux si les champs sont optionnels. Veuillez corriger ces points pour améliorer la robustesse. --- ### Cost: $0.000354162
@@ -45,2 +44,3 @@
let env_value = std::env::var(key).map_err(|e| anyhow::anyhow!("{}: {}", key, e))?;
if env.trim().is_empty() {
if env_value.trim().is_empty() {
Collaborator

Ce bloc if ne fait rien si la valeur est vide. Il semble que vous souhaitiez traiter une variable d'environnement vide comme une erreur, mais le code continue et retourne Ok(env_value) à la ligne 50. Vous devriez ajouter une instruction de retour d'erreur (par exemple avec bail! ou return Err(...)) à l'intérieur du bloc if, ou bien utiliser une structure différente pour gérer le cas vide.

Ce bloc `if` ne fait rien si la valeur est vide. Il semble que vous souhaitiez traiter une variable d'environnement vide comme une erreur, mais le code continue et retourne `Ok(env_value)` à la ligne 50. Vous devriez ajouter une instruction de retour d'erreur (par exemple avec `bail!` ou `return Err(...)`) à l'intérieur du bloc `if`, ou bien utiliser une structure différente pour gérer le cas vide.
qpismont marked this conversation as resolved
@@ -223,2 +215,4 @@
}
let pr_body = match &wb {
WebhookType::Review(review_payload) => &review_payload.comment.body,
Collaborator

L'extraction du corps du commentaire via &review_payload.comment.body suppose que comment et body existent toujours. Si comment est optionnel ou que body peut être None, cela pourrait causer une panique. Envisagez d'utiliser une approche plus sécurisée avec des if let ou pattern matching pour gérer les valeurs manquantes.

L'extraction du corps du commentaire via `&review_payload.comment.body` suppose que `comment` et `body` existent toujours. Si `comment` est optionnel ou que `body` peut être `None`, cela pourrait causer une panique. Envisagez d'utiliser une approche plus sécurisée avec des `if let` ou pattern matching pour gérer les valeurs manquantes.
qpismont marked this conversation as resolved
Author
Owner

@Test

@Test
qpismont added 1 commit 2026-06-16 20:49:47 +02:00
qpismont added 1 commit 2026-06-16 20:53:48 +02:00
Herald reviewed 2026-06-16 20:54:23 +02:00
Herald left a comment
Collaborator

Review Feedback

5 issues found.


Summary

La plupart des modifications sont de bonne qualité : ajout d'instrumentation, gestion d'erreur avec anyhow, et activation des backtraces. Cependant, quelques problèmes doivent être corrigés : le match incomplet dans gitea.rs peut provoquer une panique, la variable bot_name semble manquante, et la vérification de variable vide dans env.rs est inachevée. Pensez également à documenter le choix du profil release avec debug=1. Le sujet de la PR (« Fix missing env var error ») est bien adressé par les changements dans env.rs et les dépendances backtrace, mais les ajouts de sécurité et d'instrumentation devraient peut-être être dans une PR séparée pour respecter le principe de responsabilité unique.


Cost: $0.0004158825

## Review Feedback ### 5 issues found. --- ### Summary La plupart des modifications sont de bonne qualité : ajout d'instrumentation, gestion d'erreur avec `anyhow`, et activation des backtraces. Cependant, quelques problèmes doivent être corrigés : le `match` incomplet dans `gitea.rs` peut provoquer une panique, la variable `bot_name` semble manquante, et la vérification de variable vide dans `env.rs` est inachevée. Pensez également à documenter le choix du profil release avec `debug=1`. Le sujet de la PR (« Fix missing env var error ») est bien adressé par les changements dans `env.rs` et les dépendances backtrace, mais les ajouts de sécurité et d'instrumentation devraient peut-être être dans une PR séparée pour respecter le principe de responsabilité unique. --- ### Cost: $0.0004158825
@@ -4,2 +4,4 @@
edition = "2024"
[profile.release]
debug = 1
Collaborator

L'ajout d'informations de débogage (debug = 1) dans le profil release augmente la taille du binaire. Si cela est nécessaire pour le diagnostic en production (par exemple pour les backtraces), c'est acceptable. Sinon, il serait préférable de ne l'activer que pour un profil release-with-debug dédié ou d'ajouter un commentaire expliquant la décision.

L'ajout d'informations de débogage (`debug = 1`) dans le profil `release` augmente la taille du binaire. Si cela est nécessaire pour le diagnostic en production (par exemple pour les backtraces), c'est acceptable. Sinon, il serait préférable de ne l'activer que pour un profil `release-with-debug` dédié ou d'ajouter un commentaire expliquant la décision.
qpismont marked this conversation as resolved
@@ -42,3 +42,3 @@
pub fn try_get_env(key: &str) -> anyhow::Result<String> {
let env = std::env::var(key)?;
let env_value = std::env::var(key).map_err(|e| anyhow::anyhow!("{}: {}", key, e))?;
Collaborator

Cette transformation en anyhow::Error est claire et appropriée. Bonne pratique pour la propagation d'erreur.

Cette transformation en `anyhow::Error` est claire et appropriée. Bonne pratique pour la propagation d'erreur.
qpismont marked this conversation as resolved
@@ -45,2 +44,3 @@
let env_value = std::env::var(key).map_err(|e| anyhow::anyhow!("{}: {}", key, e))?;
if env.trim().is_empty() {
if env_value.trim().is_empty() {
Collaborator

Après avoir vérifié que la variable d'environnement est vide ou ne contient que des espaces, il n'y a pas de traitement visible (pas de return Err(...) ni de panic!). Si l'intention est de rejeter les valeurs vides, il faut ajouter une gestion d'erreur explicite, par exemple return Err(anyhow::anyhow!("{}: variable vide", key)). Sinon, la fonction continue avec une valeur vide et échouera peut-être plus tard de manière obscure.

Après avoir vérifié que la variable d'environnement est vide ou ne contient que des espaces, il n'y a pas de traitement visible (pas de `return Err(...)` ni de `panic!`). Si l'intention est de rejeter les valeurs vides, il faut ajouter une gestion d'erreur explicite, par exemple `return Err(anyhow::anyhow!("{}: variable vide", key))`. Sinon, la fonction continue avec une valeur vide et échouera peut-être plus tard de manière obscure.
qpismont marked this conversation as resolved
@@ -222,6 +214,14 @@ impl WebhookType {
return Err(AppError::InvalidActionErr);
}
let pr_body = match &wb {
Collaborator

Le motif match ne gère que la variante WebhookType::Review. Si une autre variante (par exemple WebhookType::PullRequest) est reçue, cela provoquera une panique. Il faut soit étendre le match à toutes les variantes, soit s'assurer que cette fonction n'est appelée que pour des événements Review (par exemple en déplaçant la logique dans le bloc if let).

Le motif `match` ne gère que la variante `WebhookType::Review`. Si une autre variante (par exemple `WebhookType::PullRequest`) est reçue, cela provoquera une panique. Il faut soit étendre le match à toutes les variantes, soit s'assurer que cette fonction n'est appelée que pour des événements `Review` (par exemple en déplaçant la logique dans le bloc `if let`).
qpismont marked this conversation as resolved
@@ -225,0 +218,4 @@
WebhookType::Review(review_payload) => &review_payload.comment.body,
};
if !pr_body.starts_with(&format!("@{}", bot_name)) {
Collaborator

La variable bot_name n'est pas définie dans le contexte visible. Assurez-vous qu'elle est passée en paramètre ou accessible dans la portée, sinon cela causera une erreur de compilation.

La variable `bot_name` n'est pas définie dans le contexte visible. Assurez-vous qu'elle est passée en paramètre ou accessible dans la portée, sinon cela causera une erreur de compilation.
qpismont marked this conversation as resolved
qpismont merged commit 7f24d7657c into main 2026-06-16 22:05:25 +02:00
qpismont deleted branch 1.0.1 2026-06-16 22:05:25 +02:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: qpismont/herald#5