重复项查找器(ReSharper)
基于 ReSharper 命令行工具 的 重复项查找器(ReSharper) 构建运行程序,用于捕获相似的代码片段,并提供关于在 Visual Studio 2003、2005、2008、2010、2012、2013 和 2015 解决方案中发现的 C# 和 Visual Basic .NET 代码的重复块的报告。
参考 配置构建步骤 以获取常见构建步骤设置的描述。 请参阅 容器包装器 学习如何在容器内运行此步骤)。
源
选项 | 描述 |
---|---|
包含 | 使用相对于检出根目录的换行符分隔的 Ant 风格通配符,指定要包含到重复项搜索中的文件。 |
排除 | 输入换行符分隔的 Ant 类型通配符,以从重复文件搜索中排除文件(例如, |
JetBrains ReSharper 命令行工具设置
选项 | 描述 |
---|---|
R# CLT 主目录 | 选择 ReSharper Command Line Tools 的版本。 您可以在 管理 | 工具 页面上检查已安装的 JetBrains ReSharper Command Line Tools 的版本。 如果您想要使用特定的 ReSharper 版本来运行 ReSharper duplicates(例如,确保它与您在 Visual Studio 中安装的版本匹配),您可以使用此页面安装其他版本的工具,并可以更改默认的使用版本。 |
dupFinder 平台 | 选择 dupFinder 工具的平台位数。 默认情况下,x64。 跨平台重复项查找工具也在 ReSharper 2020.2.1 或更高版本中获得支持。 |
重复搜索设置
选项 | 描述 |
---|---|
代码片段比较 | 使用这些选项来定义在搜索重复代码片段时应丢弃源代码的哪些元素。 如果代码片段在结构上相似,但含有不同的变量、字段、方法、类型或字面量,那么这些代码片段可以被视为重复。 请参考以下示例: |
放弃命名空间 | 如果勾选了此选项,具有不同 namespace specifications 的相似内容将被识别为重复内容。 NLog.Logger.GetInstance().Log("abcd");
A.Log.Logger.GetInstance().Log("abcd");
|
丢弃字面量 | 如果勾选此选项,具有不同字面量的类似代码行将被识别为重复。 myStatusBar.SetText("Not Logged In");
myStatusBar.SetText("Logging In...");
|
放弃本地变量 | 如果选中此选项,具有不同局部变量名称的相似代码片段将被识别为重复项。 int a = 5; a += 6;
int b = 5; b += 6;
|
放弃类字段名称 | 如果勾选此选项,具有不同字段名称的相似代码片段将被识别为重复项。 Console.WriteLine(myFoo);
Console.WriteLine(myBar);
... where myFoo and myBar are declared in the containing class
|
放弃类型 | 如果勾选此选项,具有不同类型名称的相似内容将被识别为重复内容。 这包括所有可能的类型引用(如下所示): Logger.GetInstance("text");
OtherUtility.GetInstance("text");
... where Logger and OtherUtility are both type names (thus GetInstance is a static method in both classes)
Logger a = (Logger) GetObject("object");
OtherUtility a = (OtherUtility) GetObject("object");
public int SomeMethod(string param);
public void SomeMethod(object[] param);
|
忽略复杂度低于此值的重复项 | 使用此字段来指定在检测重复项时需要考虑的代码块的最低复杂度。 |
跳过通过打开注释的文件 | 输入换行分隔的关键词,以排除在文件开头注释中包含该关键词的文件,从重复文件搜索中。 |
跳过带有消息子字符串的区域 | 输入换行符分隔的关键字,这些关键字会排除在查找重复项时,消息子字符串中包含关键字的区域。 输入 "generated code" ,例如,将跳过包含 "Windows Form Designer generated code" 的区域。 |
启用调试输出 | 勾选此选项,将调试信息包含在构建日志中,并将包含额外日志的文件( |
附加的 dupFinder 参数 | 指定换行分隔的命令行参数以添加到调用 |
构建失败条件
如果构建中有太多的重复项,您可以通过设置一个 构建失败条件 来使其失败。