我有一份遗产.NET应用程序,我已将其移植到.NET 6.0和am执行跨平台(Windows和Linux).
许多遗留代码是通过硬编码路径创建开发的,在字符串中使用反斜杠,如
new StreamWriter(FeuxBarreFolderName + @"\\JazzSchmazz.txt");
我已经转变成了
new StreamWriter(Path.Combine(FeuxBarreFolderName, "JazzSchmazz.txt"));
我想防止任何开发人员再次意外或有目的地在硬编码路径中添加\项.除了在代码评审时处理这个问题,还有没有一种方法可以让我自动做到这一点,或者通过代码分析,或者在测试时出现惊人的失败?我的搜索毫无帮助.
我的 idea
- 在我的Docker集成测试中修改ext4文件系统,以防止文件名带有\.我不知道这是否可能/合理.
- 使用my Docker integration tests上的权限进行创作,以防止在根目录中创建文件(从父目录中删除w),但允许在子目录中创建文件(再次将w添加到特定的子目录).这感觉超脆.
- 查找或编写一个分析器来查看字符串,并对任何包含\字符的字符串进行投诉.
有更好的办法吗?