2016-12-07 150 views
1

我试图在我们的组织中设置Sonar,主要是Unity项目。SonarQube在Unity中使用它3D问题很多

我们的问题是,提供给C#语言的规则在Unity环境中并不总是相同的。

  1. 团结就是一个MonoBehaviour类,如果你声明一些方法(觉醒,开始),他们正在通过反射调用:

https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

因此,在这种情况下,我必须吨“删除这个未使用的私人成员”。

有没有办法告诉,如果我的类派生自MonoBehaviour(或AssetPostprocessor等),并且我的方法名称是例如“Awake”,则不应用该规则?我的意思是,有没有办法设置自定义规则并使另一个无效?

  1. 这同样适用于Unity序列化系统。你可以有[SerializeField]属性的私人领域,并得到由统一自动初始化:

https://docs.unity3d.com/ScriptReference/SerializeField.html

在这种情况下,我得到吨的“制作‘{FIELD}’,‘只读’,”如果我的字段有一个默认值,因为它是Unity然后谁“填充”该值从inspector更新/更改,但如果我只读它不会在Unity的序列化系统中工作。

谢谢。

+0

编辑:道歉,我误解了这个问题。 – Basic

回答

3

感谢您报告这些问题。我们还没有使用SonarQube测试Unity项目,但是由于社区和基于Unity的代码库非常庞大,所以我们不禁要问。

在这一点上,我不能建议你的第一个问题(基于约定的反射)的任何其他解决方法,但禁用该规则。我创建了一个JIRA票据来调查选项:https://jira.sonarsource.com/browse/SLVS-1104

这里是只读字段问题的票据。这绝对是可以轻松解决的问题。它将成为下一个版本的一部分:https://jira.sonarsource.com/browse/SLVS-1105

+0

感谢您的回答。 还有更多像这样的情况(基于反射也):https://docs.unity3d.com/ScriptReference/AssetPostprocessor.html 我不知道所有情况,但我认为我们可以涉及团结工作人员,可以帮助我们,特别是问答团队。 – N3uRo

+0

嘿@Tamas有没有更新?我期待在我的公司实施声纳,恐怕这些规则会造成混乱。 – mFontoura

+0

据我所见,这方面没有任何进展。该票已移至此处:https://github.com/SonarSource/sonar-csharp/issues/159 – Tamas