All streams
Search
Write a publication
Pull to refresh
611
7
Андрей Карпов @Andrey2008

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

Send message
Эх, ушел клиент! Теперь его еще лет 5 ждать!
:)

p.s.
Информация: мы не только Viva64 предлагаем, но и готовы проекты переносить на 64-битные системы в режиме аутсорса.
Тут ИИ нужен, иначе масса неверных перенаправлений будет. Лучше ручками.
Правило. Программисты как правило пишут плохой, безалаберный код.
Для m_sName сделали (LPCTSTR), а для sTo не сделали. Видимо такое получается в процессе рефакторинга/правок разными людьми.
Еще раз Code Analysis — не позволяет проверять 64-битне сборки. И все тут. Ну если только это на днях сделали, а я еще не знаю про это. Попробуйте.

Зачем вы их между собой сравниваете, если они решают разные задачи?
Да мы бы и не стали сравнивать, но потенциальные пользователи неоднократно хотели видеть сравнение Viva64 с Code Analysis for C/C++. Вот и «сравнили».

Я уже молчу про то, сколько ваш инструмент дает false positives в отличие от варнингов студии :)
Специфика такая. Ибо не понятно, int это хорошо в данном месте или плохо. А вот статический анализатор общего назначение, который появится в PVS-Studio, будет выдавать мало ложных срабатываний.
Я много слышал, про правильные программы и про правильный код, но ни разу не видел. Я верю (хочу верить), что он есть. Но эти брильянтовые исключения только подтверждают правила.
MS VS TeamSystem x86 прекрасно работает как 32-битными, так и с 64-битными конфигурациями билда, запускается на 32-битных и 64-битных ОС — ВЕРНО.

Code Analysis for C/C++ анализирует 64-битные билды — НЕВЕРНО. Он выдает D9040. См. Visual Studio Team System, /analyze and D9040.
Внимательно перечитайте статью. Сравнение с 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 и искать параллельные ошибки и так далее.

А все почему-то считают, что самое важное — дерево построить, а потом все почти само получится. :)
Если Вы дадите нам денег, то все это будет. Если Вы решитесь сами заняться поддержкой и развитием библиотеки — то это тоже будет. :)

А так я тоже на много могу пожаловаться в мире.

«Смахивает на рекламную подачку» — Простите, рекламу ЧЕГО ??
Вот, что значит студент, не сдавший зачет. :) На всю жизнь рана… :)
Прошу у кого есть, поделиться своими аналогичными примерами.

И буду рад узнать о замеченных ляпах, опечатках, неточностях и так далее. Но с этим прошу в почту.
предлагаю познакомиться с продолжением статьи: часть 2.
У меня был. И когда его не стало, я стал счастливее. Когда Вы ощутите, насколько это удобно не замарачиваться с ним — тогда и увидите смысл в его отсутствии. :)
А VivaMP продается плохо. Из-за этого рассказывать про 64-битные камни намного полезней.
Конечно давайте поговорим о камнях. Но теперь чуть в другом месте. ;-))
>> Далее. если человек путает sizeof(int) и sizeof(int*) то это уже повод задуматься.

Прошу пояснить, о чем Вы? Быть может Вы какую то опечатку/ошибку в статье заметили? А то не понятно о чем речь.
В Win64 тип int точно не будет 64-битным. В unix мире существуют системы, где int 64-битный. Но и там размер int в основном равен 32-битам. Вообще размеры типов зависят от используемой модели данных.

Кстати, во второй части статьи будет табличка, где будут приведены размеры и границы выравнивания некоторых базовых типов.

Вы возможно имели в виду
typedef int64 int?
Если да, то это будет неработоспособно по ряду причин.

Information

Rating
787-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development