2017-07-19 1 views
0

Existe-t-il un moyen d'exclure certaines lignes de code de l'analyse sonarqube sans exclure tout le fichier de code source? Peut-être avec une annotation ou quelque chose comme ça?Exclure certaines lignes du code php de l'analyse sonarqube

Je vais vous donner un exemple concret, où je dois exclure une certaine odeur de code pour un paramètre de fonction utilisé:

I mis en œuvre une méthode de validation comme ceci:

public function validateTruth(string $attribute, $value) : bool 
{ 
    $acceptable = [ 
     '0', 
     0, 
     'false', 
     false, 
     '1', 
     1, 
     'true', 
     true, 
     'no', 
     'yes', 
    ]; 

    return in_array($value, $acceptable, true); 
} 

pour étendu les \ Illuminate \ \ contrats validation \ usine avec la méthode extend:

$validationFactory->extend(
    'truth', 
    Validator::class . @validateTruth', 
    'The :attribute field must be some kind of truth value.' 
); 

Ma mise en œuvre n'utilise pas tous les paramètres requis, mais je ne peux pas juste laisser le premier paramètre. L'extension ne fonctionnerait pas avec une méthode de rappel sans le paramètre $ attribute. Ainsi, la méthode extend nécessite clairement un callback avec un certain ensemble de paramètres, mais elle ne fournit pas d'interface ou quelque chose comme ça, donc le paramètre manquant serait automatiquement exclu de sonarqube.

Existe-t-il un moyen d'exclure uniquement cette odeur de code, sans exclure toute la fonction ou le fichier de l'analyse sonarqube? Je préférerais une solution dans le code source, parce que nous utilisons différentes instances de sonarqube dans notre cycle de vie de développement, donc il serait plus difficile de maintenir de telles odeurs de code dans le webfrontend.

Répondre

0

Vous pouvez résoudre le problème via l'interface Web ou, si vous préférez le faire dans le code, le marquer avec un commentaire NOSONAR. Pour plus d'informations, voir the official FAQ.

+0

Merci pour la réponse rapide. La solution proposée avec le commentaire // NOSONAR semble fonctionner pour le coureur du sonar. Mais ce commentaire ne semble pas fonctionner dans l'IDE (au moins pour PHP) bien qu'il y ait eu un problème fermé pour SonarLint pour IntelliJ à https://jira.sonarsource.com/browse/SLI-20 –

+0

@ GordonGünther Quels IDE sont vous utilisez? Dans mon IntelliJ je viens de vérifier, que 'NOSONAR' fonctionne bien. Encore: IntelliJ continuera à soulever ses propres problèmes sur ces lignes. Essayez ceci: 'long i = 0l;' (1 problème d'IntelliJ + 1 problème de SonarQube) et plus tard cela: 'long i = 0l; // NOSONAR' (1 problème d'IntelliJ). – slartidan

+0

J'utilise PhpStorm et après avoir redémarré l'IDE cela a fonctionné. –