7

我有一个使用文件系统实体来操作数据的类。我们有几种方法专门设计用于(尝试)处理我们在这种方法中面临的一些问题(文件锁定、不存在的文件等)。理想情况下,如果其他开发人员尝试通过 System.IO 直接访问文件系统而不是使用辅助方法,我希望能够发出警告。

这可能吗?我正在寻找的行为是有效地将诸如 File.ReadAllText() 之类的方法标记为已过时,但仅在此项目中(不是解决方案范围内)。

我已经做了一些挖掘,看起来我唯一的选择是“告诉他们确保他们使用你的方法”。我希望有人能给我一个不同的,更有帮助的答案。:)

--EDIT-- 自定义 StyleCop 或 FxCop 规则的建议很好,但不幸的是在这种情况下不切实际(并非部门中的每个开发人员都使用这些优秀的工具),并且进行文件访问的合法方法确实使用 System.IO . 在合法方法中添加“忽略”属性也是一个危险的想法。如果有人看到我如何“破坏”我自己的规则,他们可能会将属性复制到他们自己的方法中。

4

5 回答 5

11

使用带有捕获“请勿直接使用”的规则的静态分析工具(例如StyleCopFxCop)。然后将其作为您的自动构建过程的一部分进行集成,如果有人尝试直接使用,则抛出。没有人喜欢破坏构建。System.IOSystem.IO

于 2010-02-04T15:04:20.827 回答
1

您可以为 FxCop/Visual Studio 代码分析编写自定义分析规则,并将其作为自动构建的一部分运行。

于 2010-02-04T15:06:42.880 回答
0

唔。我自己没有尝试过,但是如何通过使用“隐藏”真正 System.IO 的命名空间别名来强制人们使用您的自定义文件处理类。如果我没记错的话,这些都是在项目级别应用的。

于 2010-02-04T15:22:51.083 回答
0

不确定这些建议是否有效,因为我从未做过,但值得深思:

这不是“企业模板”的设计目的吗?他们不允许您制作一个限制允许的项目引用的策略文件吗?

或者,虽然不是万无一失,但如果引用 System.IO,您是否可以向项目添加一个预构建事件,该事件会引发警告?

于 2010-02-04T15:50:21.637 回答
0

您可以向源代码控制提交挂钩添加一些自定义功能吗?除非这些文件被更改但应该检测新用途,否则它不会发现现有的违规行为(如果有的话)?

有什么好处吗?

于 2010-02-04T16:10:04.640 回答