Intel phát hành mã nguồn ControlFlag một hệ thống máy học để phát hiện lỗi trong mã

Intel công bố thông qua một quảng cáo phát triển liên quan đến dự án nghiên cứu ControlFlag, nhằm mục đích tạo ra một hệ thống học máy để cải thiện chất lượng của mã.

Công cụ đã được phát hành theo giấy phép MIT và nó nổi bật vì cho phép, dựa trên một mô hình được đào tạo trên một lượng lớn mã hiện có, xác định các lỗi và sự bất thường khác nhau trong văn bản nguồn được viết bằng các ngôn ngữ cấp cao như C / C ++.

Hệ thống nó phù hợp để phát hiện các loại vấn đề khác nhau trong mã của bạn, từ việc phát hiện các lỗi đánh máy và kết hợp kiểu không chính xác, đến việc xác định các kiểm tra còn thiếu đối với các giá trị rỗng trong con trỏ và các vấn đề với bộ nhớ.

Hệ thống tự học bằng cách xây dựng mô hình thống kê từ mảng mã nguồn mở hiện có được xuất bản trên GitHub và các kho lưu trữ công khai tương tự. Trong giai đoạn đào tạo, hệ thống xác định các mẫu điển hình để xây dựng cấu trúc trong mã và xây dựng cây cú pháp kết nối giữa các mẫu này, phản ánh luồng thực thi mã trong chương trình. Kết quả là, một cây quyết định tham chiếu được hình thành, kết hợp kinh nghiệm phát triển của tất cả các văn bản nguồn được phân tích.

Để cung cấp ControlFlag cho cộng đồng phát triển phần mềm rộng lớn hơn, Intel vui mừng thông báo rằng ControlFlag hiện là mã nguồn mở và có thể được truy cập tại https://github.com/IntelLabs/control-flag. Chúng tôi vui mừng mang đến cho các nhà phát triển cơ hội phát triển trên đó và xem có thể làm gì khác với công nghệ cực kỳ có giá trị và sáng tạo này.

Kể từ khi được giới thiệu, ControlFlag đã được thử nghiệm trong phần mềm cấp sản xuất và các hệ thống phần mềm mã nguồn mở được sử dụng rộng rãi. Ví dụ: năm ngoái, ControlFlag đã xác định được mã bất thường trong URL máy khách (cURL), một dự án phần mềm máy tính truyền dữ liệu bằng các giao thức mạng khác nhau hơn XNUMX tỷ lần mỗi ngày. Sau khi báo cáo sự bất thường cho nhóm cURL, họ đồng ý với phát hiện của ControlFlag và sau đó đã vá mã của họ.

Quá trình xác định các mẫu tương tự được thực hiện đối với mã được kiểm tra, được so sánh với cây quyết định tham chiếu. Sự khác biệt lớn với các nhánh liền kề cho thấy sự bất thường trong mô hình đang được xác minh. Hệ thống không chỉ cho phép xác định lỗi trong mẫu mà còn đề xuất giải pháp. Ví dụ: khi phân tích cú pháp đoạn mã "if (x = 7) y = x;" hệ thống đã xác định rằng cấu trúc "biến == số" thường được sử dụng trong câu lệnh "nếu" để so sánh các giá trị số, do đó, chỉ báo "biến = số" trong câu lệnh "nếu" có thể do lỗi đánh máy gây ra.

Các bộ phân tích tĩnh truyền thống sẽ phát hiện ra lỗi như vậy, nhưng, không giống như chúng, ControlFlag không áp dụng các quy tắc ngoại vi, trong đó rất khó lường trước tất cả các tùy chọn có thể xảy ra, mà bắt đầu từ số liệu thống kê về việc sử dụng các loại trong số lượng lớn các dự án.

Như một thử nghiệm, khi sử dụng ControlFlag trong mã nguồn của tiện ích cURL, thường xuyên được trích dẫn như một ví dụ mã chất lượng cao, đã được kiểm chứng, máy phân tích tĩnh đã tiết lộ một lỗi không cố ý khi sử dụng phần tử cấu trúc "s-> keepon", có kiểu số, nhưng được so sánh với giá trị boolean TRUE.

Trong mã OpenSSL, ngoài vấn đề được đề cập ở trên với "(s1 == NULL) ∧ (s2 == NULL)", các điểm bất thường cũng được phát hiện trong các biểu thức "(-2 == rv)" ít nhất là a lỗi đánh máy.

Cũng có báo cáo rằng việc sử dụng ControlFlag có thể giúp xác định hàng trăm lỗi trong phần mềm độc quyền không cụ thể, dẫn đến sự cố và các vấn đề về bộ nhớ.

Cuối cùng nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết Trong liên kết sau đây. Đối với những người quan tâm đến việc có thể xem mã nguồn, lấy nó hoặc sao chép nó trong một kho lưu trữ, họ có thể làm như vậy từ liên kết sau.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.