【发布时间】:2011-02-28 09:10:59
【问题描述】:
当我在签入时运行代码分析时出现 SA0102('文件中发现语法错误')错误(另一个奇怪的问题,因为我认为 SA 是 StyleCop 问题?!)。通过添加/删除代码的过程,我推断出以下方法导致抛出此错误。据我所知,此方法是有效的,并且基于其他方法的 cmets - StyleCop 中似乎存在一些围绕此规则的错误。
无论如何,我的问题是如何抑制这个警告?我已尝试将文件名更改为 .designer.cs,但这似乎没有效果(我已确保检查了忽略设计器文件)。我对如何解决这个问题有点迷茫,因为如果不通过 StyleCop 签入政策,我就无法签入代码!还有这个
作为参考,这是导致问题的方法 - 我怀疑在声明中使用 nullables 可能是问题。
编辑:我正在使用 StyleCop v4.4.1.2
编辑:如果我删除选择的 IEnumerable<int?>,int? page = null 从参数中,规则通过。
[HttpPost]
public ActionResult Search(string searchCriteria, IEnumerable`<int?`> selected, int? page = null)
{
if (page.HasValue)
{
const int PageSize = 6;
IEnumerable<MyClass> src = this.sectors.Where(o => (selected == null || !selected.Contains(o.Id)) && o.Name.Contains(searchCriteria));
string rows = this.RenderView(@"Awesome\LookupList", src.Skip((page.Value - 1) * PageSize).Take(PageSize));
return this.Json(new { rows, more = src.Count() > page * PageSize });
}
return this.View(@"Awesome\LookupList", this.sectors.Where(o => (selected == null || !selected.Contains(o.Id)) && o.Name.Contains(searchCriteria)));
}
【问题讨论】:
-
我无法完成您的示例,因为您使用的是 IEnumerable,但请致电
src.Skip(),这不适用于非通用 IEnumerables。为了重现您的错误,我们必须能够使用您的示例代码。我怀疑您从 IEnumerable 中删除了原始通用参数? -
@J.Tihon - 抱歉,这是通用的 - 只是 * 上的格式问题 - 我已经更正了代码。
-
为了让它在 MVC 3 应用程序中编译,我添加了一个类型为
IQueryable<Entity>的私有成员“sectors”,其中 Entity 是一个类,其整数为“Id”,字符串为“Name” .我还需要将“IEnumerable src”更改为“IEnumerablesrc”。 (我还需要一个 RenderView 方法,假设它来自 MvcContrib 项目)。你的应用程序真的可以编译吗? -
嗨,是的,它编译得很好。我已经能够通过更改参数来解决 - 不是很好,但暂时有帮助。感谢您的回复。
标签: c# visual-studio code-analysis fxcop stylecop