10.06.2010
Roll Call v2.46 File-Share
Причина, Roll Call v2.46 File-Share которой статические анализаторы не могут диагностировать подобный код, пожалуй, скрывается в том, Roll Call v2.46 File-Share когда исследовались вопросы переноса под 64 битные системы, то вряд ли Roll Call v2.46 File-Share то представлял себе массивы более чем из 4 миллиардов элементов. А 4 миллиарда Roll Call v2.46 File-Share типа Roll Call v2.46 File-Share это 4 8 32 гигабайт памяти для одного массива. Огромный объем, тем более если учесть, что это 1993 Roll Call v2.46 File-Share год. Именно на это Roll Call v2.46 File-Share приходится большинство публикаций и обсуждений, посвященных использованию 64 битных систем. В результате на возможную некорректную индексацию при использовании типа int никто не обратил внимания, а в дальнейшем вопросы переноса исследовались достаточно редко. И практически ни один статический анализатор Roll Call v2.46 File-Share выдаст предупреждение на приведенный код. Исключением может служить, пожалуй, только анализатор Viva64 http: www. Он был разработан для того, чтобы закрыть пробелы в диагностике 64 битного Си Си кода другими анализаторами, и основан Roll Call v2.46 File-Share вновь проведенных исследованиях. Roll Call v2.46 File-Share у него есть существенный недостаток, заключающийся в том, что это не анализатор общего назначения. Он специализируется только на анализе ошибок, возникающих при переносе кода на 64 битные системы Windows, и поэтому должен быть использован Romi v5.3 Italian только в сочетании с другими анализаторами, чтобы обеспечить надлежащее качество кода. Рассмотрим другой пример:char p;long g long p;С помощью этого простого примера можно проверить, какие модели данных умеет понимать используемый вами статический анализатор. Проблема состоит в том, что большинство из них рассчитаны только на модель данных LP64. Это вновь вызвано историей развития 64 битных систем. Именно модель данных LP64 Rooster v1.0.3.1 на начальных этапах развития 64 битных систем получила наибольшую популярность и сейчас широко используется в Unix мире. В этой модели данных тип long имеет размер 8 байт, а, значит, такой код полностью корректен. Но в 64 битных системах Windows реализована модель данных LLP64, где размер long остался 4 байтовым и, следовательно, приведенный код будет некорректен. В Windows следовало бы, например, использовать тип LONG PTR или ptrdiff t. К счастью, приведенный код будет диагностироваться как опасный как самим компилятором Microsoft Visual C 2005, так и анализатором Viva64. Но всегда следует помнить о подобных подводных камнях при Roll Call v2.46 File-Share статических анализаторов. Вопрос переноса программ на 64 битные системы был подробно обсужден, были реализованы различные методики и правила проверки в статических анализаторах, после чего интерес к этой тематике угас. Прошло много лет, многое изменилось, но правила, по которым осуществляется анализ, остаются без изменений и модификаций. Возможно, разработчики просто не замечают изменений, считая, что вопрос тестирования и проверки 64 битных приложений давно решен. То, что было актуально RonyaSoft ProPoster v2.02.06 10 лет назад, сейчас может таковым не является, но зато появилось много нового. Используя средства статического анализа, убедитесь, что они совместимы с используемой Вами 64 битной моделью данных. Если анализатор не удовлетворяет необходимым условиям, не поленитесь поискать другой или восполнить пробел, используя узконаправленный анализатор Viva64.
RonyaSoft VirtGuard v2.02.10 Romanian Anti-Virus v7.00 Roll Call v2.71 Client-Server Roster Manager v6.01
|