web-dev-qa-db-fra.com

Analyse de la couverture de Regex for Gitlab CI Test

J'ai eu du mal à trouver une expression régulière qui fonctionnerait dans l'entrée "Analyse de la couverture de test" de la page "Pipelines CI/CD". Cela n'aide en rien que les exemples montrent des exemples incohérents, c'est-à-dire des parenthèses d'échappement et d'autres non, comme avec des symboles de pourcentage, certains capturent le résultat explicite dans $1, etc. Quoi qu'il en soit, voici mon texte - qu'est-ce que la regex?

Badge CI:

![coverage](https://gitlab.com/mycompany/master/badges/master/coverage.svg?job=coverage)

Texte de sortie:

Unit test coverage:
   10.01% blocks
   10.01% lines

Essayé jusqu'à présent: (ajout des barres obliques simplement pour représenter l'espace à l'avant ou regex)

/ \(\d+\.\d+\%\) blocks/
/ (\d+\.\d+\%) blocks/
/ (\d+\.\d+%) blocks/
/ (\d+\.\d+)% blocks/
8
Dan

Il existe une page Web utile Ruby regex. 

http://www.rubular.com/

Je n'ai pas aidé pour moi avec l'analyse syntaxique de la couverture de code GitLab. Je pense que c'est parce qu'il semble y avoir un bogue enregistré pour un problème de regex dans GitLab. https://gitlab.com/gitlab-org/gitlab-ce/issues/21495

 enter image description here

5
user1728363

Le problème était que la requête d'URL de couverture "? Job = coverage" était incorrecte. En ce qui concerne la regex, j'ai utilisé:

\W(\d+(?:\.\d+)%)\sblocks
1
Dan

Cette expression régulière devrait récupérer la couverture des blocs:

^\s*(\d+(?:\.\d+)?%)\s*blocks

Si vous souhaitez récupérer la couverture de ligne à la place, utilisez ceci:

^\s*(\d+(?:\.\d+)?%)\s*lines

GitLab ajoute automatiquement les / premiers et derniers automatiquement afin que vous n'ayez pas besoin de les ajouter à votre expression régulière.

Pour référence future, GitLab est écrit en Ruby afin que vous puissiez tester cette expression régulière en Ruby sur rubular.com

1
BrokenBinary