如何降低以下方法的认知复杂性

问题描述 投票:0回答:0

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;
    }
  }

我已经将条件语句放入变量中并赋予了一个有意义的名称,但它没有帮助。

angular sonarqube
© www.soinside.com 2019 - 2024. All rights reserved.