Хромов Александр

56
Рейтинг

honomer
Александр Хромов



  •   Регистрация: 05.09.2008 (15 лет назад)

  •   Был(а) на сайте: 25.04.2024

Друзья
  • Дмитрий Малышев
  • Андрей Волин
Подписчики 4

Группы

Профессиональный разработчик

Рейтинг 56


Комментарии

DevСтатический анализатор кода для встроенного языка 1С#59 08.06.16 15:56
(58) so-quest, правила в приведённом виде - это не язык. и нужно будет делать их анализ и интерпретацию.
В общем, я запишу и подумаю.
DevСтатический анализатор кода для встроенного языка 1С#57 08.06.16 15:39
(55) naf2000, Если вы серьёзно не понимаете зачем это, то дискуссия видится бессмысленной.
DevСтатический анализатор кода для встроенного языка 1С#56 08.06.16 15:37
(53) so-quest, ecl - это Embedable Common Lisp? Если да, ну и зачем оно мне - в QT уже есть встроенная поддержка QtScript.

DevСтатический анализатор кода для встроенного языка 1С#54 08.06.16 15:29
(45) Zlohobbit, при клике на сообщении курсор переходит на строку, где диагностировали ошибку. Этого не достаточно?
DevСтатический анализатор кода для встроенного языка 1С#52 08.06.16 14:18
(50) so-quest,
про вывод дерева понял. запишу себе в план.

про то, где сложность реализации. Вот есть правило:
(defrule :where 'lexer
:name 'check-id-length
:token ':identifier
:description "Длинна переменной меньше 2 символов"
:check #'(lambda (text type start end file index data)
(> 2 (length text ))))

сложность хотя бы в том, что в С++ нет возможности взять лямбду в виде куска кода из файлы и выполнить. Т.е. Нужно будет написать ещё один интерпретатор. или встроить какой-то, типа lua.

про построение анализаторов - интересно, но примеров анализатора, основанного на правилах (о чём я собственно и задавал вопрос), которые мог бы задавать непосредственно пользователь я там что-то не обнаружил. Плохо искал?
DevСтатический анализатор кода для встроенного языка 1С#49 06.06.16 17:16
(48) so-quest, Сделать вывод дерева - проблем нет. Как я уже выше спросил - какой в этом смысл? Кому это нужно и для чего? От этого зависит что и как выводить.
Нужно ли, в конце концов, вообще тратить на это время?
Про генераторы я в курсе. Flex, bison, flex++, bison++, spirit... и иже с ними. А так же про проблемы левой рекурсии и адские сообщения компилятора у некоторых.

Что же про разработку основанную на правилах - считаю, что это ни разу не тривиальная задача по масштабам сравнивая и даже наверное больше с самим анализатором. Время затраченное на её разработку можно потратить довольно много и без особого успеха. Ведь это по сути - интерпретатор ещё одного языка, который будет описывать эти правила.

Можете привести пример хотя бы одного анализатора, который использует такой подход? Я поглядел в википедии, но что-то ничего там такого не нашёл, хотя, нужно признаться, искал тоже не очень сильно.
DevСтатический анализатор кода для встроенного языка 1С#47 06.06.16 14:29
(44) so-quest, про разбор я уже писал - antlr4 пока не поддерживает С++
Писать самостоятельно пользовательские правила и их интерпретацию - я пока не вижу перспективы и ресурсов для этого, что самое главное. так же как и вывод дерева в файл, Это-то вообще зачем? Чтобы использовать в сторонних инструментах? И в каком формате?
Пока хочется документировать нормально, сделать настройку списка проверяемых правил, исправить ошибки, внести новые :) правила.
Можно и расчет метрик кода.

Остальное, как мне кажется, сейчас не так важно.
DevСтатический анализатор кода для встроенного языка 1С#46 06.06.16 14:24
(45) Zlohobbit, я подумывал сделать сортировку списка ошибок и его фильтрацию по типам и процедурам. Поиск, по-моему, тут не очень пригодится.
Для анализа cf, epf, erf - их нужно распаковывать, а это уже другой компот: уже существуют такие инструменты, зачем писать ещё один.
DevСтатический анализатор кода для встроенного языка 1С#40 05.06.16 12:34
Коллеги, вопрос: кроме понятного желания "больше правил" и хотелки "подкрашивающий редактор" есть ещё какие-то пожелания по функционалу, которые вы считаете важными, но они отсутствуют? Настройка списка правил для проверки и т.д.?
DevСтатический анализатор кода для встроенного языка 1С#39 03.06.16 19:47
(38) premier, спасибо. Переформулирую в следующей версии