gpt4 book ai didi

visual-studio-2008 - 如何从 VS2008 代码分析中排除 MFC 代码

转载 作者:行者123 更新时间:2023-12-05 00:43:32 28 4
gpt4 key购买 nike

我有一个 C++/CLI 项目,它使用 CWinFormsControl 和 CWinFormsView 在我的 MFC View 中创建 .NET 控件。为此,我需要#include "afxwinforms.h"。

当我对项目运行代码分析时,我总是收到有关我包含的一些 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 警告,以便我可以更清楚地看到我自己的警告。但是如何?我不想为了解决这个问题而从我自己的代码中禁用任何警告。

最佳答案

通过将以下内容添加到 stdafx.h,删除了所有 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

下次 :在发布 SO 问题之前必须更仔细地思考:D

关于visual-studio-2008 - 如何从 VS2008 代码分析中排除 MFC 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com