用于检查XML配置文件内部一致性的工具,规则或进程
-
10-10-2019 - |
题
我从事具有非常复杂的XML配置的项目,而面临的一个问题是保持XML的内部一致性。
在这种情况下,我并不是说严格的XML模式一致性,而是所使用的节点之间的较高级别关系。大多数问题是由XML中编码的信息以及该信息与代码库的隐式关系引起的。示例可能是:
- XML节点数据隐式链接到代码中的枚举
- 相关配置中的业务对象(因为它们共享需要一致的信息),而无需任何明确关系
- XML的代码将在运行时进行编译和解析
令我震惊的是,a)这可能成为增加频率的实践,b)在某些情况下,我们隐含地创建了一种未经编译时间检查的新编码语言 - 实际上,直到运行才几乎没有检查。
还有其他人面临类似情况,并且是否有任何使问题更容易解决的工具或方法?我想要一些技术 - 敏捷的一般示例 - 我自己的特定经验是在C#和专有系统的配置中。
注意:尽管我对此有答案,但我无意作为最终答案。
其他提示
您尝试过示意图吗?http://www.schematron.com/
这是一种针对语义验证XML的更高级别的语言,而不仅仅是句法。
另请参见Wikipedia: http://en.wikipedia.org/wiki/schematron
我使用自动化功能测试来确保工作中默认配置的数据完整性。我不知道您描述的问题一定取决于XML的配置格式。话虽如此,我建议:
- 您不将XML用作配置格式。 (Google可以为您提供理由)
- 通过枚举或任何其他构造的值的隐式使用,在配置中与代码中的任何其他构造值一样糟糕。
- 从配置中取出的代码使我感到畏缩。是在配置中可以被覆盖吗?如果是这样,那是错误,未定义的行为和潜在安全问题的巨大向量。
- 业务对象问题也听起来像是糟糕的紧密耦合。
您可能无法对XML做任何事情作为配置格式,不良耦合或配置执行代码。您可以通过创建一系列功能测试来确保以确保:
- 枚举有效
- 该代码是可编译的,可执行的,不包含EVALS,RPC调用,呼叫无功能或您要添加的任何其他分析检查。
您有时还可以通过提供替代方案(配置或配置条目)来帮助更改。
@david Peleg的一个很好的链接是 拓扑, ,提供用于检查XML的产品,包括“业务规则”检查。
不隶属于 StackOverflow