Skip to content

Commit a547da3

Browse files
committed
v1.1.0
1 parent b62fe8b commit a547da3

File tree

81 files changed

+319
-264
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+319
-264
lines changed

.run/Run Plugin Tests.run.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</option>
1212
<option name="taskNames">
1313
<list>
14-
<option value="test" />
14+
<option value="check" />
1515
</list>
1616
</option>
1717
<option name="vmOptions" value="" />

.run/Run Plugin.run.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
<option value="runIde" />
1515
</list>
1616
</option>
17-
<option name="vmOptions" value="-Xmx2G" />
17+
<option name="vmOptions" value="" />
1818
</ExternalSystemSettings>
1919
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
2020
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
2121
<DebugAllEnabled>false</DebugAllEnabled>
2222
<method v="2" />
2323
</configuration>
24-
</component>
24+
</component>

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Modulite Changelog
22

3+
## 1.1.0
4+
35
## 1.0.0 — 17.11.2022
46

57
First stable version.

build.gradle.kts

+32-29
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1+
import org.jetbrains.changelog.Changelog
22

33
fun properties(key: String) = project.findProperty(key).toString()
44

55
plugins {
66
// Java support
77
id("java")
88
// Kotlin support
9-
id("org.jetbrains.kotlin.jvm") version "1.7.0"
9+
id("org.jetbrains.kotlin.jvm") version "1.7.21"
1010
// Gradle IntelliJ Plugin
11-
id("org.jetbrains.intellij") version "1.7.0"
11+
id("org.jetbrains.intellij") version "1.10.0"
1212
// Gradle Changelog Plugin
13-
id("org.jetbrains.changelog") version "1.3.1"
13+
id("org.jetbrains.changelog") version "2.0.0"
14+
// Gradle Kover Plugin
15+
id("org.jetbrains.kotlinx.kover") version "0.6.1"
1416
}
1517

1618
group = properties("pluginGroup")
@@ -21,8 +23,13 @@ repositories {
2123
mavenCentral()
2224
}
2325

26+
// Set the JVM language level used to build project. Use Java 11 for 2020.3+, and Java 17 for 2022.2+.
27+
kotlin {
28+
jvmToolchain(11)
29+
}
30+
2431
dependencies {
25-
testImplementation(platform("org.junit:junit-bom:5.8.2"))
32+
testImplementation(platform("org.junit:junit-bom:5.9.1"))
2633
testImplementation("org.junit.jupiter:junit-jupiter")
2734
}
2835

