我应该忽略GUI类的自动代码检查错误吗?

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

我应该忽略GUI类的自动代码检查错误吗?此类是由Windowbuilder生成的。我应该做出不同的选择,使其在自动代码审查中获得A级吗?我应该怎么做?还是应该忽略它们,因为这种类型的类没有真正的复杂性?仅描述窗口组件,仅此而已。代码评论向我展示:

  • 分配分支条件
  • 实例变量太多
  • 功能过长
  • 总复杂度太高

这是代码

package gui.dialogs;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import data.elements.Property;
import data.elements.Model;
import gui.text.DeviceDefaultTextUtils;

import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.Button;
import java.awt.Dialog;

import javax.swing.SwingConstants;

public class DeviceDialog extends JDialog
{
    private static final long serialVersionUID = -7176709114506808074L;
    public JPanel contentPane = new JPanel();
    public JLabel lblDeviceIDValue = new JLabel();
    public Button btnAddNewModel;
    public JTextField textFieldSerial = new JTextField();
    public Button btnAdd;
    public Button btnCancel;

    /**
     * Creates frame "Device Registration Form".
     */
    public DeviceDialog(Dialog parentWindow)
    {
        createJDialogView();
        createDeviceIDView();
        createDeviceTypeView();
        createDeviceManufacturerView();
        createDeviceModelView();
        createDeviceSerialView();
        createButtonsView();
    }

    private void createJDialogView()
    {
        setTitle(DeviceDefaultTextUtils.TITLE);
        setResizable(false);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 300, 420);

        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
    }

    private void createDeviceIDView()
    {
        JLabel lblDeviceID = new JLabel(DeviceDefaultTextUtils.DEVICE_ID_LABEL);
        lblDeviceID.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblDeviceID.setBounds(20, 10, 75, 25);
        contentPane.add(lblDeviceID);

        lblDeviceIDValue.setHorizontalAlignment(SwingConstants.CENTER);
        lblDeviceIDValue.setFont(new Font("Segoe UI Symbol", Font.BOLD, 15));
        lblDeviceIDValue.setBounds(200, 10, 75, 25);
        contentPane.add(lblDeviceIDValue);
    }

    private void createDeviceTypeView()
    {
        JLabel lblDeviceType = new JLabel(DeviceDefaultTextUtils.DEVICE_TYPE_LABEL);
        lblDeviceType.setBounds(20, 50, 255, 15);
        contentPane.add(lblDeviceType);

        JComboBox<Property> comboBoxDeviceType = new JComboBox<Property>();
        comboBoxDeviceType.setBounds(20, 75, 255, 25);
        contentPane.add(comboBoxDeviceType);
    }

    private void createDeviceManufacturerView()
    {
        JLabel lblManufacturer = new JLabel(DeviceDefaultTextUtils.MANUFACTURER_LABEL);
        lblManufacturer.setBounds(20, 115, 255, 15);
        contentPane.add(lblManufacturer);

        JComboBox<Property> comboBoxManufacturer = new JComboBox<Property>();
        comboBoxManufacturer.setBounds(20, 140, 255, 25);
        contentPane.add(comboBoxManufacturer);
    }

    private void createDeviceModelView()
    {
        JLabel lblModel = new JLabel("Model");
        lblModel.setBounds(20, 175, 255, 15);
        contentPane.add(lblModel);

        JComboBox<Model> comboBoxModel = new JComboBox<Model>();
        comboBoxModel.setBounds(20, 200, 255, 25);
        contentPane.add(comboBoxModel);

        btnAddNewModel = new Button(DeviceDefaultTextUtils.ADD_NEW_MODEL_BUTTON);
        btnAddNewModel.setBounds(95, 234, 110, 25);
        contentPane.add(btnAddNewModel);
    }

    private void createDeviceSerialView()
    {
        JLabel lblSerial = new JLabel(DeviceDefaultTextUtils.SERIAL_NUMBER_LABEL);
        lblSerial.setBounds(20, 265, 255, 14);
        contentPane.add(lblSerial);

        textFieldSerial.setBounds(20, 290, 255, 25);
        contentPane.add(textFieldSerial);
        textFieldSerial.setColumns(10);
    }

    private void createButtonsView()
    {
        btnAdd = new Button(DeviceDefaultTextUtils.ADD_DEVICE_BUTTON);
        btnAdd.setFont(new Font("Dialog", Font.PLAIN, 15));
        btnAdd.setBounds(20, 345, 110, 25);
        contentPane.add(btnAdd);

        btnCancel = new Button(DeviceDefaultTextUtils.CANCEL_BUTTON);
        btnCancel.setFont(new Font("Dialog", Font.PLAIN, 15));
        btnCancel.setBounds(165, 345, 110, 25);
        contentPane.add(btnCancel);
    }
}
java swing windowbuilder github-codereviews
1个回答
1
投票

通常,所有生成的代码都应从自动代码审查中排除。

当然,这意味着您创建的任何自定义代码都不会与生成的代码位于同一源文件中。如果要在将生成的代码提供给审核过程之前修改生成的代码,则应将此文件视为未完全生成,除非您明确标记生成的部分,并且您的工具只允许排除文件的部分(例如,在Sonar中,可以将情况标记为“无法解决”,并在这种情况下给出“生成代码”的原因作为注释)。

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