185 похожих чатов

Я, наверное, задолбал этой темой, но, в принципе, можно и

раз в день гонять этот анализ, присылая результаты наутро. В смысле, не так всё отчаянно плохо — можно «договориться» тем или иным образом. Чем-то придётся пожертвовать, но это не так чтобы «совсем бесполезно». Это не win/loose, тут целый спектр.

Если кода достаточно много, даже простая проверка Сшных include guards (тупой regexp, два дня на написание и проверку) выявляет сотни случаев.

Если архитектура анализатора позволяет относительно безболезненно менять абстрактный домен, то уменьшая его мы должны увеличивать производительность. Вроде так?

14 ответов

22 просмотра

Это всё ещё про сложные анализы режима "вся программа"?

> можно и раз в день гонять этот анализ, присылая результаты наутро На практике такое работает очень плохо. Основных проблем 2. 1. Наутро разработчики уже забыли, что конкретно они меняли, и вообще, исправления репортов от статического анализатора в бэклоге не было, так что уезжает на какой-нибудь будущий спринт, который никогда не наступит. 2. Если статический анализатор выдаёт достаточно много ложноположительных срабатываний, но между прогонами "забывает" про них (или вообще нет механизма отметить известные ложноположительные случаи) — это очень быстро всем надоест, и на него просто забьют.

Я так понимаю тут сложность будет где-то 4/3 в степени n, где n - число переменных влияющих на результат проверки. Если у вас число превысит 2 в 20 степени, то можно считать, что это не работает.

Alexander Chichigin
> можно и раз в день гонять этот анализ, присылая ...

У нас работает норм. Статический анализ гонится несколько раз в день, если приезжают новые ошибки - сообщение а слак, там тегают автора ошибки и он идёт исправлять. Без беклогов и спринтов, да.

Mikhail
У нас работает норм. Статический анализ гонится не...

Так анализ гоняется на каждый pull request или "от балды"? Блочит мердж или нет? На предмет каких проблем анализирует?

Лимон Цитрусовый
Ваш анализатор использует sat решатель?

уверенно ничего не понимаю. у нас пивас сейчас, периодически тыкаю палочкой шланг с z3.

Alexander Chichigin
Так анализ гоняется на каждый pull request или "от...

От балды, на каждый мр слишком медленно

Mikhail
От балды, на каждый мр слишком медленно

И примерный объем кода проверяемого ещё напишите для понимания.

Лимон Цитрусовый
И примерный объем кода проверяемого ещё напишите д...

------------------------------------------------------------------------------------ Language files blank comment code ------------------------------------------------------------------------------------ C++ 8382 396303 86958 2297196 C/C++ Header 9480 197202 104427 1065150 C# 7278 114689 42557 628749

Konstantin-Romanov Автор вопроса
Alexander Chichigin
> можно и раз в день гонять этот анализ, присылая ...

Не, ну пункт 1 — это болезнь такая. Альцгеймер.

Konstantin Romanov
Не, ну пункт 1 — это болезнь такая. Альцгеймер.

Есть такое понятие — скорость обратной связи.

Konstantin-Romanov Автор вопроса
Alexander Chichigin
Есть такое понятие — скорость обратной связи.

Я не спорю, что это чудесно. Я вообще люблю, когда обратная связь имеет хотя бы 0.2 сек, а лучше 60 fps. Но я всё клоню к тому, что это не математическая, а инженерная проблема => она не решается на 100%. Но ведь абсолютной неприменимости тоже нет. По Salto ведь даже статьи нет, только презентация. Статью обещали написать. Язык поддерживается не полностью (в смысле, на ряд конструкций стоит failwith "Unimplemented"). В общем, будем посмотреть, что выйдет. Я постараюсь проследить, и, если интересно, рассказать тут.

Konstantin Romanov
Я не спорю, что это чудесно. Я вообще люблю, когда...

Whole-program vs. Compositional (modular, incremental) analysis — именно что математическая проблема. Если её "решать инженерными костылями", то результаты будут абы какими. Если статический анализ невозможно встроить в CI, то результаты тоже будут "как получится", потому что проблемы начнут решаться "по возможности, как время будет". Для академических проектов это "приятный бонус", но для индустриальных коммерческих проектов — очень серьёзная проблема.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта