【问题标题】:Let Unity show StyleCop errors让 Unity 显示 StyleCop 错误
【发布时间】:2019-12-06 14:44:43
【问题描述】:

我有一个使用 Unity3D 开发的项目。现在我想将 StyleCop 添加到这个项目中。

我添加了this awesome package,它显示了 VisualStudio 中已有的警告(这比 StyleCop Classic 有很大的好处)。但现在我想在 Unity 中查看警告并让构建失败。为了让构建在有任何警告时失败,我已经添加了一个带有-warnaserror+csc.rsp 文件,但不幸的是,我在 Unity 中没有任何警告。

是否可以将 StyleCop 警告发送到 Unity-Editor?

Unity-Version 2019.3.0b7 如果重要的话。

编辑:同一问题的另一种观点是:

如何将分析仪安装到 roslyn?

不幸的是,我安装 roslyn 分析器的选项似乎是将其安装为 nuget 包或 Visual Studio 扩展。但由于这两种方式都将错误集成到 Visual Studio 中,我需要另一种方法来向 roslyn 添加分析器,这让编译器发出错误,然后在 Unity3D 中显示。

Edit2:绝对清楚:我已经可以执行UnityEngine.Debug.LogError 并将每个 StyleCop 错误打印到 UnityConsole。但我希望 StyleCop 集成到统一的编译管道中。这样我就不能再按播放了。

【问题讨论】:

  • 我不确定你能做到。
  • this

标签: c# unity3d stylecop roslyn-code-analysis


【解决方案1】:

如果您不介意编写一些小代码,这里有一个解决方案。

  • Unity 有一个editor log file,它会记录您构建期间的每个警告。像这样:

    Assets/SomeScript.cs(134,33):警告 CS0618:UnityEngine.Random.RandomRange(float, float) 已过时:请改用 Random.Range

  • Unity有一个回调IPreprocessBuildWithReport.OnPreprocessBuild,其描述如下:

    实现这个接口,在 构建开始。

    您可以从那时开始监视日志更改。

  • Unity 在构建结束时也有一个回调,通过将PostProcessBuildAttribute 添加到特定函数。这是描述:

    将此属性添加到方法中,以便在构建播放器后立即获取通知。

    [更新]

  • 现在你已经记录了上次构建时是否有警告,你可以在内存或文件系统中创建一个标志,然后添加几行代码来检查这个标志,如果是真的然后使用@停止播放987654326@

【讨论】:

  • 你最后的假设不完整。是的,我想让我的 CI 构建失败,但这是我已经可以做到的。该问题针对 UnityEditor 方向。我希望,该应用程序将不再播放。
  • 好的,这似乎是一种解决方法,但它可能会奏效。您对第二种方式有什么想法吗:我可以在位于Editor\Data\Tools\Roslyn\ 下的编译器中安装一个 roslyn 分析器,然后在csc.rsp 中使用-warnaserror+ 将分析器警告转换为编译器错误吗?
猜你喜欢
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多