Pull to refresh
612
17
Андрей Карпов @Andrey2008

Директор по развитию бизнеса

Send message
Извините, но ни фига Вы это регекспом не напишите. Уж поверьте. Даже в самом простом случае:

void Foo(const A x) {}


Вам требует знать тип A. Если A это int, то ругаться смысла нет. Если это класс, то стоит ругнуться. Хотел бы я посмотреть, как вы регекспом будете в Си++ программе раскрывать тип.

Не знаете предметную область — не пишите.
«Есть порой очень специфические правила, которые разработчик встраивать в свою систему не будет».
А вот с этим проблем никаких нет. У нас уже есть пара правил сделанных на заказ. Они весьма специфичны, но по умолчанию отключены и никак другим не мешают.
Да, сейчас такого интерфейса нет. Его можно сделать, но это огромная задача. И главная она практически не имеет смысла. Хоть сколько-нибудь серьезное правило стороннему человеку будет крайне сложно/невозможно реализовать самостоятельно. Возникает вопрос, если реализация требует погружения в область статического анализа, а так же собственно требует усилий на реализацию, то не лучше ли использовать свои силы для своих проектов, а реализацию правил передать людям которые сделают это быстрее и дешевле. Следует понимать, что реализация самому дороже, чем оплата этой реализации (например, нам).
«Пока мерил заметил, что вызывается компилятор для препроцессинга, появляются файлы *.i.»
Да. Мы пока вынуждены использовать для препроцессирования файлов компилятор Visual C++.
Что-то пошло не так. Помогите разобраться. Прошу написать мне в почту karpov[@]viva64.com. Если возможно, сгенерируйте *.i файл, упакуйте и пришлите мне. Это можно сделать, установив в настройках «не удалять временные файлы».
Так ведь в нормальной ОС нормальные идеальные безглючные программы. Разве не так? Так зачем же вам тогда там анализатор? :)))
Как я понимаю, вы смотрите на предупреждения, относящиеся к проверке 64-битных программ. Отожмите кнопку «64».
p.s. В статье описано как это сделать и даже картинка есть. :)
Express версии не поддерживают модули расширения (plugins). Таким образом интеграция с Express версиями просто невозможна.
Упс. Я картинками наш же сайт www.viva64.com завалил. Поду перезаливать еще куда-то…
По силам. Можно улучшить диагностику, добавив исключение на подобные случаи. Но все дырки не залепишь. Ложные срабатыванию будут все равно.
Сейчас никаких диагностик на лики/двойное удаление и т.п. нет. Кстати в этом направлении очень даже хорош динамический анализ в Parallel Studio.
Ладно, признаюсь, я слукавил. :) Я выбрал ложное срабатывание, которое имеет какой-то смысл. Вот другие примеры (не из Fennec):

1) Буковки не понравились
ml_head->sign[0]       = 'f';
ml_head->sign[1]       = 'm';
ml_head->sign[2]       = 'l';
ml_head->sign[3]       = 'f';


V525 The code containing the collection of similar blocks. Check items ''f'', ''m'', ''l'', ''f'' in lines 1171, 1172, 1173, 1174.

2) Функции не понравились
__int64 GetFilePos() const { return FilePos; };
__int64 GetViewFilePos() const { return FilePos; };


V524 It is odd that the 'GetViewFilePos' function is fully equivalent to the 'GetFilePos' function (viewer.hpp, line 226).

Можно конечно написать одну через другую, но от этого совсем не станет лучше.


3) Циклы не понравились
for(c = lb; c <= ub; c++)
{
  if (!(xlb <= xlat© && xlat© <= ub))
  {
    Range * r = new Range(xlb, xlb + 1);
    for (c = lb + 1; c <= ub; c++)
    {
      r = doUnion(r, new Range(xlat©, xlat© + 1));
    }
    return r;
  }
}


V535. The variable 'c' is being used for this loop and for the outer loop

Хоть два цикла по одной переменной, это не страшно, так как мы потом сразу сделаем return r;.
По многочисленным просьбам (в личной почте) картинку убрал. И что в ней такого…
Это кстати печально. Я подозреваю, что это несколько нам портит рейтинг, озлобляет на наши письма спамфильтры и так далее. Я уже даже жаловался немного на это.
В лоб так делать — идея плохая. Но можно подумать, быть может, что-то альтернативное будет хорошо.
Берут понемногу. 64-битные ошибки ищут.
Это совсем не дорого по сравнения с…
Анализ общего назначения будет бесплатен. Каждый сможет скачать и попробовать без ограничений новый набор правил.

А как дальше пойдет развития загадывать рано. Может спонсора найдем и тогда так и останемся бесплатными и может даже станем open source. Быть может захотим продавать. Сейчас рано думать. Слабоваты мы. В начале надо увеличить базу ошибок, понравиться людям и так далее.
Только через установку новых версий. Хотя идея интересная, надо будет в дальнейшем подумать.

Information

Rating
435-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development