Xamarin.IOS。代码分析 - CA2123
Posted
技术标签:
【中文标题】Xamarin.IOS。代码分析 - CA2123【英文标题】:Xamarin.IOS. Code analysis - CA2123 【发布时间】:2016-08-16 21:46:34 【问题描述】:我为我的Xamarin.ios
项目设置了Microsoft Extended Correctness Rules
规则。当我分析时,我遇到了很多麻烦:
-
CA2123:将以下安全属性添加到
BooleanNegationConverter.Convert(object, Type, object, CultureInfo)
以匹配基础方法 LinkDemand
上的 LinkDemand
:SecurityCriticalAttribute
。
为什么我需要设置安全属性?为了什么?还是我必须这样做?
-
CA2134:透明或安全的关键方法
.get()
正在覆盖关键方法 [simple self interface].get()
,违反了方法覆盖规则。 .get()
必须成为安全关键才能覆盖关键虚拟方法或实现关键接口方法。
同样...我如何为 IOS 项目修复它?为什么我有这个问题。
谢谢!
【问题讨论】:
【参考方案1】:代码访问安全性只是部分和experimentally implemented in Mono.
代码访问安全性 (CAS) 是 Mono 1.2 版本中的一项新实验性(即不受支持)功能。它足够完整,可以玩,但不应该在生产中使用(不完整且未经审计)。安全管理器默认关闭。
如果运行时使用此功能,这些警告很重要。它不用于 iOS 和 android。所以你可以忽略它。
【讨论】:
谢谢!我可以对下一个规则使用相同的方式吗?: 1. CA2140 - 透明方法[MetodName]
引用安全关键类型List<T>
。为了在安全透明度规则下允许此引用,[MethodName]
必须成为安全关键或安全关键,或者List<T>
必须成为安全安全关键或透明。 2. CA2146 - 透明或安全关键类型[Type]
派生自关键类型[Interface]
,违反了透明继承规则。 [Type]
必须是关键的,才能从关键类型派生或实现关键接口。
是的,它们都与这个 CAS 功能有关。我还尝试为我的库全局设置安全属性。但问题是,第 3 方库仍然存在这个问题,并且单元测试运行器不会在 Windows 上运行测试,因为这是 .NET 并且 .NET 实现了此功能。因此,忽略它们并记录我们这样做的原因,就是我们在项目中处理它的方式。以上是关于Xamarin.IOS。代码分析 - CA2123的主要内容,如果未能解决你的问题,请参考以下文章
xamarin.ios 使用仅图像代码实现 PageController