이 Scaife API 정의 파일의 배포에는 Yaml, JSON 및 HTML 형식의 파일이 포함됩니다. 대부분의 릴리스에는 5 개의 Scaife 모듈 각각에 대해 각 파일 형식에 하나의 파일이 있습니다.
2021 년 3 월 Scaife API 릴리스에서 YAML 파일 만 출시했습니다. 이 릴리스에는 OpenAPI 버전 3 형식을 사용하여 업데이트 된 모든 모듈이 있습니다. 앞으로 OpenAPI 버전 3에서 작업하기 위해 코드 생성을 JSON 및 HTML로 자동화하는 스크립트를 업데이트 할 것입니다.
YAML 파일은 개발자가 (예 : Swagger-Editor 및 Swagger-CodeGen 도구를 사용하여 코드를보고, 수정 및 자동으로 생성하는 데 쉽게 사용할 수있는 형식으로 소스 코드 분석 통합 프레임 워크 환경 (SCAIFE) API 정의 [1, 2, 3, 5]를 지정합니다. YAML 파일은 거의 전적으로 SEI 개발자에 의해 생성되었습니다. Yaml 파일 내에서 Swagger Tools에서 자동으로 생성 한 유일한 것은 일부 예입니다.
JSON 파일은 Swagger.yaml 파일에서 Swagger-Codegen을 실행하여 자동 생성되었습니다. 일부 개발자는 JSON에서 API를 보거나 JSON과 가장 잘 맞는 코드 생성 도구가 있기 때문입니다.
HTML 파일은 또한 YAML 파일을 읽는 것을 선호하지 않거나 도구가없는 사람들이 읽을 수있는 형식으로 Scaife API 정의를 지정합니다. HTML 파일은 모든 표준 웹 브라우저에서 볼 수 있습니다. HTML 파일에는 하이퍼 링크가 포함되어 있으며 아래 참조 된 백서는 HTML 파일을 이해하는 방법에 대한 지침을 제공합니다.
Scaife는 정적 분석 경보 분류 및 우선 순위를 지원하는 아키텍처입니다. 다양한 정적 분석 도구가 개발중인 API 정의를 사용하여 시스템과 통합 할 수 있도록 설계되었습니다. Scaife API 버전 2.0.0을 기준으로 Scaife가 CONTERUUD Integration (CI) 서버에서 코드 커밋 및 새로운 정적 분석 출력에 대한 업데이트를받을 수 있도록 API 호출을 추가했습니다. 우리는 API가 정적 분석 도구를 개발 및/또는 연구하는 조직, 정적 분석 경보 감사 애그리 게이터 및 기타 정적 분석 경보 감사 프레임 워크에 관심을 가질 것으로 기대합니다. 이 Scaife API 정의는 개발자가 참조하여 Scaife API 통화를 만들고 응답하기 위해 조직의 도구를 수정하는 데 필요한 개발 노력을 추정하는 데 도움이됩니다. 또한이 API 정의는 Scaife API 구현에 관심이있는 개발자 및 조직으로부터 피드백을 생성하여 Scaife API가 다양한 정적 분석 도구를 위해 개발자가보다 쉽게 사용할 수 있도록 도와주는 목표로 게시되고 있습니다. 연구 프로젝트 공동 작업자에게 배포 된 프로토 타입 시스템.
그림에 나와있는 Scaife 아키텍처에는 5 개의 서버가 포함됩니다. 시스템은 모듈 식으로 설계되어 각 모듈은 다른 도구/소프트웨어로 인스턴스화 할 수있는 반면 전체 시스템은 동일한 기능을 유지해야합니다. UI 모듈에는 FFSA (Flaw-Finding Static Analysis) 알림을 표시하고 로컬 프로젝트를 저장하는 GUI 프론트 엔드가 있습니다. Scaife 아키텍처는 다양한 FFSA 도구 및 경고 어 그리 게이터 도구를 가능하게하여 나머지 Scaife 시스템과 UI 모듈로 상호 작용하여 분류 및 우선 순위 화 기능을 얻을 수 있도록합니다. 이러한 도구는 UI 모듈 API 호출을 다른 서버로 인스턴스화해야합니다. Datahub Module은 하나 이상의 UI 모듈에서 데이터 (도구, 경고, 프로젝트, 테스트 스위트 메타 데이터, Devidicatons 등)를 저장하고 일부 메타 경보를 위반합니다. 통계 모듈은 분류기 및 적응성 휴리스틱 (Active Learning) 알고리즘 및 자동화 된 하이퍼 파라미터 알고리즘을 생성, 실행 및 저장합니다. 우선 순위 지정 모듈은 우선 순위 지정 공식 및 사용자 공제 우선 순위 지정 필드를 저장합니다. 등록 모듈은 인증 및 액세스 제어에 사용됩니다. 등록 토큰을 생성하고 다른 서버에 대한 인증 및 기본 승인을 제공합니다.
검사를 시작할 5 가지 모듈 중 하나를 선택하십시오. : 대부분의 FFSA 도구 및 Alert Aggregator 도구 개발자는 UI 모듈의 API 정의에 가장 관심이 있습니다. 도구가 Scaife 시스템과 상호 작용할 수 있으려면 도구가 UI 모듈의 API를 인스턴스화해야합니다. 그러나 일부 연구자/개발자는 분류, 활성 학습 및 자동화 된 하이퍼 매개 변수 최적화에 중점을 두었습니다. 대신 통계 모듈의 API에 중점을 둘 것입니다. 그들은 새로운 알고리즘을 개발하고 우리가 개발 한 프로토 타입 (연구 협력자 인 경우) 내에 모듈 식으로 통합하거나 통계 모듈의 API를 인스턴스화 한 다음 다른 사람들이 개발 한 다른 모듈과 Scaife 시스템과 상호 작용하기 위해 자체 도구를 단순히 수정할 수 있습니다. 마찬가지로, 일부 연구원/개발자는 성능, 보안, 탄력성 및 집계 된 예상 데이터 저장의 확장 성을 향상시키는 데 중점을 둡니다. 그 사람들은 Datahub 모듈의 API에 집중하기를 원할 것입니다. 우리는 소수의 연구원/개발자가 등록 또는 우선 순위 모듈을 구현할 것으로 기대합니다. 그러나 다른 서버는 클라이언트 또는 서버 역할에서 상호 작용해야하므로 API는 여전히 검토하는 데 유용합니다.
가능하면 오픈 소스 (및 무료) Swagger 편집기 [4] 또는 유사한 API보기 및 편집 도구를 사용하는 것이 좋습니다. 그것에 API 정의 파일 (.yaml 또는 .json)을 엽니 다. Swagger Editor는 사용자 친화적 인 방법을 제공하고 간단한 테스트를 수행하며 API 정의를 수정합니다.
그렇지 않으면 웹 브라우저에서 HTML API 정의 파일을 봅니다. 이러한 방식으로, 아래 SCAIEF API 정의 섹션의 각 리소스와 관련된 하이퍼 링크를 따라 모델과 방법에 액세스 할 수 있습니다.
각 API 정의 섹션은 API 호출의 소스 및 대상 모듈에 따라 분류됩니다. 예를 들어, 빠른 모델 등록 및 로그인 모듈 API 정의 섹션에는 uitoregistration 레이블 아래에 하나의 범주의 API 호출 만 포함됩니다. API 호출의 소스 (요청)는 UI 모듈에서 제공되며 API 호출은 대상 (등록 모듈)으로 전달됩니다. 데이터 모델은 파일의 하단 섹션에 정의됩니다.
바라건대 당신은 API를 검사하지 않고이를 사용하여 도구 나 코드를 Scaife 시스템에 통합합니다. Swagger Codegen 또는 유사한 도구를 사용하여 Scaife 모듈의 Yaml 또는 JSON API 정의에서 코드를 자동으로 생성 할 수 있습니다. 이는 코드 개발 가속화 및 자동화의 이점뿐만 아니라 코드가 Scaife API를 인스턴스화하도록 보장합니다. 클라이언트 코드를 생성하려는 도구가있는 경우 (의미, 해당 서버의 API 정의에 정의 된 Scaife 서버로 호출하는 코드를 원하면) Swagger CodeGen과 같은 도구는 다양한 언어로 코드를 생성합니다. 생성 된 클라이언트 코드를 올바른 위치에서 자신의 코드에 넣고 자신의 변수를 매개 변수로 사용할 수 있습니다. 마찬가지로, 해당 서버에 대한 각 API 호출에 대한 컨트롤러 기능 스터브를 포함하여 모든 Scaife 모듈에 대한 서버 코드를 자동으로 생성 할 수 있으며, 그러면 내부 코드를 대체 할 수 있습니다.
API 검토자를위한 특별 메모 :