Visual Studio中.editorconfig指定的生成代码未被SonarLint忽略
解决SonarLint仍分析标记为生成代码的*_gen.cs文件问题
我之前也碰到过类似的SonarLint不识别.editorconfig里生成代码配置的情况,结合你的项目结构和配置内容,这里有几个实用的排查和解决方法:
1. 修正.editorconfig的glob匹配规则
你当前的[*_gen.cs]规则只会匹配根目录下的*_gen.cs文件,而子目录Module A、Module B里的同名文件根本没被这个规则覆盖到。你需要把规则改成递归匹配所有子目录的文件:
root = true [**/*_gen.cs] exclude = true generated_code = true [*.cs] #Spaces and indents indent_style=space indent_size=4 # 其他配置...
**是递归通配符,能匹配任意深度的子目录,这样所有Module里的*_gen.cs都会被正确命中。
2. 确认SonarLint是否启用了.editorconfig支持
不同IDE的SonarLint插件需要手动开启读取.editorconfig的选项:
- 在Visual Studio中:打开「工具」→「选项」→「SonarLint」→「General」,确保勾选「Read settings from editorconfig files」
- 在JetBrains系列IDE(如Rider)中:进入「Settings」→「Tools」→「SonarLint」→「General」,确认「Use EditorConfig settings」处于启用状态
如果这个选项没开,SonarLint会完全忽略.editorconfig里的配置。
3. 直接在csproj中标记生成代码
如果.editorconfig的配置还是不生效,可以绕过它,直接在每个Module的.csproj文件里明确标记生成文件:
<ItemGroup> <!-- 匹配当前Module下所有*_gen.cs文件 --> <Compile Include="*_gen.cs"> <IsGeneratedCode>true</IsGeneratedCode> </Compile> </ItemGroup>
这种方式优先级更高,SonarLint会直接识别这些文件为生成代码,跳过分析。
4. 清理SonarLint缓存
有时候旧的缓存会导致配置更新不生效,你可以尝试:
- 关闭当前解决方案
- 删除解决方案根目录下的
.vs隐藏文件夹(如果是Visual Studio) - 重新打开解决方案,让SonarLint重新加载配置
内容的提问来源于stack exchange,提问作者Neuxz
相关产品推荐
相关产品推荐

