Skip to content

Commit 5954a7b

Browse files
author
Vitaliy
authored
Merge branch '1.0.1-develop' into issue-203-204-Cover-preference-di-XML-generator-and-class-preference-generator
2 parents c93a4e4 + 2f254fc commit 5954a7b

File tree

22 files changed

+980
-55
lines changed

22 files changed

+980
-55
lines changed

.github/workflows/gradle.yml

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ jobs:
1313
runs-on: ubuntu-latest
1414

1515
steps:
16-
- uses: actions/checkout@v2
17-
- name: Set up JDK 1.8
18-
uses: actions/setup-java@v1
19-
with:
20-
java-version: 1.8
21-
- name: Gradle wrapper
22-
run: gradle wrapper
23-
- name: Grant execute permission for gradlew
24-
run: chmod +x gradlew
25-
- name: Run automated tests
26-
run: ./gradlew test -i
16+
- uses: actions/checkout@v2
17+
- name: Set up JDK 1.8
18+
uses: actions/setup-java@v1
19+
with:
20+
java-version: 1.8
21+
- name: Gradle wrapper
22+
run: gradle wrapper
23+
- name: Grant execute permission for gradlew
24+
run: chmod +x gradlew
25+
- name: Run automated tests
26+
run: ./gradlew test -i --no-daemon
2727

2828
build-windows:
2929

@@ -40,7 +40,7 @@ jobs:
4040
- name: Grant execute permission for gradlew
4141
run: chmod +x gradlew
4242
- name: Run automated tests
43-
run: ./gradlew test -i
43+
run: ./gradlew test -i --no-daemon
4444

4545
build-macos:
4646

@@ -57,4 +57,29 @@ jobs:
5757
- name: Grant execute permission for gradlew
5858
run: chmod +x gradlew
5959
- name: Run automated tests
60-
run: ./gradlew test -i
60+
run: ./gradlew test -i --no-daemon
61+
62+
static-tests:
63+
64+
runs-on: ubuntu-latest
65+
66+
steps:
67+
- uses: actions/checkout@v2
68+
- name: Set up JDK 1.8
69+
uses: actions/setup-java@v1
70+
with:
71+
java-version: 1.8
72+
- name: Gradle wrapper
73+
run: gradle wrapper
74+
- name: Grant execute permission for gradlew
75+
run: chmod +x gradlew
76+
- id: file_changes
77+
uses: trilom/[email protected]
78+
- name: Run Code Style Check
79+
run: ./gradlew checkstyleCI -i --no-daemon
80+
env:
81+
MODIFIED_FILES: ${{ steps.file_changes.outputs.files}}
82+
- name: Run PMD Quality Check
83+
run: ./gradlew pmdCI -i --no-daemon
84+
env:
85+
MODIFIED_FILES: ${{ steps.file_changes.outputs.files}}

build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55

66
plugins {
77
id 'org.jetbrains.intellij' version '0.4.15'
8+
id 'checkstyle'
9+
id 'pmd'
10+
}
11+
12+
repositories {
13+
mavenCentral()
814
}
915

1016
group 'com.magento.idea'
@@ -56,3 +62,5 @@ static def getDate() {
5662
def formattedDate = date.format('yyyy-MM-dd-HH-mm')
5763
return formattedDate
5864
}
65+
66+
apply from: "${project.rootDir}/gradle-tasks/staticChecks.gradle"

gradle-tasks/checkstyle/checkstyle.xml

Lines changed: 326 additions & 0 deletions
Large diffs are not rendered by default.

gradle-tasks/pmd/ruleset.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<ruleset name="Custom Rules"
9+
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
10+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11+
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
12+
13+
<description>
14+
Magento PhpStorm rules
15+
</description>
16+
<rule ref="category/java/bestpractices.xml" />
17+
<rule ref="category/java/codestyle.xml"/>
18+
<rule ref="category/java/design.xml">
19+
<exclude name="LawOfDemeter"/>
20+
</rule>
21+
<rule ref="category/java/documentation.xml">
22+
<exclude name="CommentRequired" />
23+
</rule>
24+
<rule ref="category/java/errorprone.xml">
25+
<exclude name="BeanMembersShouldSerialize"/>
26+
</rule>
27+
<rule ref="category/java/multithreading.xml"/>
28+
<rule ref="category/java/performance.xml"/>
29+
<rule ref="category/java/security.xml" />
30+
</ruleset>

