2017-08-22 2 views
2

J'ai un grand projet basé sur Java, hébergé sur GitLab, qui est construit par Jenkins en utilisant ant. La machine jenkins est une boîte Windows, et un scanner SonarQube est installé. Dans le cadre du processus de construction, la machine jenkins analyse le code et communique avec un serveur SonarQube distinct, qui est une boîte Linux.Can SonarQube peut-il être configuré pour utiliser les fins de ligne Windows sur une machine Linux?

Actuellement, notre repo git n'a que des fins de ligne basées sur Windows, puisqu'il a été converti à partir de svn. Sous cette configuration, SonarQube peut détecter de nouveaux problèmes dans une soumission de code, mais ne parvient pas à détecter les numéros de ligne des nouveaux problèmes. Dans GitLab, il joint un commentaire général à la demande de fusion, au lieu de faire un commentaire en ligne ordinaire.

J'ai exécuté l'analyse SonarQube avec la journalisation supplémentaire et trouvé qu'il échouait une comparaison de chaîne entre la ligne avec le problème détecté, et un tableau de lignes représentant le reste du fichier.

En particulier, il ressemblait à la chaîne qu'il cherchait, avait une nouvelle ligne au début de la chaîne, alors que les chaînes dans le tableau, avait une nouvelle ligne à la fin de la chaîne.

Sur une intuition j'ai commuté toutes les fins de ligne dans une branche de test pour être des fins de ligne de style Unix, et fait la boîte de fenêtres utiliser auto-crlf. Cela a résolu le problème, SonarQube était capable de faire correspondre les chaînes et a donné un commentaire en ligne pour le problème qu'il a détecté dans la demande de fusion GitLab. Comme changer chaque ligne de chaque fichier pour forcer les fins de ligne Unix est un peu plus invasif que nous le souhaiterions, je me demande s'il y a une option de configuration qui pourrait permettre à SonarQube de reconnaître les fins de ligne Windows, même en cours d'exécution sur une machine Linux?

+0

Je ne suis pas sûr qu'il ya un problème ici. Le plugin GitHub utilise les commentaires en ligne uniquement lorsque les lignes affectées par le problème font partie du diff. Lorsque vous changez les fins de ligne, le fichier entier devient une partie du diff, ce qui pourrait expliquer que le problème en question est signalé. Si vous confirmez que les lignes affectées font partie du diff, veuillez partager la sortie de journalisation supplémentaire que vous avez mentionnée avec certaines comparaisons de chaînes. En tout cas, je devine surtout des choses ici, parce que le plugin GitLab est géré par la communauté, pas par SonarSource. – janos

Répondre