Должен ли я игнорировать ошибки автоматической проверки кода для класса GUI? - PullRequest
0 голосов
/ 13 октября 2019

Должен ли я игнорировать ошибки автоматической проверки кода для класса 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);
    }
}

1 Ответ

1 голос
/ 14 октября 2019

Как правило, весь сгенерированный код должен быть исключен из автоматических проверок кода.

Конечно, это подразумевает, что любой пользовательский код, который вы создаете, НЕ существует в том же исходном файле, что и сгенерированный код. Если вы изменяете сгенерированный код перед тем, как предлагать его процессу рецензирования, этот файл следует считать не полностью сгенерированным, если только вы явно не пометите сгенерированные разделы и ваш инструментарий не позволяет исключать только разделы файлов (например, в Sonarв таких случаях можно пометить вещи как «не исправить» и указать в качестве комментария причину «сгенерированного кода».

...