SonarQube: получение хитов git commit через веб-API - PullRequest
0 голосов
/ 18 февраля 2019

Если я правильно понял, в соответствии с документацией веб-API SonarQube должна быть возможность получить хеш коммита через api / Issues / Search , однако, когда я это делаю и сравниваю этот хешс:

git log --all | grep "<hash>"

В качестве ответа я ничего не получаю, что приводит меня к двум вопросам:

  1. Я неправильно понял (иногда весьма загадочно) документацию веб-APIи это хэш для чего-то еще, или я могу что-то неправильно сконфигурировать, и именно поэтому я получаю случайные значения?

  2. Есть ли способ получить корреляцию проблем / мер отпроект и соответствующие хеши коммитов?Использование SQL-запроса к PostgreSQL может быть вариантом в этом случае?Если да, есть ли идеи о том, где будет храниться эта информация?

1 Ответ

0 голосов
/ 17 апреля 2019

Итак, после некоторого ожидания кажется, что ответа нет, так как вы уже здесь ... Давайте избегать this

Итак, у вас есть кусок bashкод для создания таблицы с корреляцией между датами из файла с вашими извлеченными данными и фиксациями проекта.

Возможно, не самый лучший подход и не самый быстрый, но он даст вам то, что вам нужно:)

Сохраните в файле .sh и используйте как: ./file.sh GithubUser / ProjectName YourFileWithTheExtractedData.csv

#!/bin/bash

gitproject="git@github.com:${1}.git"
gitfolder=$(echo $gitproject | sed -E 's/(.+)\/(.+\.git$)/\2/g')
workdir="$(pwd)"
measuresFile=$2

if [ ! -d "$workdir/$gitfolder" ];
then
        $(git -C $workdir clone -q --bare $gitproject)
fi

echo '"sonar-timestamp","git-timestamp","commit-hash"' >> $workdir/Hashes_$2
cat $workdir/$measuresFile | grep -Eo '"[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}T[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}\+[[:digit:]]{4}",' | sed -E 's/"|",//g' | sort -u >> $workdir/TMP_Hashes_$2
for i in $( cat $workdir/TMP_Hashes_$2 | sort -u ); do echo $(echo $i | date '+%s' -f - ),"$i" >> $workdir/Hashes_$2 ; done
rm -rf $workdir/TMP_Hashes_$2

gHashes=( $(TZ=Europe/London git -C $workdir/$gitfolder log --all --date=format-local:%Y-%m-%dT%H:%M:%S%z --format=%ad\ %H | sort | tr '\n' ' ') )

COUNTER=0
while (("$COUNTER" < "${#gHashes[@]}"))
do
        sust=$(date -d "${gHashes[$COUNTER]}" '+%s')
        notInc=$(cat $workdir/Hashes_$2 | grep -o "^${sust}" | wc -l )
        $(sed -i -E "s/(^${sust}),(.+)/\"\2\",\"${gHashes[($COUNTER)]}\",\"${gHashes[($COUNTER + 1)]}\"/g" $workdir/Hashes_$2)

        if (( "$notInc" == "0" ));
        then
                rHashes+=( "${gHashes[($COUNTER)]}" "${gHashes[($COUNTER + 1)]}" )
        fi

        let COUNTER=COUNTER+2
done

$(sed -i -E "s/(^[0-9]+),(.+)/\"\2\",\"\",\"\"/g" $workdir/Hashes_$2)

COUNTER=0
while (("$COUNTER" < "${#rHashes[@]}"))
do
        echo "\"\",\"${rHashes[($COUNTER)]}\",\"${rHashes[($COUNTER + 1)]}\"" >> $workdir/Hashes_$2
        let COUNTER=COUNTER+2
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...