代码之家  ›  专栏  ›  技术社区  ›  ZombieSheep

阻止其他开发人员在类中使用基方法

  •  7
  • ZombieSheep  · 技术社区  · 15 年前

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

    这有可能吗?我要寻找的行为是有效地标记诸如file.readAllText()之类的方法,就像它们是过时的一样,但只在这个项目中(而不是解决方案范围内)。

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

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

    5 回复  |  直到 15 年前
        1
  •  11
  •   jason    15 年前

    使用静态分析工具(例如 StyleCop FxCop ) rule 捕捉到“不要使用 System.IO 直接。”然后将其集成为自动化构建过程的一部分,如果有人尝试使用它,就会抛出 IO系统 直接。没有人喜欢打破这种结构。

        2
  •  1
  •   Anton Gogolev    15 年前

    你可以写 custom analysis rule 对于fxcop/Visual Studio代码分析,并将其作为自动生成的一部分运行。

        3
  •  0
  •   ChrisBD    15 年前

    嗯,我自己也没有尝试过,但是如何强迫人们使用您的自定义文件处理类,通过使用一个名称空间别名“隐藏”真正的system.io。如果我记得正确的话,这些都是在项目级别应用的。

        4
  •  0
  •   Jacob G    15 年前

    不确定这些建议是否有效,因为我从来没有这样做过,但有一些值得思考的东西:

    这不是为“企业模板”设计的吗?它们不允许您创建限制允许的项目引用的策略文件吗?

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

        5
  •  0
  •   Mr. Boy    15 年前

    可以向源代码管理提交挂钩添加一些自定义功能吗?它不会发现现有的冲突(如果有),除非这些文件被更改,但应该检测新的用途?

    有什么好处吗?