@@ -38,48 +45,44 @@ intellij {
3845

3946
// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
4047
changelog {
41-
version.set(properties("pluginVersion"))
4248
groups.set(emptyList())
49+
repositoryUrl.set(properties("pluginRepositoryUrl"))
4350
}
4451

45-
tasks {
46-
// Set the JVM compatibility versions
47-
properties("javaVersion").let {
48-
withType<JavaCompile> {
49-
sourceCompatibility = it
50-
targetCompatibility = it
51-
}
52-
withType<KotlinCompile> {
53-
kotlinOptions.jvmTarget = it
54-
kotlinOptions.freeCompilerArgs = listOf("-Xjvm-default=all")
55-
}
56-
}
52+
// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration
53+
kover.xmlReport {
54+
onCheck.set(true)
55+
}
5756

57+
tasks {
5858
wrapper {
5959
gradleVersion = properties("gradleVersion")
6060
}
6161

62-
runIde {
63-
maxHeapSize = "8g"
64-
}
65-
66-
buildSearchableOptions {
67-
enabled = false
68-
}
69-
7062
patchPluginXml {
7163
version.set(properties("pluginVersion"))
7264
sinceBuild.set(properties("pluginSinceBuild"))
7365
untilBuild.set(properties("pluginUntilBuild"))
7466

7567
// Get the latest available change notes from the changelog file
7668
changeNotes.set(provider {
77-
changelog.run {
78-
getOrNull(properties("pluginVersion")) ?: getLatest()
79-
}.toHTML()
69+
with(changelog) {
70+
renderItem(
71+
getOrNull(properties("pluginVersion")) ?: getLatest(),
72+
Changelog.OutputType.HTML,
73+
)
74+
}
8075
})
8176
}
8277

78+
runIde {
79+
maxHeapSize = "8g"
80+
}
81+
82+
buildSearchableOptions {
83+
enabled = false
84+
}
85+
8386
sourceSets {
8487
test {
8588
resources {

gradle.properties

+23-15
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
1-
# IntelliJ Platform Artifacts Repositories
2-
# -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
3-
pluginGroup=com.vk
4-
pluginName=modulite
1+
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
2+
3+
pluginGroup = com.vk
4+
pluginName = modulite
5+
pluginRepositoryUrl = https://github.com/VKCOM/modulite
6+
57
# SemVer format -> https://semver.org
6-
pluginVersion=1.0.0
8+
pluginVersion = 1.1.0
9+
710
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
811
# for insight into build numbers and IntelliJ Platform versions.
9-
pluginSinceBuild=222
10-
pluginUntilBuild=222.*
12+
pluginSinceBuild = 222
13+
pluginUntilBuild = 222.*
14+
1115
# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties
12-
platformType=IU
13-
platformVersion=2022.2
16+
platformType = IU
17+
platformVersion = 2022.2
18+
1419
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
1520
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
16-
# https://plugins.jetbrains.com/plugin/6610-php/versions
17-
# https://plugins.jetbrains.com/plugin/13126-yaml/versions
18-
platformPlugins=com.jetbrains.php:222.3345.135, org.jetbrains.plugins.yaml:222.3345.126
19-
# Java language level used to compile sources and to generate the files for - Java 11 is required since 2020.3
20-
javaVersion=11
21+
# PHP Plugin - https://plugins.jetbrains.com/plugin/6610-php/versions
22+
# YAML Plugin - https://plugins.jetbrains.com/plugin/13126-yaml/versions
23+
platformPlugins = com.jetbrains.php:222.3345.135, org.jetbrains.plugins.yaml:222.3345.126
24+
2125
# Gradle Releases -> https://github.com/gradle/gradle/releases
22-
gradleVersion=7.5
26+
gradleVersion = 7.5.1
27+
2328
# Opt-out flag for bundling Kotlin standard library.
2429
# See https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library for details.
2530
# suppress inspection "UnusedProperty"
2631
kotlin.stdlib.default.dependency = false
32+
33+
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
34+
org.gradle.unsafe.configuration-cache = true
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

src/main/kotlin/com/vk/modulite/actions/dialogs/ManageModuliteExportsDialog.kt

-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ import com.intellij.ui.dsl.builder.*
1111
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
1212
import com.intellij.ui.dsl.gridLayout.VerticalAlign
1313
import com.intellij.util.ui.JBDimension
14-
import com.intellij.util.ui.JBUI
1514
import com.vk.modulite.SymbolName
1615
import com.vk.modulite.actions.panels.SymbolTreeNode
1716
import com.vk.modulite.actions.panels.SymbolsTreeBase
1817
import com.vk.modulite.modulite.Modulite
19-
import com.vk.modulite.services.ModuliteDepsDiff
2018
import javax.swing.JComponent
2119
import javax.swing.border.Border
2220
import javax.swing.tree.TreeSelectionModel

src/main/kotlin/com/vk/modulite/highlighting/ModuliteYamlAnnotator.kt

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.intellij.codeInspection.ProblemHighlightType
44
import com.intellij.lang.annotation.AnnotationHolder
55
import com.intellij.lang.annotation.Annotator
66
import com.intellij.lang.annotation.HighlightSeverity
7-
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
87
import com.intellij.openapi.editor.colors.TextAttributesKey
98
import com.intellij.openapi.util.TextRange
109
import com.intellij.psi.PsiElement

src/main/kotlin/com/vk/modulite/highlighting/hints/BaseInlayHintsCollector.kt

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.intellij.codeInsight.hints.presentation.InlayPresentation
66
import com.intellij.codeInsight.hints.presentation.InsetPresentation
77
import com.intellij.codeInsight.hints.presentation.MenuOnClickPresentation
88
import com.intellij.codeInsight.hints.settings.InlayHintsConfigurable
9-
import com.intellij.codeInsight.hints.settings.language.ParameterInlayProviderSettingsModel
109
import com.intellij.openapi.actionSystem.ActionUpdateThread
1110
import com.intellij.openapi.actionSystem.AnAction
1211
import com.intellij.openapi.actionSystem.AnActionEvent

src/main/kotlin/com/vk/modulite/index/ModuliteFilesIndex.kt

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.vk.modulite.index
22

3+
import com.intellij.openapi.diagnostic.logger
34
import com.intellij.util.indexing.*
45
import com.intellij.util.io.DataExternalizer
56
import com.intellij.util.io.EnumeratorStringDescriptor
67
import com.intellij.util.io.KeyDescriptor
78
import com.vk.modulite.Namespace
89
import com.vk.modulite.SymbolName
10+
import com.vk.modulite.inspections.InternalSymbolUsageInspection
911
import com.vk.modulite.modulite.Modulite
1012
import com.vk.modulite.modulite.ModuliteRequires
1113
import gnu.trove.THashMap
@@ -18,8 +20,13 @@ class ModuliteFilesIndex : FileBasedIndexExtension<String, Modulite>() {
1820
return DataIndexer { inputData ->
1921
val map = THashMap<String, Modulite>()
2022

21-
val model = Modulite.fromYamlPsi(inputData.psiFile as YAMLFile)
22-
map[model.name] = model
23+
val psiFile = inputData.psiFile
24+
if (psiFile is YAMLFile) {
25+
val model = Modulite.fromYamlPsi(psiFile)
26+
map[model.name] = model
27+
} else {
28+
LOG.error("File '${inputData.file}' expected type: 'YAMLFile', actual type: '${inputData.fileType.name}'")
29+
}
2330

2431
map
2532
}
@@ -126,5 +133,6 @@ class ModuliteFilesIndex : FileBasedIndexExtension<String, Modulite>() {
126133

127134
companion object {
128135
val KEY = ID.create<String, Modulite>("modulite.config.file")
136+
private val LOG = logger<InternalSymbolUsageInspection>()
129137
}
130138
}

src/main/kotlin/com/vk/modulite/inspections/InternalSymbolUsageInspection.kt

+11-20
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import com.intellij.openapi.diagnostic.logger
55
import com.intellij.openapi.project.Project
66
import com.intellij.psi.PsiElement
77
import com.intellij.psi.PsiElementVisitor
8-
import com.intellij.psi.util.elementType
98
import com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocType
10-
import com.jetbrains.php.lang.lexer.PhpTokenTypes
119
import com.jetbrains.php.lang.psi.elements.*
1210
import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor
11+
import com.vk.modulite.SymbolName
1312
import com.vk.modulite.composer.ComposerPackage
1413
import com.vk.modulite.modulite.Modulite
1514
import com.vk.modulite.modulite.ModuliteRestrictionChecker
@@ -26,25 +25,14 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
2625
private val LOG = logger<InternalSymbolUsageInspection>()
2726
}
2827

29-
class AddSymbolToRequiresQuickFix(private val contextModulite: Modulite) : LocalQuickFix {
28+
class AddSymbolToRequiresQuickFix(
29+
private val contextModulite: Modulite,
30+
private val symbol: SymbolName,
31+
) : LocalQuickFix {
3032
override fun getFamilyName() = "Add symbol to requires"
3133

3234
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
33-
val element = descriptor.psiElement
34-
35-
val ref = if (element.elementType == PhpTokenTypes.IDENTIFIER) {
36-
element.parent as? PhpReference
37-
} else {
38-
descriptor.psiElement as? PhpReference
39-
}
40-
41-
if (ref == null) {
42-
return
43-
}
44-
45-
val reference = ref.resolveGlobal(false).firstOrNull() ?: return
46-
47-
contextModulite.addDependencies(reference.symbolName(forNotRequired = true))
35+
contextModulite.addDependencies(symbol)
4836
}
4937
}
5038

@@ -156,6 +144,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
156144
holder.addProblem(
157145
reason,
158146
element,
147+
reference,
159148
context,
160149
problemPsiElement
161150
)
@@ -168,6 +157,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
168157
private fun ProblemsHolder.addProblem(
169158
reason: ModuliteRestrictionChecker.ViolationTypes,
170159
symbolElement: PhpNamedElement,
160+
reference: PhpReference,
171161
context: ModuliteRestrictionChecker.Context,
172162
problemElement: PsiElement,
173163
) {
@@ -186,7 +176,8 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
186176
}
187177

188178
ModuliteRestrictionChecker.ViolationTypes.NotRequired -> {
189-
val readableName = symbolElement.symbolName(forNotRequired = true).readableNameWithAction()
179+
val symbol = symbolElement.symbolName(reference, forNotRequired = true)
180+
val readableName = symbol.readableNameWithAction()
190181

191182
// Если символ определен в композер пакете, то нужно добавить его, а не модуль.
192183
if (refPackage != null) {
@@ -202,7 +193,7 @@ class InternalSymbolUsageInspection : LocalInspectionTool() {
202193
restricted to $readableName, $refModulite is not required by ${context.modulite}
203194
""".trimIndent()
204195
} else {
205-
quickFixes.add(AddSymbolToRequiresQuickFix(context.modulite!!))
196+
quickFixes.add(AddSymbolToRequiresQuickFix(context.modulite!!, symbol))
206197

207198
"""
208199
restricted to $readableName, it's not required by ${context.modulite}

src/main/kotlin/com/vk/modulite/modulite/Modulite.kt

-2
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,6 @@ data class Modulite(
321321
val fqn = context.function.symbolName()
322322
if (containsInAllowedInternalAccessKey(fqn, name)) {
323323
return true
324-
} else {
325-
println()
326324
}
327325
}
328326

src/main/kotlin/com/vk/modulite/modulite/ModuliteRestrictionChecker.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.vk.modulite.composer.ComposerPackage
1010
import com.vk.modulite.psi.extensions.files.containingComposerPackage
1111
import com.vk.modulite.psi.extensions.files.containingModulite
1212
import com.vk.modulite.psi.extensions.php.symbolName
13+
import com.vk.modulite.utils.fromKphpPolyfills
1314
import com.vk.modulite.utils.fromStubs
1415
import com.vk.modulite.utils.fromVendor
1516

@@ -111,7 +112,7 @@ object ModuliteRestrictionChecker {
111112

112113
// Не проверяем использования символов, которые определены в
113114
// стабах или являются сторонними.
114-
if (file.fromStubs() || file.fromVendor()) {
115+
if (file.fromStubs() || file.fromVendor() || file.fromKphpPolyfills()) {
115116
return result(ViolationTypes.Ok)
116117
}
117118

src/main/kotlin/com/vk/modulite/projectview/ModuliteNodeDecoration.kt

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ object ModuliteNodeDecoration {
3636
if (!isExported) {
3737
data.setIcon(PluginIcons.InternalMultiModulite)
3838
data.tooltip = "Internal modulite with sub-modulites"
39+
suffix = "(internal)"
3940
} else {
4041
data.setIcon(PluginIcons.MultiModulite)
4142
data.tooltip = "Modulite with sub-modulites"

0 commit comments

Comments
 (0)