gradle-tasks/staticChecks.gradle

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
import groovy.json.JsonSlurper
7+
8+
/**
9+
* Static Checks
10+
*/
11+
12+
checkstyle {
13+
toolVersion = "8.31"
14+
ignoreFailures = false
15+
maxWarnings = 0
16+
configFile rootProject.file("gradle-tasks/checkstyle/checkstyle.xml")
17+
}
18+
19+
pmd {
20+
toolVersion = "6.21.0"
21+
consoleOutput = true
22+
rulePriority = 5
23+
ruleSets = [
24+
rootProject.file("gradle-tasks/pmd/ruleset.xml")
25+
]
26+
}
27+
28+
tasks.withType(Checkstyle) {
29+
// Specify all files that should be checked
30+
classpath = files()
31+
source "${project.rootDir}"
32+
33+
reports {
34+
xml.enabled false
35+
html.enabled true
36+
}
37+
}
38+
39+
// Execute Checkstyle on all files
40+
task checkstyle(type: Checkstyle) {
41+
}
42+
43+
// Execute Checkstyle on all modified files
44+
task checkstyleCI(type: Checkstyle) {
45+
def changedFiles = getChangedFiles()
46+
include changedFiles
47+
}
48+
49+
tasks.withType(Pmd) {
50+
// Specify all files that should be checked
51+
classpath = files()
52+
source "${project.rootDir}"
53+
54+
reports {
55+
xml.enabled false
56+
html.enabled true
57+
}
58+
}
59+
60+
// Execute Checkstyle on all files
61+
task pmd(type: Pmd) {
62+
}
63+
64+
// Execute Checkstyle on all modified files
65+
task pmdCI(type: Pmd) {
66+
def changedFiles = getChangedFiles()
67+
include changedFiles
68+
}
69+
70+
/**
71+
* Get all files that are changed but not deleted nor renamed.
72+
* Compares to master or the specified target branch.
73+
*
74+
* @return list of all changed files
75+
*/
76+
def getChangedFiles() {
77+
def modifiedFilesJson = System.getenv("MODIFIED_FILES")
78+
List<String> files = new ArrayList<>()
79+
80+
if (modifiedFilesJson == null) {
81+
return files
82+
}
83+
84+
println "Modified Files: ${modifiedFilesJson}"
85+
86+
//println "Changed files:"
87+
def modifiedFiles = new JsonSlurper().parseText(modifiedFilesJson)
88+
89+
modifiedFiles.each {
90+
files.add(it.toString())
91+
}
92+
93+
// Return the list of touched files
94+
files
95+
}

src/com/magento/idea/magento2plugin/actions/generation/dialog/CreateAnObserverDialog.java

Lines changed: 70 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.actions.generation.dialog;
67

78
import com.intellij.openapi.project.Project;
@@ -13,35 +14,51 @@
1314
import com.magento.idea.magento2plugin.actions.generation.generator.ObserverClassGenerator;
1415
import com.magento.idea.magento2plugin.actions.generation.generator.ObserverEventsXmlGenerator;
1516
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
17+
import com.magento.idea.magento2plugin.magento.packages.File;
1618
import com.magento.idea.magento2plugin.magento.packages.Package;
1719
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
18-
import org.jetbrains.annotations.NotNull;
19-
import javax.swing.*;
20-
import java.awt.event.*;
21-
import com.magento.idea.magento2plugin.magento.packages.File;
20+
import java.awt.event.KeyEvent;
21+
import java.awt.event.WindowAdapter;
22+
import java.awt.event.WindowEvent;
2223
import java.util.List;
24+
import javax.swing.JButton;
25+
import javax.swing.JComboBox;
26+
import javax.swing.JComponent;
27+
import javax.swing.JLabel;
28+
import javax.swing.JPanel;
29+
import javax.swing.JTextField;
30+
import javax.swing.KeyStroke;
31+
import org.jetbrains.annotations.NotNull;
2332

