Я написал библиотеку python с открытым исходным кодом, которая может быть использована здесь полезной. Это прост в использовании, а также предоставляет инструмент командной строки для загрузки исходного кода для статического сканирования кода.
Могу ли я создавать проекты с использованием REST API HP Fortify SSC? Это прекрасно работает, чтобы захватить список проектов:
import requests
import getpass
import json
url = "https://www.example.com/ssc/api/v1/"
endpoint = "auth/obtain_token"
headers = {"Content-Type": "application/json",
"Accept": "application/json"}
username = getpass.getuser()
password = getpass.getpass()
auth = (username, password)
r = requests.post("{url}{endpoint}".format(url=url, endpoint=endpoint), headers=headers, auth=auth)
data = r.json().get("data")
token = data.get("token")
endpoint = "projects"
headers["Authentication"] = "FortifyToken {token}".format(token=token)
r = requests.get("{url}{endpoint}".format(url=url, endpoint=endpoint), headers=headers)
print json.dumps(r.json(), sort_keys=True, indent=4, separators=(',', ': '))
... Но я не вижу примеров в документации API для фактического создания проекта. Я специально заинтересован в этом, используя библиотеку запросов Python. Я не хочу ничего делать на Java (это то, что все образцы, которые поставляются с пакетом Fortify SSC WAR).
Если у кого-то есть опыт работы с API REST SSC (или может указать мне на лучшую документацию), я был бы признателен за любую помощь, которую вы можете дать.
Спасибо авторам плагина SonarQube Fortify (не документация Fortify SSC, а не его автогенерированная ssc / html / docs / api-reference), я подумал, что мне нужно, чтобы base64-кодировал токен.
if len(auth) == 1:
headers.update((("Authorization", "FortifyToken " + base64.b64encode(auth[0])),))
elif len(auth) == 2:
headers.update((("Authorization", "Basic " + base64.b64encode("{}:{}".format(*auth))),))
Этот auth/token
вызов помогает избежать повторной отправки пары имени пользователя / пароля. Скрипт fortifyclient из каталога Fortify SCA bin может выполнить вызов заранее.