Java 如何降低我的方法的圈复杂度

Java 如何降低我的方法的圈复杂度,java,source-monitor,Java,Source Monitor,下面的代码给出了35的圈复杂度 public void updateGUIInProgress(StatusLabelDTO statusLabelDTO) { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { label1.setText(statusLabelDTO.getIterationStr());

下面的代码给出了35的圈复杂度

public void updateGUIInProgress(StatusLabelDTO statusLabelDTO) {
    Display.getDefault().asyncExec(new Runnable() {

        @Override
        public void run() {
            label1.setText(statusLabelDTO.getIterationStr());
            label2.setMaximum(statusLabelDTO.getTotalCount());
            label3.setSelection(statusLabelDTO.getExeIndex());
            label4.setText(statusLabelDTO.getStepStr());
            label5.setText(statusLabelDTO.getPassStr());
            label6.setText(statusLabelDTO.getFailStr());
        }
    });
}

我尝试将所有设置行移动到一个方法。然而,这对我来说不起作用。如何降低复杂度?

如果不知道计算圈复杂度的工具,这真的很难。最后,你的代码做的不多

您可以像这样重构它:

someDisplayYouAcquiredPreviously.asyncExec(new SpecificRunnable());
显然,这样做需要在之前存储该显示对象,并且还需要使用一个不同的命名类,而不是匿名内部类

但真正的答案是:查看您的工具。维基百科告诉我们:

一段源代码的圈复杂度是其中线性独立路径的数量。例如,如果源代码不包含任何控制流语句(条件或决策点),那么复杂性将为1,因为代码中只有一条路径

代码中有一条路径,因此该值应该是1,而不是35

换句话说:您的工具似乎计算错误的数字,可能它不理解java语法。因此,真正的答案是后退一步,看看您正在使用的设置/工具

是的,我发现user Hulk很可能是正确的,您应该将您的工具升级到新版本,因为这可能是“sourcecode monitor”应用程序中的错误


提示:您知道,您希望后退一步,检查环境中所有其他工具的版本。对更新保持保守是一回事,但使用7年前的版本不再是“保守”,这是严重的疏忽

根据我所知道的圈复杂度的大多数定义,35对于这种方法来说太高了。你在用什么工具?是否有可能度量已经过时/引用了其他代码?我们使用的是源代码监视器V3.3tool@Pooja这个:?也就是说,
Version 3.3[2012年7月24日]
-也许您想更新到更新的版本?也许您面临以下错误:
199 Java:无法正确解析匿名类中的方法。2013年3月19日;在V3.4.0.283中修复
。我很欣赏他们的快速复出!