SonarQube:通过Web API获取git commit哈希

问题描述 投票:1回答:1

如果我理解正确,根据SonarQube的Web API文档,应该可以通过api / issues / search获取提交哈希值,但是,当我这样做并将该哈希值与以下内容进行比较时:

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

我没有得到任何回应,这引出了两个问题:

  1. 我是否误解了(有时相当神秘的)Web API文档,这是其他东西的哈希,或者我可能有一些错误的配置,这就是为什么我得到随机值?
  2. 有没有办法从项目和相应的提交哈希中获得问题/度量的相关性?在这种情况下,使用SQL查询到PostgreSQL可能是一个选项?如果是这样,任何关于信息存储位置的想法?
git api sonarqube sonarscanner
1个回答
1
投票

所以,等待一段时间之后看起来似乎没有答案,因为你已经在这里了......让我们避免使用this

所以在这里你有一段bash代码来生成一个表,其中包含文件中提取数据的日期与项目提交之间的相关性。

可能不是最好的方法也不是最快的方法,但它会给你你需要的东西:)

保存在file.sh中并用作:./ file.sh GithubUser / ProjectName YourFileWithTheExtractedData.csv

#!/bin/bash

gitproject="[email protected]:${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
© www.soinside.com 2019 - 2024. All rights reserved.