Не интересно. Про это скажет и компилятор:
warning C4706: assignment within conditional expression
Хочется увидеть те примеры, которые на ловятся компилятором.
Интересный пример. Я даже записал эго в список паттернов, который я создаю впрок для последующей реализации в PVS-Studio. Сейчас анализатор не производит межмодульный анализ. Но возможно через несколько версий мы и до него доберемся. Ресурсов маловато.
Вопрос не в тему. Вы используете что-то из инструментов статического анализа при разработке?
Оказывается я написал здесь неправду. В примере с CharUpperW ошибки нет. И к сожалению меня никто не поправил. Сам заметил, когда решил реализовать аналогичное правило в PVS-Studio.
Дело в том, что CharUpperW может работать как со строкой, так и с отдельными символами. Если старшая часть указателя нулевая, то считается что это не указатель, а символ. Интерфейс WIN API в этом конечно месте опечалил своей кривизной, но код в Notepad++ написан корректно.
Кстати, теперь получается, что Intel C++ вообще не нашел ни одной ошибки.
Я знаю, какой комментарий сейчас будет обязательно написан, поэтому попробую заранее поделиться личным мнением. Моему коллеге, будет высказано, а возможно теперь и нет, следующее замечание:
Это исследование левое/неполное/предвзятое, так как я знаю, что в нашем институте ИПС/ИСП/МГУ/… много людей работает над тематикой создания инструментов для параллельного программирования/параллельной отладки/автоматического распараллеливания.
Так вот, не спорю, работают. Но давайте будем взрослыми людьми и согласимся, что освоить грант и написать статью с формулой в журнал ВАК, это совсем не тоже самое, чем иметь сайт продукта, документацию, поддержку и ВОЗМОЖНОСТЬ СКАЧАТЬ ДИСТРИБУТИВ. Именно по этому, всех этих десятков или даже сотен «инструментов», и нет в исследовании.
Если быть точнее, мы строим не AST, а дерево разбора. То есть не выбрасываем некоторые лишние узлы, которые для нас совсем не лишние. Они помогают выполнять ряд специфических проверок. После построения дерева ходим по нему и собираем различные данные, выполняем проверки.
warning C4706: assignment within conditional expression
Хочется увидеть те примеры, которые на ловятся компилятором.
Вопрос не в тему. Вы используете что-то из инструментов статического анализа при разработке?
Дело в том, что CharUpperW может работать как со строкой, так и с отдельными символами. Если старшая часть указателя нулевая, то считается что это не указатель, а символ. Интерфейс WIN API в этом конечно месте опечалил своей кривизной, но код в Notepad++ написан корректно.
Кстати, теперь получается, что Intel C++ вообще не нашел ни одной ошибки.
Это исследование левое/неполное/предвзятое, так как я знаю, что в нашем институте ИПС/ИСП/МГУ/… много людей работает над тематикой создания инструментов для параллельного программирования/параллельной отладки/автоматического распараллеливания.
Так вот, не спорю, работают. Но давайте будем взрослыми людьми и согласимся, что освоить грант и написать статью с формулой в журнал ВАК, это совсем не тоже самое, чем иметь сайт продукта, документацию, поддержку и ВОЗМОЖНОСТЬ СКАЧАТЬ ДИСТРИБУТИВ. Именно по этому, всех этих десятков или даже сотен «инструментов», и нет в исследовании.
Нет дистрибутива — нет инструмента. Точка.
IntelliJ IDEA это вроде как для Java?
Если сгенерируете и пришлете проект для qutim, то попробую его пощупать.
Разноплановый динамический анализ, как мне кажется, хорошо выполняют инструменты, входящие в Intel Parallel Studio.