2012-06-07 5 views
5

Недавно я установил бета-версию VS2011, чтобы получить представление о новых возможностях C++ 11, которые Microsoft реализовала в последней версии своего компилятора.Анализ кода VS2011

У меня возникла неожиданная проблема при возврате к использованию VS2010. Я открыл образец образца Windows SDK 7.1 в VS2010.

Теперь, когда я строю в VS2010, я получаю следующий вывод, обозначая, что инструмент анализа кода выполняется (по-видимому, после компиляции, но перед соединением)

1>------ Rebuild All started: Project: MFCaptureToFile, Configuration: Debug Win32 ------ 
1> winmain.cpp 
1> capture.cpp 
1> Running Code Analysis for C/C++... 
1>capture.cpp(112): error C2220: warning treated as error - no 'object' file generated 
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(105): warning C6309: Argument '3' is null: this does not adhere to function specification of 'IMFAttributes::GetAllocatedString' 
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(105): warning C6387: 'argument 3' might be '0': this does not adhere to the specification for the function 'IMFAttributes::GetAllocatedString': Lines: 98, 103, 105 
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(353): warning C6309: Argument '3' is null: this does not adhere to function specification of 'IMFAttributes::GetAllocatedString' 
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(353): warning C6387: 'argument 3' might be '0': this does not adhere to the specification for the function 'IMFAttributes::GetAllocatedString': Lines: 336, 338, 340, 343, 351, 353 
1>C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\ks.h(53): error C2220: warning treated as error - no 'object' file generated 
1>c:\program files\microsoft sdks\windows\v7.1\include\ks.h(53): warning C6244: Local declaration of 'GUID_NULL' hides previous declaration at line '28' of 'c:\program files\microsoft sdks\windows\v7.1\include\cguid.h' 
1> Generating Code... 
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 

Я попытался определить, какие изменения для проекта был запущен инструмент анализа кода, но я ничего не могу найти в свойствах проекта. Я попытался перезагрузить проект в VS2011, но нет возможности для анализа кода, который я могу отключить (as suggested on MSDN).

Проект полностью родной C++, я никогда не использовал C++ с CLR

Кроме того, я пытался открывать другие проекты (мой собственный), и теперь они также применение этой стадии анализа кода. Во многих случаях это предотвращает создание из-за проблем с кодом Microsoft! Похоже, что сборки в VS2011 бета-версии преуспевают.

Может кто-нибудь предложить понять, как отключить этот инструмент анализа кода? Я надеюсь, что вы оставите бета-версию VS2011, поэтому, пожалуйста, воздержитесь от ее удаления, если только это не единственный вариант!

ответ

12

Я думаю, что только VS2010 Ultimate поддерживает анализ кода. У меня нет VS2012, но я думаю, что вы должны отредактировать файл vcxproj вручную.

Посмотрите на один или оба из этих Params, если они существуют в файле проекта: <RunCodeAnalysis>true</RunCodeAnalysis> и <EnablePREfast>true</EnablePREfast>

Изменить оба значения в false и он должен работать.

Обратите внимание, что эти имена используются VS2010, и я не уверен, изменили ли они его на VS2012.

+9

Ничего себе. Я знал, что кто-то видел эту проблему раньше. Ответы, подобные этим, - это дань уважения работе сайта. +1 – sehe

+0

+1 для неясных знаний – thecoshman

+0

Анализ статического кода также включен в редакцию Professional и Premium: https://www.microsoft.com/visualstudio/11/de-de/products/compare Файлы проекта VS2012 и VS2010 полностью совместимы, поэтому имена одинаковы. – habakuk

Смежные вопросы