Intel은 코드의 오류를 감지하는 기계 학습 시스템인 ControlFlag의 소스 코드를 출시했습니다.

인텔 공개 광고를 통해 ControlFlag 연구 프로젝트와 관련된 개발, 코드의 품질을 향상시키기 위한 기계 학습 시스템을 만들기 위한 것입니다.

이 도구는 MIT 라이선스에 따라 출시되었습니다. 그리고 기존의 대량의 코드로 훈련된 모델을 기반으로 C/C++와 같은 고급 언어로 작성된 소스 텍스트의 다양한 오류 및 이상을 식별할 수 있다는 점이 두드러집니다.

시스템 코드에서 다양한 유형의 문제를 감지하는 데 적합합니다. 인쇄상의 오류 및 잘못된 유형 조합을 감지하는 것부터 포인터의 null 값 및 메모리 문제에 대한 누락된 검사 식별에 이르기까지.

시스템은 통계 모델을 구축하여 스스로 학습합니다. GitHub 및 유사한 공개 리포지토리에 게시된 기존의 오픈 소스 코드 배열에서. 교육 단계에서 시스템은 일반적인 템플릿을 결정합니다. 코드에서 구조를 구축하고 프로그램에서 코드 실행의 흐름을 반영하여 이러한 템플릿 간의 연결에 대한 구문 트리를 구축합니다. 그 결과, 분석된 모든 소스 텍스트의 개발 경험을 결합하여 참조 의사결정 트리가 형성됩니다.

ControlFlag를 광범위한 소프트웨어 개발 커뮤니티에서 더 많이 사용할 수 있도록 Intel은 ControlFlag가 이제 오픈 소스이며 https://github.com/IntelLabs/control-flag에서 액세스할 수 있음을 발표하게 된 것을 기쁘게 생각합니다. 우리는 개발자들에게 이 매우 가치 있고 혁신적인 기술로 개발할 수 있는 기회를 제공하고 다른 무엇을 할 수 있는지 알게 된 것을 기쁘게 생각합니다.

ControlFlag는 도입 이후 프로덕션 수준 소프트웨어와 널리 사용되는 오픈 소스 소프트웨어 시스템에서 테스트되었습니다. 예를 들어, 작년에 ControlFlag는 하루에 XNUMX억 번 이상 다양한 네트워크 프로토콜을 사용하여 데이터를 전송하는 컴퓨터 소프트웨어 프로젝트인 클라이언트 URL(cURL)에서 코드 이상을 식별했습니다. cURL 팀에 이상 현상을 보고한 후 ControlFlag의 결과에 동의하고 코드를 패치했습니다.

테스트 중인 코드에 대해 유사한 패턴 정의 프로세스가 수행됩니다., 이는 참조 결정 트리와 비교됩니다. 인접한 분기와의 큰 불일치는 확인 중인 패턴의 이상을 나타냅니다. 시스템은 템플릿의 오류를 식별할 뿐만 아니라 솔루션을 제안할 수도 있습니다. 예를 들어 코드 조각을 구문 분석할 때 "if (x = 7) y = x;" 시스템은 "변수 == 숫자" 구성이 일반적으로 숫자 값을 비교하기 위해 "if" 문에서 사용된다고 결정했으므로 "if" 문에서 "변수 = 숫자" 표시는 아마도 인쇄상의 오류로 인해 발생할 수 있습니다.

기존의 정적 분석기는 이러한 오류를 감지하지만 ControlFlag는 가능한 모든 옵션을 예측하기 어려운 기본 규칙을 적용하지 않고 모든 종류의 사용 통계에서 시작합니다. 많은 수의 프로젝트에서.

실험으로, cURL 유틸리티의 소스 코드에서 ControlFlag를 사용할 때, 자주 예시로 인용된다 검증된 고품질 코드 정적 분석기 구조 요소 "s-> keepon"을 사용할 때 의도하지 않은 버그가 드러났습니다. 숫자 유형이 있지만 부울 값 TRUE와 비교되었습니다.

OpenSSL 코드에서는 위에서 언급한 "(s1 == NULL) ∧ (s2 == NULL)" 문제에 추가하여 적어도 a 이상이었던 "(-2 == rv)" 표현식에서도 이상 현상이 감지되었습니다. 오식.

또한 ControlFlag를 사용하여 비특정 독점 소프트웨어에서 수백 개의 버그를 식별할 수 있었고, 이로 인해 충돌 및 메모리 문제가 발생했다고 보고되었습니다.

최종적으로 그것에 대해 더 많이 알고 싶다면, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서. 소스 코드를 보거나 얻거나 저장소에서 복제하는 데 관심이 있는 사람들은 다음에서 할 수 있습니다. 다음 링크.


코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.