How to reduce Cognitive Complexity on the below method,这是一个有角度的方法。它显示了 SonarQube 报告中的认知复杂性。
updateBasedOnDtAttrChecklist(ajustData: CompletionChecklist[]) {
const processId = this.actRoute.snapshot.queryParams['pid'];
const processCompChecklist: WorkflowProcessCompletionStatus = this.deepCopy(this.completionChecklist)
?.filter((cs: WorkflowProcessCompletionStatus) => cs.processId === processId)[0];
let workflowMaster: WorkflowMaster = this.deepCopy(this.currentWorkflowMaster)
?.filter((wm: WorkflowMaster) =>
wm.processId === processId)[0];
const AdjustAttributes = workflowMaster?.datapointsAdjustment
?.filter((adj: DatapointsAdjustment) => adj.adjustmentTypeCode === DataPointType.Ajusted);
const isChecklistUpdateRequired = processCompChecklist && AdjustAttributes;
if (!isChecklistUpdateRequired) return;
ajustData?.forEach((data: CompletionChecklist) => {
const curAdjItem: DatapointsAdjustment = this.deepCopy(AdjustAttributes)?.filter((adt: DatapointsAdjustment) => adt.datapointName === data?.dataPointName)[0];
const children: DatapointsAdjustment[] = this.deepCopy(AdjustAttributes)?.filter((adt: DatapointsAdjustment) => adt.parentId === curAdjItem?.dataPointAdjustmentId);
if (curAdjItem && children) {
children?.forEach(child => {
const isYesStatus = data?.status === StatusFlag.Yes;
const isAddOperator = curAdjItem?.adjustmentOperator === AdjustOperator.Add;
const isRemoveOperator = curAdjItem?.adjustmentOperator === AdjustOperator.Remove;
if (isYesStatus) {
if (isAddOperator) {
this.addChkListItem(processCompChecklist?.completionChecklist, child?.datapointName);
}
if (isRemoveOperator) {
const newList = processCompChecklist?.completionChecklist?.filter((chkitem: CompletionChecklist) => chkitem?.dataPointName !== child?.datapointName);
processCompChecklist.completionChecklist = newList;
}
}
else if (!isYesStatus) {
if (isAddOperator) {
const newList = processCompChecklist?.completionChecklist?.filter((chkitem: CompletionChecklist) => chkitem?.dataPointName !== child?.datapointName);
processCompChecklist.completionChecklist = newList;
}
if (isRemoveOperator) {
this.addChkListItem(processCompChecklist?.completionChecklist, child?.datapointName);
}
}
});
}
});
const compStatusIndex = this.completionChecklist.findIndex((chklst: WorkflowProcessCompletionStatus) => chklst.processId === processId);
if (compStatusIndex != -1) {
this.completionChecklist[compStatusIndex].completionChecklist = processCompChecklist?.completionChecklist;
}
}
我已经将条件语句放入变量中并赋予了一个有意义的名称,但它没有帮助。