處理複雜的循環複雜度Scala語法錯誤,我對最後一個錯誤沒有任何意見。循環複雜度Scala語法錯誤,匹配情況
這是一個數據文件解析情況。以下是代碼段:
val lineString = line.mkString(",")
line match {
case Seq("Data1Name", data1ID, "desc1", "..") if data1ID.matches("\\d+") => {
processData1(...)
}
case Seq("Data2Name", data2ID, "desc2", "..") if data2ID.matches("\\d+") => {
processData2(...)
}
case Seq("Data3Name", data3ID, "desc3", "...") if data3ID.matches("\\d+") => {
processData3(...)
}
case Seq("Data4Name", data4ID, "desc4", "...") if data4ID.matches("\\d+") => {
processData4(...)
}
case Seq("Data5Name", data5ID, "desc5", "...", data5xID, '...', ...) if data5ID.matches("\\d+") && data5xID.matches("\\d+") => { // <-- It would be fine if this block is commented out
processData5(...)
}
case _ => Some(Error(s"..."))
}
圈複雜度爲13.如果我註釋掉上面指出的塊,語法檢查將很高興。我看不出如何進一步簡化代碼。
順便說一句,如果我用block 5上的方法替換if語句中的兩個傳導,則複雜度會降低1。對我來說,這種方法增加了複雜性。
有什麼建議嗎?
此外,語法錯誤,
Cyclomatic complexity of 13 exceeds max of 10
由斯卡拉風格生成的校驗安裝在我們的構建過程。
也許如果我們可以看一下'seq'內容和'if'條件,我們可以建議一些簡化(如果有的話)。 – maasg
謝謝。我會照辦的。 – TeeKai
什麼是錯誤?它是由誰製作的?我猜想,我的靜態代碼分析是 – Aivean