TL; DR:基本上我正在寻找的是获得所有引发0个问题的声纳规则列表的方法.然后,我可以将所有这些移动到阻止者,并保护自己免受将来添加该问题的人的影响.
我的公司正在使用声纳和静态分析来帮助指导重构和开发相当大的遗留代码库(~750K LOC).我们通过降低大多数规则的严重性,然后选择一组较小的规则来促进阻止或关键,因为我们在代码中发现了真正的问题,我们取得了很大的成功.这使得我们试图在一段时间内解决的问题数量保持在可控范围内,因此我们实际上可以感觉到我们正在取得进展,而不是淹没在遗留问题的噪音中.
特别是当我们被声纳可能检测到的字段或QA问题所困扰时,我们将该问题转换为BLOCKER并修复其中的每个实例.这些阻塞程序打破了构建,我们现在确信我们不会添加新实例同样的问题.这很有效,并且保留了一些令人讨厌的错误.
这种方法的一个大问题是我们需要在代码库中至少有一次这类错误的例子,这样我们才能知道它很重要,应该成为一个阻塞者.我们尚未遇到的任何问题仍然是默认级别,我现在想把它们全部移到BLOCKER,所以我们注意到它们被添加的日期.
编辑:目前我们正在使用3.7.3,但我们即将升级到5.X.
鉴于以下课程:
trait ModelWithId {
var id: Long = 0
}
case class EntityAttribute (
val entityId: UUID,
val attrName: String,
val stringVal: Option[String],
val boolVal: Option[Boolean],
val longVal: Option[Long],
val doubleVal: Option[Double],
val byteVal: Option[Array[Byte]]) extends ModelWithId{
override def toString() : String = {
"EntityAttribute(" + entityId.hashCode + "," + attrName.hashCode + "," +
stringVal.map{_.hashCode}.getOrElse(None) + "," + stringVal.hashCode+ "," +
boolVal.map{_.hashCode}.getOrElse(None) + "," + boolVal.hashCode+ "," +
longVal.map{_.hashCode}.getOrElse(None) + "," + longVal.hashCode+ "," +
doubleVal.map{_.hashCode}.getOrElse(None) + "," + doubleVal.hashCode+ …Run Code Online (Sandbox Code Playgroud)