gpt4 book ai didi

c# - 项目管理 : Implementing custom errors in VS compilation process

转载 作者:行者123 更新时间:2023-11-30 22:45:40 29 4
gpt4 key购买 nike

再次声明:如果您投 -1,请发表评论解释原因。这篇文章不是关于您是否赞成这种方法,而是关于如何去做。

像许多架构师一样,我通过多年的经验制定了编码标准,我希望我的开发人员能够遵守这些标准。

对于那些认为三四年的经验就能让你成为高级开发人员的人群来说,这尤其是一个问题。将其作为培训和代码审查问题来处理,收效甚微。

因此,我在想,如果能够将自定义编译时错误添加到构建过程中以更严格地执行我们的内部最佳实践和编码标准,那就太好了。

例如,我们对所有数据库访问都使用存储过程,这提供了过程级安全性、数据库封装(表结构对应用程序是隐藏的)和其他好处。 (注意:我有兴趣就此展开辩论。)一些开发人员更喜欢内联 SQL 或参数化查询,这很好 - 在他们自己的时间和自己的项目上。

我想要一种添加编译检查的方法,可以发现,比如说,任何看起来像的东西

string sql = "insert into some_table (col1,col2) values (@col1, @col2);"

并生成一个错误,或者在某些情况下生成一个警告,带有类似

的消息

不允许内联 SQL 和参数化查询。

或者,如果他们使用 var 关键字

var x = new MyClass();

变量定义必须显式输入。

Visual Studio 和 MSBuild 是否提供添加此功能的方法?我在想我可以使用正则表达式来查找 Not Acceptable 代码并生成正确的错误,但我不确定从性能的角度来看,将其集成到构建过程中的最佳方式是什么。

我们可以添加构建前或构建后步骤来运行自定义 EXE,但如何返回特定于行和文件的错误?另外,我希望它在每个文件编译后运行,而不是后链接。

正则表达式是执行此类模式匹配的最佳方式,还是我应该发疯并通过 C# 解析器运行代码,这将允许通过解析树进行节点级验证?

我会很感激以前经验的建议和故事。

评论一些受访者指出,可以通过数据库权限限制用户运行存储过程以外的任何东西的能力。然而,我们正在将一个 350k+ 行的应用程序从 ASP 3.0 移植到 ASP.NET MVC,现有的代码库非常依赖于连接的 SQL,而新的东西都使用 Enterprise Library。我想我可以为具有更多限制性权限的 .NET 代码添加一个单独的 Web 用户帐户。

最佳答案

对于编码标准,我会考虑为 FxCop 或 StyleCop 编写自定义规则。我认为 Regex 不是适合这项工作的工具。

对于需要存储过程的特定情况 - 如果您确保应用程序无权在生产数据库上执行任何其他操作,那么每个人都会很快接受。

关于c# - 项目管理 : Implementing custom errors in VS compilation process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939596/

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