24-
public class CreateAnObserverDialog extends AbstractDialog {
33+
public class CreateAnObserverDialog extends AbstractDialog { //NOPMD
2534
@NotNull
2635
private final Project project;
27-
private String targetEvent;
2836
@NotNull
2937
private final CreateAnObserverDialogValidator validator;
38+
private final String targetEvent;
3039
private JPanel contentPane;
3140
private JButton buttonOK;
3241
private JButton buttonCancel;
3342
private JTextField observerClassName;
34-
private JLabel observerClassNameLabel;
3543
private JTextField observerDirectory;
36-
private JLabel observerDirectoryName;
37-
private JLabel selectObserverModule;
3844
private FilteredComboBox observerModule;
3945
private JComboBox observerArea;
40-
private JLabel observerAreaLabel;
41-
private JLabel observerNameLabel;
4246
private JTextField observerName;
47+
private JLabel observerClassNameLabel;//NOPMD
48+
private JLabel observerDirectoryName;//NOPMD
49+
private JLabel selectObserverModule;//NOPMD
50+
private JLabel observerAreaLabel;//NOPMD
51+
private JLabel observerNameLabel;//NOPMD
52+
53+
/**
54+
* Constructor.
55+
*
56+
* @param project Project Scope
57+
* @param targetEvent Action Event
58+
*/
59+
public CreateAnObserverDialog(@NotNull final Project project, final String targetEvent) {
60+
super();
4361

44-
public CreateAnObserverDialog(@NotNull Project project, String targetEvent) {
4562
this.project = project;
4663
this.targetEvent = targetEvent;
4764
this.validator = CreateAnObserverDialogValidator.getInstance(this);
@@ -51,38 +68,48 @@ public CreateAnObserverDialog(@NotNull Project project, String targetEvent) {
5168
getRootPane().setDefaultButton(buttonOK);
5269
fillTargetAreaOptions();
5370

54-
buttonOK.addActionListener(new ActionListener() {
55-
public void actionPerformed(ActionEvent e) {
56-
onOK();
57-
}
58-
});
59-
60-
buttonCancel.addActionListener(new ActionListener() {
61-
public void actionPerformed(ActionEvent e) {
62-
onCancel();
63-
}
64-
});
71+
buttonOK.addActionListener(e -> onOK());
72+
buttonCancel.addActionListener(e -> onCancel());
6573

6674
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
6775
addWindowListener(new WindowAdapter() {
68-
public void windowClosing(WindowEvent e) {
76+
public void windowClosing(final WindowEvent event) {
6977
onCancel();
7078
}
7179
});
7280

73-
contentPane.registerKeyboardAction(new ActionListener() {
74-
public void actionPerformed(ActionEvent e) {
75-
onCancel();
76-
}
77-
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
81+
contentPane.registerKeyboardAction(
82+
e -> onCancel(),
83+
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
84+
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
85+
);
86+
}
87+
88+
/**
89+
* Open an action dialog.
90+
*
91+
* @param project Project Scope
92+
* @param targetEvent Action Event
93+
*/
94+
public static void open(@NotNull final Project project, final String targetEvent) {
95+
final CreateAnObserverDialog dialog = new CreateAnObserverDialog(project, targetEvent);
96+
dialog.pack();
97+
dialog.centerDialog(dialog);
98+
dialog.setVisible(true);
7899
}
79100

101+
/**
102+
* Setup observer area combobox.
103+
*/
80104
private void fillTargetAreaOptions() {
81-
for(Package.Areas area: Package.Areas.values()) {
105+
for (final Package.Areas area : Package.Areas.values()) {
82106
observerArea.addItem(area.toString());
83107
}
84108
}
85109

110+
/**
111+
* Perform code generation using input data.
112+
*/
86113
private void onOK() {
87114
if (!validator.validate(project)) {
88115
return;
@@ -127,24 +154,25 @@ public String getObserverModule() {
127154
return this.observerModule.getSelectedItem().toString();
128155
}
129156

130-
public static void open(@NotNull Project project, String targetEvent) {
131-
CreateAnObserverDialog dialog = new CreateAnObserverDialog(project, targetEvent);
132-
dialog.pack();
133-
dialog.centerDialog(dialog);
134-
dialog.setVisible(true);
135-
}
136-
137-
private void createUIComponents() {
138-
List<String> allModulesList = ModuleIndex.getInstance(project).getEditableModuleNames();
157+
private void createUIComponents() { //NOPMD
158+
final List<String> allModulesList = ModuleIndex.getInstance(project)
159+
.getEditableModuleNames();
139160

140161
this.observerModule = new FilteredComboBox(allModulesList);
141162
}
142163

143164
private String getNamespace() {
144-
String targetModule = getObserverModule();
145-
String namespace = targetModule.replace(Package.VENDOR_MODULE_NAME_SEPARATOR, Package.FQN_SEPARATOR);
165+
final String targetModule = getObserverModule();
166+
String namespace = targetModule.replace(
167+
Package.VENDOR_MODULE_NAME_SEPARATOR,
168+
Package.FQN_SEPARATOR
169+
);
170+
146171
namespace = namespace.concat(Package.FQN_SEPARATOR);
147-
return namespace.concat(getObserverDirectory().replace(File.separator, Package.FQN_SEPARATOR));
172+
return namespace.concat(getObserverDirectory().replace(
173+
File.separator,
174+
Package.FQN_SEPARATOR)
175+
);
148176
}
149177

150178
private String getObserverClassFqn() {

0 commit comments

Comments
 (0)