Еще раз Code Analysis — не позволяет проверять 64-битне сборки. И все тут. Ну если только это на днях сделали, а я еще не знаю про это. Попробуйте.
Зачем вы их между собой сравниваете, если они решают разные задачи?
Да мы бы и не стали сравнивать, но потенциальные пользователи неоднократно хотели видеть сравнение Viva64 с Code Analysis for C/C++. Вот и «сравнили».
Я уже молчу про то, сколько ваш инструмент дает false positives в отличие от варнингов студии :)
Специфика такая. Ибо не понятно, int это хорошо в данном месте или плохо. А вот статический анализатор общего назначение, который появится в PVS-Studio, будет выдавать мало ложных срабатываний.
Я много слышал, про правильные программы и про правильный код, но ни разу не видел. Я верю (хочу верить), что он есть. Но эти брильянтовые исключения только подтверждают правила.
Внимательно перечитайте статью. Сравнение с Code Analysis for C/C++ производилось и на 32-битных проектах. И Code Analysis for C/C++ не помог выявить ни одной 64-битной ошибки.
Боле того добавлю, что я сам лично просмотрел все диагностические правила Code Analysis for C/C++ и не увидел относящихся к поиску 64-битных дефектов. Таким образом, Code Analysis for C/C++ никак не помогает в выявлении 64-битных ошибок, что нисколько не умоляет полезность самого Code Analysis for C/C++. Таблица совершенно честна. Если не ясно, какие 64-битные проблемы мы пытаемся ловить, то — habrahabr.ru/blogs/cpp/97751/
Ой, только не надо про «64-bit portability warnings» :). Я уже писал, писал, что это маркетинговая фича и не более, но все равно ее вспоминают.
64 бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все... Аннотация. Данная статья ставит своей задачей ответить на ряд вопросов, касающихся безопасного переноса Си/Си++ кода на 64-битные системы. Статья написана как ответ на часто обсуждаемую в форумах тематику, связанную с использованием ключа /Wp64 и инструмента Viva64.
А тут и про Code Analysis for C/C++ будет: Сравнение возможностей PVS-Studio и Visual Studio 2010 по выявлению дефектов в 64-битных программах. Аннотация. В статье сравниваются три механизма анализа кода с точки зрения выявления 64-битных ошибок: компилятор Visual C++2010, компонент Code Analysis for C/C++ входящий в состав Visual Studio 2010 Premium/Ultimate и анализатор Viva64 входящий в состав PVS-Studio 3.60. Показаны возможности как по выявлению дефектов в 64-битных проектах, так и предварительной диагностики 64-битных ошибок еще в 32-битном проекте.
Золотые слова. Мы вот с неверными представлениями о 64-битности бьемся. Microsoft убедил мир, что в начале достаточно включить /Wp64, ну а чуть позже перекомпилировать проект в 64-битном режиме и получите 64-битную программу. И теперь доносить мысль, что не все так хорошо, очень сложно. А тем более если у кого то что-то «работает».
«По полученному AST можно ходить уже вручную написанным кодом.»
Все не так. Как раз задача построить AST проще, чем потом его обходить и собирать информацию. Построение дерева — дело относительно нехитрое. Тут можно хоть руками, хоть не руками. Намного сложнее потом раскрывать typedef, определять тип объектов, заглядывать в namespace, работать с областями видимости переменных, что-то делать с шаблонными классами, сопоставлять фрагмент дерева и изначального текста программы, анализировать влияние pragma OpenMP и искать параллельные ошибки и так далее.
А все почему-то считают, что самое важное — дерево построить, а потом все почти само получится. :)
У меня был. И когда его не стало, я стал счастливее. Когда Вы ощутите, насколько это удобно не замарачиваться с ним — тогда и увидите смысл в его отсутствии. :)
В Win64 тип int точно не будет 64-битным. В unix мире существуют системы, где int 64-битный. Но и там размер int в основном равен 32-битам. Вообще размеры типов зависят от используемой модели данных.
Кстати, во второй части статьи будет табличка, где будут приведены размеры и границы выравнивания некоторых базовых типов.
Вы возможно имели в виду
typedef int64 int?
Если да, то это будет неработоспособно по ряду причин.
:)
p.s.
Информация: мы не только Viva64 предлагаем, но и готовы проекты переносить на 64-битные системы в режиме аутсорса.
Зачем вы их между собой сравниваете, если они решают разные задачи?
Да мы бы и не стали сравнивать, но потенциальные пользователи неоднократно хотели видеть сравнение Viva64 с Code Analysis for C/C++. Вот и «сравнили».
Я уже молчу про то, сколько ваш инструмент дает false positives в отличие от варнингов студии :)
Специфика такая. Ибо не понятно, int это хорошо в данном месте или плохо. А вот статический анализатор общего назначение, который появится в PVS-Studio, будет выдавать мало ложных срабатываний.
Code Analysis for C/C++ анализирует 64-битные билды — НЕВЕРНО. Он выдает D9040. См. Visual Studio Team System, /analyze and D9040.
Боле того добавлю, что я сам лично просмотрел все диагностические правила Code Analysis for C/C++ и не увидел относящихся к поиску 64-битных дефектов. Таким образом, Code Analysis for C/C++ никак не помогает в выявлении 64-битных ошибок, что нисколько не умоляет полезность самого Code Analysis for C/C++. Таблица совершенно честна. Если не ясно, какие 64-битные проблемы мы пытаемся ловить, то — habrahabr.ru/blogs/cpp/97751/
64 бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все...
Аннотация. Данная статья ставит своей задачей ответить на ряд вопросов, касающихся безопасного переноса Си/Си++ кода на 64-битные системы. Статья написана как ответ на часто обсуждаемую в форумах тематику, связанную с использованием ключа /Wp64 и инструмента Viva64.
А тут и про Code Analysis for C/C++ будет:
Сравнение возможностей PVS-Studio и Visual Studio 2010 по выявлению дефектов в 64-битных программах.
Аннотация. В статье сравниваются три механизма анализа кода с точки зрения выявления 64-битных ошибок: компилятор Visual C++2010, компонент Code Analysis for C/C++ входящий в состав Visual Studio 2010 Premium/Ultimate и анализатор Viva64 входящий в состав PVS-Studio 3.60. Показаны возможности как по выявлению дефектов в 64-битных проектах, так и предварительной диагностики 64-битных ошибок еще в 32-битном проекте.
«По полученному AST можно ходить уже вручную написанным кодом.»
Все не так. Как раз задача построить AST проще, чем потом его обходить и собирать информацию. Построение дерева — дело относительно нехитрое. Тут можно хоть руками, хоть не руками. Намного сложнее потом раскрывать typedef, определять тип объектов, заглядывать в namespace, работать с областями видимости переменных, что-то делать с шаблонными классами, сопоставлять фрагмент дерева и изначального текста программы, анализировать влияние pragma OpenMP и искать параллельные ошибки и так далее.
А все почему-то считают, что самое важное — дерево построить, а потом все почти само получится. :)
А так я тоже на много могу пожаловаться в мире.
«Смахивает на рекламную подачку» — Простите, рекламу ЧЕГО ??
И буду рад узнать о замеченных ляпах, опечатках, неточностях и так далее. Но с этим прошу в почту.
Прошу пояснить, о чем Вы? Быть может Вы какую то опечатку/ошибку в статье заметили? А то не понятно о чем речь.
Кстати, во второй части статьи будет табличка, где будут приведены размеры и границы выравнивания некоторых базовых типов.
Вы возможно имели в виду
typedef int64 int?
Если да, то это будет неработоспособно по ряду причин.