The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Intel опубликовал ControlFlag 1.2, инструмент для выявления аномалий в исходных текстах

10.05.2022 12:22

Компания Intel опубликовала выпуск инструментария ControlFlag 1.2, позволяющего выявлять ошибки и аномалии в исходных текстах, используя систему машинного обучения, натренированную на большом объёме существующего кода. В отличие от традиционных статических анализаторов, ControlFlag не применяет готовых правил, в которых трудно предусмотреть все возможные варианты, а отталкивается от статистики использования всевозможных языковых конструкций в большом числе существующих проектов. Код ControlFlag написан на языке С++ и открыт под лицензией MIT.

Новый выпуск примечателен реализацией полной поддержки выявления аномалий и обучения на основе типовых шаблонов кода для языка С++. В прошлых версиях подобная поддержка была обеспечена для языков C и PHP. Система подходит для определения в коде различных видов проблем, от определения опечаток и неверного сочетания типов, до выявления аномалий в условных выражениях "if" и пропущенных проверок значения NULL в указателях. Система обучается путём построения статистической модели имеющегося массива кода открытых проектов на языках C, C++ и PHP, опубликованных в GitHub и подобных публичных репозиториях.

На стадии обучения система определяет типовые шаблоны построения конструкций в коде и строит синтаксическое дерево связей между этими шаблонами, отражающее поток выполнения кода в программе. В итоге формируется эталонное дерево принятия решений, объединяющее опыт разработки всех проанализированных исходных текстов. Для проверяемого кода выполняется похожий процесс определения шаблонов, которые сверяются с эталонным деревом принятия решений. Большие расхождения с соседними ветвями свидетельствуют о наличии аномалии в проверяемом шаблоне.



  1. Главная ссылка к новости (https://github.com/IntelLabs/c...)
  2. OpenNews: IBM открыл CodeNet для систем машинного обучения, транслирующих и проверяющих код
  3. OpenNews: Intel открыл код системы машинного обучения ControlFlag для выявления ошибок в коде
  4. OpenNews: Релиз свободного статического анализатора кода frama-clang 0.0.5
  5. OpenNews: Facebook открыл код статического анализатора Mariana Trench
  6. OpenNews: Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57164-control-flag
Ключевые слова: control-flag, intel, debug
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:38, 10/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Просто натренерованная нейронка?
     
     
  • 2.12, Аноним (-), 14:56, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще даже и датасеты дают. А что - не так уж и плохо как +1 инструмент в копилку. Правда размер жирного сета конечно конский.
     
     
  • 3.21, microsoft (?), 18:28, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ссылка есть где качать?
     

  • 1.2, Аноним (2), 12:39, 10/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Интел за всё берётся смело…
     
     
  • 2.3, Аноним (3), 12:57, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Всё превращается в бабло
     
     
  • 3.9, Аноним (9), 13:43, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Рука Мидаса по опеннетовски!
     

  • 1.6, YetAnotherOnanym (ok), 13:06, 10/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    > натренированную на большом объёме существующего кода

    Аргумент "все так пишут" вышел на новый уровень.

     
     
  • 2.8, Аноним (8), 13:18, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уже есть системы типа CoPilot и его аналоги. Которые сами за тебя код пишут по факту.
     

  • 1.10, ИмяХ (?), 13:54, 10/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >>на основе типовых шаблонов кода

    то есть по сути сейчас уже ничего нового нельзя придумать. Всё уже придумано до нас. А если придумать что-то своё, то это уже будет "аномалия"

     
     
  • 2.11, тоже Аноним (ok), 13:58, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет. Используется очевидный факт - 90% кода, написанного на этих языках - это реализация одних и тех же более высокоуровневых абстракций, в логике которых кодеры допускают примерно одни и те же банальные ошибки. Вот именно на этот кейс нейронка и натренирована.
     
  • 2.23, Crazy Alex (ok), 19:38, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, небольших паттернов довольно ограниченной количество, вопрос в том, как они объединяются в большую систему.

    Кстати, и сейчас если на ревью видишь, что в коде "придумано что-то своё" первый вопрос - а что это даёт и нельзя ли заменить стандартным подходом. И в 99% случаев оказывается, что не только можно заменить, а и нужно.

     

  • 1.14, анонимныйнекодим (?), 15:24, 10/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Новый выпуск примечателен реализацией полной поддержки выявления аномалий и обучения на основе типовых шаблонов кода для языка С++.

    А под капотом-то tree-sitter. Значит и поддержка других языков не за горами.
    Да-да, и самого безопасного - тоже.

     
     
  • 2.15, анонимныйнекодим (?), 15:43, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    tree_abstraction.h
    32:#include <regex> // NOLINT [build/c++11]
    278:  std::string substr_nonewline =  regex_replace(substr, std::regex("\n"), "");
    279:  return regex_replace(substr_nonewline, std::regex("\r"), "");

    Это позор, я считаю.

     
     
  • 3.16, Фняк (?), 16:49, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Интел же, надо продавать новые процессоры
     
     
  • 4.28, Аноним (28), 09:05, 11/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    "Интел и программирование" из той же темы, что и "Майкрософт и информационная безопасность".
     
  • 3.17, Аноним (17), 17:39, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Позор, не позор - не важно. Главное что не аномалия.
     
     
  • 4.31, Аноним (-), 15:49, 11/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А ты уверен что они запускали эту штуку на самой себе?
     
  • 3.19, Аноним (19), 18:05, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Только один я ничего не понял?
     
     
  • 4.20, data man (ok), 18:25, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Они используют std::regex для удаления CR/LF.
    При этом для компиляции требуется C++17.
    А там есть чудные std::basic_string::replace, boyer_moore_searcher и boyer_moore_horspool_searcher.
      
    З.Ы. Да, некодим был я. :)
     
     
  • 5.22, Аноним (22), 19:29, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а вот эти чудные точно будут лучше std::copy_if?
     
     
  • 6.29, Самый Лучший Гусь (?), 13:33, 11/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На моих данных прирост более 50%
     

  • 1.26, achtosluchilos (ok), 03:13, 11/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Проверил на своем небольшом C++ проекте, везде пишет OKay

    Проверил на Пивас-Студио кроме как хлама типа 64bit(?) визжания (C++ проект для 64 битной платформы X86, какие еще мать его там могут быть 32/64magic ошибки, ноль Си кода вообще, ноль работы с указателями) и всяких тупых предирок оно не нашло.

    Вывод: если не копипастить и не писать код с бодуна или под плеткой тупого начальника, то и ошибки могут лишь быть от "не внимательности".

     
  • 1.27, Аноним (28), 09:02, 11/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что-то по уровню полезности вот это напомнило https://pdos.csail.mit.edu/archive/scigen/ Во всяком случае добавлю в список курьезов студентам на лекции материал разбавлять.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру