4

MFCビューに.NETコントロールを作成するためにCWinFormsControlとCWinFormsViewを使用するC++/CLIプロジェクトがあります。これを行うには#include "afxwinforms.h"が必要です。VS2008コード分析からMFCコードを除外する方法

プロジェクトでコード分析を実行すると、私が含まれているMFCクラスに関する警告が表示されます。例:

3>Running Code Analysis... 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.h(87) : warning: CA1704 : Microsoft.Naming : In method 'CWin32Window::CWin32Window(HWND__*)', correct the spelling of 'Wnd' in parameter name 'hWnd' or remove it entirely if it represents any sort of Hungarian notation. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.h(87) : warning: CA1704 : Microsoft.Naming : In method 'CWin32Window::CWin32Window(HWND__*)', correct the spelling of 'h' in parameter name 'hWnd' or remove it entirely if it represents any sort of Hungarian notation. 
3>warning: CA1051 : Microsoft.Design : Because field 'CWinFormsEventsHelper::m_pControl' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it. 
3>warning: CA1051 : Microsoft.Design : Because field 'CWinFormsEventsHelper::m_pSink' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.inl(60) : warning: CA1704 : Microsoft.Naming : In method 'CWinFormsEventsHelper::OnHandleCreated(Object^, EventArgs^)', consider providing a more meaningful name than parameter name 'o'. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.inl(60) : warning: CA2109 : Microsoft.Security : Consider making 'CWinFormsEventsHelper::OnHandleCreated(Object^, EventArgs^)' not externally visible. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.inl(67) : warning: CA1704 : Microsoft.Naming : In method 'CWinFormsEventsHelper::OnHandleDestroyed(Object^, EventArgs^)', consider providing a more meaningful name than parameter name 'o'. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.inl(67) : warning: CA2109 : Microsoft.Security : Consider making 'CWinFormsEventsHelper::OnHandleDestroyed(Object^, EventArgs^)' not externally visible. 
3>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwinforms.inl(54) : warning: CA1704 : Microsoft.Naming : Correct the spelling of 'Unadvise' in member name 'CWinFormsEventsHelper::Unadvise(IHandleEvents*)' or remove it entirely if it represents any sort of Hungarian notation. 
3>warning: CA1823 : Microsoft.Performance : It appears that field 'context_node_base::_Needs_Context' is never used or is only ever assigned to. Use this field or remove it. 
3>warning: CA1812 : Microsoft.Performance : 'context_node<char const *,System::String ^>' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor. 
3>c:\program files\microsoft visual studio 9.0\vc\include\msclr\marshal.h(366) : warning: CA2201 : Microsoft.Usage : 'context_node<char const *,System::String ^>::context_node<char const *,System::String ^>(const char*&, String^)' creates an exception of type 'OutOfMemoryException', an exception type that is reserved by the runtime and should never be raised by managed code. If this exception instance might be thrown, use a different exception type. 

明らかに私は自分のものをより明確に見ることができるようにこれらのMFCの警告を抑制したいと思います。しかしどうですか?私はこの問題を回避するために自分のコードから警告を無効にしたくありません。

答えて

5

、すべてのMFCの警告は、プロジェクトの抑制ファイルに、エラー一覧]ウィンドウからの警告を抑制することによって発見(削除されました、その後、stdafxにそれらを移動する)

CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes", Scope="member", Target="msclr.interop.context_node<char const *,System::String ^>.#.ctor({modopt(System.Runtime.CompilerServices.IsConst),modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte)}System.SByte*{modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced)}*,System.String)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#m_pControl"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#m_pSink"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope="member", Target="msclr.interop.context_node_base.#_Needs_Context"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope="type", Target="msclr.interop.context_node<char const *,System::String ^>"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="Wnd", Scope="member", Target="Microsoft.VisualC.MFC.CWin32Window.#.ctor(HWND__*)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="h", Scope="member", Target="Microsoft.VisualC.MFC.CWin32Window.#.ctor(HWND__*)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="o", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#OnHandleCreated(System.Object,System.EventArgs)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#OnHandleCreated(System.Object,System.EventArgs)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="o", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#OnHandleDestroyed(System.Object,System.EventArgs)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#OnHandleDestroyed(System.Object,System.EventArgs)"); 
CA_GLOBAL_SUPPRESS_MESSAGE("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="Unadvise", Scope="member", Target="Microsoft.VisualC.MFC.CWinFormsEventsHelper.#Unadvise(Microsoft.VisualC.MFC.IHandleEvents*)"); 
#include <afxwinforms.h>  // MFC Windows Forms support 

次の時間は:D

1

はこのようafxwinforms.h含める:STDAFX.Hするには、次のように追加することにより

#pragma warning(push) 
//disable whatever you need with #pragma warning(disable: warning number) 
#include <afxwinforms.h> 
#pragma warning(pop) 
+0

あなたがすることはできません:SO質問を投稿する前に難しく考える必要があります#pragmaを使用してコード分析の警告を表示しないようにしてください。しかし、あなたの答えは私の考えをより慎重にしてくれました。そのため、私は+1 – demoncodemonkey

関連する問題