LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Мне вот интересно, вы постоянно пишите обзоры на всякие обнаруженные баги в разных опенсорсных проектах, но почему я не увидел ни одной статьи насчет того, как именно работает под капотом эта ваша PVS студия? Чтоб выявить ряд ошибок, которые ваша PVS студия выявляет, фактически надо реимплементировать часть компилятора, делать вещи наподобии constant folding и constant propagation, строить всякие абстрактные синтаксические деревья. Например если есть код

if (a == 1 && ((a << 1) == 1))
{
   некое_действие();
}
то условие всегда ложно, но тут надо доказать, что оба условия одновременно не могут быть верны. Или ваша штука не умеет такие вещи обнаруживать? http://goo.gl/iVokc3 компиляторы например умеют такой код выбраывать. Какие абстрактные представления при анализе кода используются в ващей системе, и какие есть потенциальные ограничения выбранного вами подхода при анализе кода? Есть ли там подобие системы символьных вычислений для выявления явно странного и нелогичного кода? Вот советую написать статью именно про то, какие подходы, какие абстрактные представления кода и какие алгоритмы используются при анализе там у вас. Надеюсь, это не является какой-то коммерческой тайной?

Исходная версия SZT, :

Мне вот интересно, вы постоянно пишите обзоры на всякие обнаруженные баги в разных опенсорсных проектах, но почему я не увидел ни одной статьи насчет того, как именно работает под капотом эта ваша PVS студия. Чтоб выявить ряд ошибок, которые ваша PVS студия выявляет, фактически надо реимплементировать часть компилятора, делать вещи наподобии constant folding и constant propagation. Например если есть код

if (a == 1 && ((a << 1) == 1))
{
   некое_действие();
}
то условие всегда ложно, но тут надо доказать, что оба условия одновременно не могут быть верны. Или ваша штука не умеет такие вещи обнаруживать? http://goo.gl/iVokc3 компиляторы например умеют такой код выбраывать. Какие абстрактные представления при анализе кода используются в ващей системе, и какие есть потенциальные ограничения выбранного вами подхода при анализе кода? Есть ли там подобие системы символьных вычислений для выявления явно странного и нелогичного кода? Вот советую написать статью именно про то, какие подходы, какие абстрактные представления кода и какие алгоритмы используются при анализе там у вас. Надеюсь, это не является какой-то коммерческой тайной?