SonarQube の
前提
以下の
OS
% sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G29
python の
version % python -V Python 2.7.10
SonarQube の
Version
SonarQube 6.5
認証設定に ついて
Local 環境 での
初期構築後から、
1. 認証を 強制する
デフォルトだと、
メニューForce user authentication
を
2. Token を 発行する
ユーザーに
セキュリティタブ>ユーザ を
クリック Update Tokens を
クリック キー名を
入力して、 Generate を クリック Token を
コピーして Doneを クリック
上記で
作成した スクリプト
- print_sonarqube_issues.py
# -*- coding: utf-8 - from requests.auth import HTTPBasicAuth import requests def main(): url = "http://localhost:9000/api/issues/search" page_size = 100 token = "your_token" data_length = 0 issues = [] p = 1 while (data_length % page_size == 0): payload = { "id": "your_project_key", "additionalFields": "_all", "p": p, "ps": page_size } r = requests.get(url, params=payload, auth=HTTPBasicAuth( token, '')) json_o = r.json() data_length = len(json_o.get("issues")) for issue in json_o.get("issues"): issues.append(issue) p = p + 1 print("###Issues ###") for issue in issues: print(issue) print("###Issue Length###") print(len(issues)) if __name__ == '__main__': main()
説明
ライブラリの
インストール
requests を使用していますので、 インストールしていない 場合は、 インストールを 実施してください。 pip install requests
発行した
Token に ついて
発行したToken は、 Basic 認証に 使用します。
Token の場合は、 user名に Token のみ 設定して passwordは ブランクに します。
user名とpassword での 認証も できますが、 SonarQubeと しては、 このやり方を 推奨しています。
requests でベーシック認証を 行う 場合は、 HTTPBasicAuth を 使い、 とr = requests.get(url, params=payload, auth=HTTPBasicAuth( token, ''))
記載も できますし、 単純に Taple を 渡すだけでも Basic認証を 実施してくれます。 以下、r = requests.get(url, params=payload, auth=(token, ''))
参考に なりました。
requestsでbasic認証 - Misc Notes
Authentication — Requests 2.18.4 documentationページングに
ついて
api/issues/search
では、最大500件まで データを 返してくれ、 500件以上は 複数回リクエストを 実行する 必要が あります。
件数はpage_size
で指定可能です。
1ページ目を取得する 際は、 クエリストリング p=1
となり、次ページ以降は 1ずつ インクリメントしてすれば 取得できます。
例えば736ページで、page_size=100
の場合、 最終ページは p=8
になり、 8ページ目の データ件数は 36件に なります。
参考
その他、
sonarqube - How do I pass credentials to Sonar API calls? - Stack Overflow
sonarqube - Disallow anonymous users to access Sonar - Stack Overflow
以上です。
コメント