Вы рекомендуете включить Анализ кода для C / C ++ при сборке? - PullRequest
3 голосов
/ 21 мая 2010

Я использую Visual Studio 2010, и в моем проекте C ++ / CLI есть две настройки анализа кода:

  1. Включить анализ кода при сборке
  2. Включить анализ кода для C / C ++ при сборке

Мой вопрос касается второй настройки.

Я включил его, и он занимает много времени, и он не находит много.

Вы рекомендуете включить эту функцию? Почему?

Ответы [ 3 ]

6 голосов
/ 16 июля 2010

Два указанных вами параметра управляют автоматическим выполнением анализа кода на управляемом и собственном C ++ соответственно.

  • Анализ кода управляемого кода выполняется механизмом FXCop, анализирующим сгенерированный IL.

  • Анализ кода нативного кода выполняется во время компиляции механизмом PREFast, анализирующим исходный код C ++.

Я настоятельно рекомендую вашим разработчикам запускать CA для своего кода до проверки. Если вы этого не сделаете, вы:

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

  2. Отказывая вашим разработчикам в праве совершенствовать свои навыки, постепенно узнавая, какой код они должны не писать и почему.

  3. Короткая продажа ваших клиентов, потому что именно они будут страдать от сбоев и проблем с безопасностью при использовании вашего продукта.

Кроме того, если вы пишете на родном C ++ и еще не планировали начинать украшать свой код аннотациями SAL, то, честно говоря, кого-то на вашем рабочем месте стоит вытащить на улицу и унизить! В следующей версии аннотаций SAL в скором времени появятся какие-то замечательные штуки - зайдите на него сейчас и на 1037 * путь впереди кривой по сравнению с вашими конкурентами! :)

2 голосов
/ 21 мая 2010

Мы используем LINT для статического анализа кода для простых приложений C ++ (нет .Net, нет C ++ / CLI). Это отличается от того, что вы используете, но, вероятно, могут применяться те же принципы.

Мы выполняем LINT так:

  • Во время сборки через LINT запускаются только измененные источники (файлы CPP). Возможно, многие другие файлы перекомпилируются (если изменен заголовочный файл), но только измененные файлы .CPP запускаются через LINT.
  • Запуск статического анализа кода для всех файлов на сервере непрерывной интеграции. Если он что-то найдет, отправьте сообщение об ошибке разработчикам, которые недавно внесли изменения в систему управления версиями, или главному разработчику.

Что вы могли бы сделать дополнительно, это выполнить статический анализ кода для всех файлов, которые передаются в вашу систему управления версиями. Например. в Subversion это можно сделать с помощью триггера фиксации.

2 голосов
/ 21 мая 2010

Никогда ничего не делал для меня. Теоретически, он должен помогать отлавливать логические ошибки, но я никогда не обнаруживал, что он сообщает что-либо

...