Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SonarQube:通过web API获取git提交哈希_Git_Api_Sonarqube_Sonarscanner - Fatal编程技术网

SonarQube:通过web API获取git提交哈希

SonarQube:通过web API获取git提交哈希,git,api,sonarqube,sonarscanner,Git,Api,Sonarqube,Sonarscanner,如果我理解正确,根据SonarQube的web API文档,应该可以通过API/issues/search获取提交哈希值,但是,当我这样做并将该哈希值与以下值进行比较时: git log --all | grep "<hash>" git日志--all | grep“” 我没有得到任何回应,这就引出了两个问题: 我是否误解了(有时相当神秘)web API文档,这是对其他内容的哈希,或者可能是配置错误,这就是我获取随机值的原因 有没有一种方法可以从一个项目和相应的提交哈希中获得问题

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

git log --all | grep "<hash>"
git日志--all | grep“”
我没有得到任何回应,这就引出了两个问题:

  • 我是否误解了(有时相当神秘)web API文档,这是对其他内容的哈希,或者可能是配置错误,这就是我获取随机值的原因

  • 有没有一种方法可以从一个项目和相应的提交哈希中获得问题/度量的相关性?在这种情况下,可以选择对PostgreSQL使用SQL查询吗?如果是的话,你知道这些信息将存储在哪里吗


  • 所以,在等待了一段时间之后,似乎没有答案,但是,因为你已经在这里了。。。让我们避免

    因此,这里有一段bash代码来生成一个表,其中包含文件中的日期、提取的数据和项目提交之间的相关性

    可能不是最好的方法,也不是最快的方法,但它会满足您的需要:)

    保存在file.sh中并使用为:./file.sh GithubUser/ProjectName您的文件,其中包含extracteddata.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
    
    #/bin/bash
    gitproject=”git@github.com:${1}.git“
    gitfolder=$(echo$gitproject | sed-E's/(.+)\/(.+\.git$)/\2/g')
    workdir=“$(pwd)”
    measurefile=$2
    如果[!-d“$workdir/$gitfolder”];
    然后
    $(git-C$workdir clone-q--bare$gitproject)
    fi
    echo'“声纳时间戳”、“git时间戳”、“提交哈希”>>$workdir/Hashes\u2
    cat$WORDIR/$measuresFile | grep-Eo'[[:digit:]{4}-[:digit:]{2}-[:digit:]{2}:[:digit:]{2}:[:digit:]{2}+[:digit:]{4},'| sed-E's/“|”,///g''sort-u>$WORDIR/TMP u哈希值2
    对于以美元表示的i(cat$workdir/TMP_散列$2 |排序-u);do echo$(echo$i|date'+%s'-f-,“$i”>>workdir/Hashes|2;完成
    rm-rf$workdir/TMP\u哈希值\uu2
    gHashes=($(TZ=Europe/London git-C$workdir/$gitfolder log--all--date=格式本地:%Y-%m-%dT%H:%m:%S%z--格式=%ad\%H | sort | tr'\n')
    计数器=0
    而(“$COUNTER”<“${gHashes[@]}”))
    做
    sust=$(日期-d“${gHashes[$COUNTER]}”'+%s')
    notInc=$(类别$workdir/Hashes|2|grep-o“^${sust}”| wc-l)
    $(sed-i-E“s/(^${sust}),(.+)/\“\2\”,\“${gHashes[($COUNTER)]}\”,\“${gHashes[($COUNTER+1)]}\”/g“$workdir/Hashes\u2)
    如果(“$notInc”=“0”);
    然后
    rHashes+=(“${gHashes[($COUNTER)]}”“${gHashes[($COUNTER+1)]}”)
    fi
    设计数器=计数器+2
    完成
    $(sed-i-E“s/(^[0-9]+),(.+)/\“\2\”,\“\”,\“\”/g“$workdir/Hashes\$2)
    计数器=0
    而(“$COUNTER”<“${rhahes[@]}”))
    做
    echo“\”、“${rHashes[($COUNTER)]}\”、“${rHashes[($COUNTER+1)]}\”>$workdir/Hashes\u2
    设计数器=计数器+2
    完成