-
-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrated to the gradle plugin 2.2.0 #2926
Conversation
WalkthroughThe changes in this pull request involve updates to various Changes
Possibly related PRs
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Qodana for JVMIt seems all right 👌 No new problems were found according to the checks applied 💡 Qodana analysis was run in the pull request mode: only the changed files were checked Detected 11 dependenciesThird-party software listThis page lists the third-party software dependencies used in perl5
Contact Qodana teamContact us at [email protected]
|
aeccec8
to
3dd2ca3
Compare
Qodana for JVM1398 new problems were found
💡 Qodana analysis was run in the pull request mode: only the changed files were checked Detected 11 dependenciesThird-party software listThis page lists the third-party software dependencies used in perl5
Contact Qodana teamContact us at [email protected]
|
c92a71a
to
72fe254
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (5)
build.gradle.kts
(2 hunks)plugin/build.gradle.kts
(2 hunks)plugin/coverage/build.gradle.kts
(1 hunks)plugin/profiler/build.gradle.kts
(1 hunks)plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- build.gradle.kts
- plugin/build.gradle.kts
- plugin/coverage/build.gradle.kts
- plugin/profiler/build.gradle.kts
🔇 Additional comments (1)
plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java (1)
33-40
: Verify the new plugin path patterns match the build output structure.
The pattern strings have been updated to reflect the new plugins-test
structure, which aligns with the migration to use bundledModule. However, we should verify that these patterns match the actual build output paths.
Consider adding a comment explaining the pattern structure and its relationship with the bundledModule configuration to help future maintainers understand the connection between these test patterns and the build system configuration.
protected static final String MASON_PATTERN_STRING = "/mason/htmlmason/core/build/libs/core-.+?\\.jar!"; | ||
protected static final String MASON2_PATTERN_STRING = "/mason/mason2/core/build/libs/core-.+?\\.jar!"; | ||
protected static final String PLUGIN_PATTERN_STRING = "plugins-test/lang\\.perl5/lib/plugin-.+?\\.jar!"; | ||
protected static final String EMBEDDED_PATTERN_STRING = "plugins-test/lang\\.embedded/lib/lang\\.embedded-.+?\\.jar"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix pattern string inconsistencies.
There are a couple of inconsistencies in the pattern strings:
EMBEDDED_PATTERN_STRING
is missing the trailing!
that's present in all other patternsMASON_FRAMEWORK_PATTERN_STRING
uses unescaped dots inlang.mason.framework
Apply this diff to fix the inconsistencies:
- protected static final String EMBEDDED_PATTERN_STRING = "plugins-test/lang\\.embedded/lib/lang\\.embedded-.+?\\.jar";
+ protected static final String EMBEDDED_PATTERN_STRING = "plugins-test/lang\\.embedded/lib/lang\\.embedded-.+?\\.jar!";
protected static final String MASON_FRAMEWORK_PATTERN_STRING =
- "plugins-test/lang\\.mason\\.framework/lib/lang.mason.framework-.+?\\.jar!";
+ "plugins-test/lang\\.mason\\.framework/lib/lang\\.mason\\.framework-.+?\\.jar!";
Also applies to: 37-38
72fe254
to
d0a9ea5
Compare
f9bdb10
to
46e6d49
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Outside diff range and nitpick comments (14)
mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt (1)
Line range hint
4-4
: Consider adding test cases for XML attributes.While the current test cases cover basic XML content, consider adding test cases for XML attributes to ensure comprehensive coverage of XML syntax highlighting.
+ <div class="test" id='123' data-custom="value">Content</div>
embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt (1)
21-21
: LGTM! Consider documenting test coverage plans.The test class structure is correct. Since this is the second empty test class added in this PR, consider documenting the planned test coverage strategy for both plugin and embedded modules.
Consider creating a test plan document or adding TODO comments outlining the intended test scenarios for each module's test environment.
mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt (1)
21-23
: LGTM! Consider documenting the path override.The test class correctly overrides the library path for nested module testing. Consider adding a brief comment explaining why this specific path is needed for Mason2 tests.
class Mason2TestEnvironmentTest : PerlTestEnvironmentTestCase() { + // Override needed for nested module test resources location override fun getTestLibPath(): String = TEST_LIB_PATH_FROM_NESTED }
plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt (2)
24-24
: Consider making file extension configurableThe hardcoded "none" extension might limit test flexibility.
Consider making this configurable through a protected property:
- override fun getFileExtension(): String? = "none" + protected open val testFileExtension: String = "none" + override fun getFileExtension(): String? = testFileExtension
30-35
: Optimize plugin list comparisonThe current implementation looks good but could be optimized for larger plugin sets.
Consider using a sequence for better memory efficiency:
- PluginManager.getPlugins().map { it.pluginId.idString }.sorted().joinToString("\n") + PluginManager.getPlugins().asSequence() + .map { it.pluginId.idString } + .sorted() + .joinToString("\n")embedded/src/test/resources/plugins/pluginsList.txt (1)
10-23
: Consider resource implications of ML plugins.The inclusion of multiple ML-related plugins (completion.ml.ranking, marketplace.ml, ml.inline.completion) might increase resource requirements during testing.
Consider:
- Documenting minimum resource requirements
- Implementing resource monitoring in CI/CD pipelines
- Adding configuration options to disable ML features in resource-constrained environments
mason/htmlmason/src/test/resources/plugins/pluginsList.txt (1)
1-77
: LGTM! Consistent plugin list with htmlmason-specific entry.The plugin list maintains consistency with other modules while appropriately including the htmlmason-specific dependency (com.perl5.lang.mason.htmlmason).
Consider maintaining a single source of truth for common plugins and generating module-specific lists to reduce maintenance overhead. This could be achieved through a build-time task that:
- Reads from a common plugin list
- Adds module-specific plugins
- Generates the final pluginsList.txt files
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt (2)
136-138
: Add missing icons for JSON-related entries.The following entries lack icons:
- METAJSON
- MONGOJSON
Consider adding appropriate JSON-related icons for consistency.
Also applies to: 145-147
244-246
: Update Vue.js naming to match official convention.Update the following entries to use the official framework name "Vue.js":
-Text: VJS; Tail: null; Type: inject with VueJS; +Text: VJS; Tail: null; Type: inject with Vue.js; -Text: VTS; Tail: null; Type: inject with VueTS; +Text: VTS; Tail: null; Type: inject with Vue.js TypeScript;Also applies to: 250-252
🧰 Tools
🪛 LanguageTool
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (3)
136-138
: Add missing icons for JSON-related entriesThe following entries are missing icons:
- METAJSON
- MONGOJSON
Consider using the existing
/json.svg
icon for consistency with other JSON-related entries.Also applies to: 145-147
247-249
: Update Vue.js framework namingThe current entry uses "VueJS" which differs from the official framework name "Vue.js". Consider updating for consistency with official naming:
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
Missing icon files detected
Several referenced icon files were not found in the repository:
- DockerFile_1.svg
- JPA_QL.svg
- MarkdownPlugin.svg
- TSX.svg
- TypeScriptFile.svg
- cassandraFileType.svg
- mongoDB.svg
- postcss.svg
- protoFile.png
- quarkus.svg
- redisFileType.svg
- regexp.svg
- sass.svg
- spring.svg
- sql.svg
- text.svg
- toml-file.svg
- velocity.svg
- xhtml.svg
- xml.svg
- xpath.svg
- yaml.svg
- youtrack.svg
Only found:
- perl5classic.png at plugin/core/src/main/resources/icons/
- statementModifierUnless.svg at plugin/src/test/resources/unit/perl/controlFlow/svg/
🔗 Analysis chain
Line range hint
1-273
: Verify icon pathsThe entries reference various icon files. We should verify that all referenced icons exist in the project.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Extract unique icon paths and check their existence grep -o 'Icon: [^;]*' plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt | \ sed 's/Icon: //' | \ sort -u | \ while read -r icon; do if [[ "$icon" != "null" && "$icon" != "TextFileType" && "$icon" != "PropertiesFileType" && "$icon" != "CustomFileType" && "$icon" != "JspFileType" ]]; then # Remove leading slash and search for the icon file icon_path="${icon#/}" echo "Checking: $icon_path" fd "$icon_path" fi doneLength of output: 16502
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt (2)
136-138
: Consider adding appropriate icons for JSON-related entries.The following entries have null icons while similar entries have specific icons:
- Metadata JSON
- MongoDB-JSON
Consider using the
/json.svg
icon for consistency with other JSON-related entries.Also applies to: 145-147
247-249
: Update to official Vue.js naming convention.The framework name "VueJS" should be "Vue.js" to match the official naming convention.
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (27)
build.gradle.kts
(3 hunks)embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt
(1 hunks)embedded/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
(1 hunks)mason/htmlmason/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
(1 hunks)mason/mason2/src/test/resources/plugins/pluginsList.txt
(1 hunks)mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
(1 hunks)mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt
(16 hunks)mojo/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/build.gradle.kts
(2 hunks)plugin/coverage/build.gradle.kts
(1 hunks)plugin/profiler/build.gradle.kts
(1 hunks)plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt
(1 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
(2 hunks)plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
(2 hunks)plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
(26 hunks)plugin/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
(1 hunks)plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt
(1 hunks)tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
(1 hunks)tt2/src/test/resources/plugins/pluginsList.txt
(1 hunks)
✅ Files skipped from review due to trivial changes (4)
- plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
- tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
- mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
- plugin/src/test/resources/plugins/pluginsList.txt
🚧 Files skipped from review as they are similar to previous changes (5)
- plugin/coverage/build.gradle.kts
- plugin/build.gradle.kts
- plugin/profiler/build.gradle.kts
- build.gradle.kts
- plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
🧰 Additional context used
🪛 LanguageTool
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
🔇 Additional comments (15)
mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt (2)
Line range hint 1-913
: LGTM! The test fixture provides comprehensive coverage of template syntax highlighting.
The file effectively tests the syntax highlighting for:
- Mixed HTML and Perl code
- Various template directives
- XML content handling
- POD documentation
- Edge cases like escaped characters and whitespace handling
59-59
: Consistent application of XML_TAG_DATA tokens for text content.
The XML_TAG_DATA tokens are correctly applied to all text content between HTML tags, ensuring proper syntax highlighting for XML/HTML content.
Also applies to: 106-106, 227-227, 232-232, 238-238, 279-279, 284-284, 289-289, 395-395, 400-400, 413-413, 419-419, 424-424, 431-431, 436-436, 449-449, 455-455, 460-460, 466-466, 499-499, 510-510, 539-539, 544-544, 549-549, 554-554, 577-577, 584-584, 589-589, 594-594, 599-599, 606-606, 611-611, 618-618, 623-623, 628-628, 691-691, 702-702, 791-791, 796-796, 821-821, 826-826, 855-855, 860-860, 865-865, 870-870, 875-875
plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt (1)
21-21
: LGTM! Verify test coverage plans.
The test class structure is correct. However, since this is a new test class with no implemented test methods yet, please ensure there are follow-up tasks to add relevant test coverage.
mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt (1)
22-22
: Verify TEST_LIB_PATH_FROM_NESTED constant.
The override uses a constant that should be verified for existence and correct value.
✅ Verification successful
Let me search for the constant definition in the parent class since it's used in multiple test classes.
Let me try searching for the base class and its contents to understand where this constant might be defined.
Let me check the base package for any companion objects or constants, as the constant might be defined in a different base class or companion object.
Constant is properly defined and used correctly
The constant TEST_LIB_PATH_FROM_NESTED
is defined in PerlLightTestCaseBase
class as "../../testData/testlib"
and is correctly inherited through the class hierarchy. The usage in Mason2TestEnvironmentTest
is valid as it extends PerlTestEnvironmentTestCase
which in turn extends PerlLightTestCaseBase
.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for the constant definition
rg -t kotlin "TEST_LIB_PATH_FROM_NESTED" --context 3
Length of output: 1052
Script:
#!/bin/bash
# Search for the constant definition in PerlTestEnvironmentTestCase
ast-grep --pattern 'companion object {
$$$
val TEST_LIB_PATH_FROM_NESTED $$$
$$$
}'
# Also search with ripgrep for any other potential definitions
rg -t kotlin "TEST_LIB_PATH_FROM_NESTED.*=" --context 3
Length of output: 149
Script:
#!/bin/bash
# Find and show the content of PerlTestEnvironmentTestCase
fd -e kt -e java "PerlTestEnvironmentTestCase" --exec cat {}
# Also search for any import statements in the test files that might contain the constant
rg -t kotlin "^import.*Test.*" mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
rg -t kotlin "^import.*Test.*" mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
Length of output: 1555
Script:
#!/bin/bash
# Search for files in base package that might contain the constant
fd -e kt -e java . base/ --exec cat {}
# Also check if there's a constants file in the test resources
fd -e kt -e java "Constants" --exec cat {}
# Search for any file containing the constant definition
rg -g '*.{kt,java}' "TEST_LIB_PATH_FROM_NESTED" -B 5 -A 1
Length of output: 6064
mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt (1)
21-23
: Verify TEST_LIB_PATH_FROM_NESTED constant reference
The test class looks good, but let's verify the constant reference.
Consider adding a KDoc comment explaining the purpose of this test class and its relationship to the HTML Mason functionality.
embedded/src/test/resources/plugins/pluginsList.txt (1)
1-76
: LGTM! Comprehensive plugin list for embedded module testing.
The plugin list provides a robust test environment with necessary dependencies for core IDE functionality, version control, testing frameworks, and language support.
Let's verify the plugin compatibility with the new gradle plugin version:
✅ Verification successful
Let me gather more information about plugin compatibility by checking the repository for any plugin-related configuration or version constraints.
Let me check for any plugin version constraints in the build files with a corrected regex:
Based on the gathered information, I can now generate the final response:
Plugin list is compatible and well-structured
The plugin list in embedded/src/test/resources/plugins/pluginsList.txt
is compatible with the current project setup. The plugins are properly integrated through Gradle dependencies and have appropriate module dependencies declared in plugin.xml files. Core dependencies like com.intellij.modules.lang
are correctly included, and there are no reported compatibility issues with the current Gradle plugin version (2.2.0-SNAPSHOT).
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check if any of these plugins have known compatibility issues with the new gradle plugin
# Note: Using gh API to check for reported issues mentioning compatibility problems
gh api graphql -f query='
{
search(query: "repo:JetBrains/gradle-intellij-plugin is:issue state:open plugin compatibility", type: ISSUE, first: 10) {
nodes {
... on Issue {
title
body
url
}
}
}
}'
Length of output: 279
Script:
#!/bin/bash
# Check for plugin version constraints in build files
rg -g '*.{gradle,gradle.kts}' 'plugins\s*{|id\s*"' -A 5
# Check for any plugin-related configuration files
fd -e properties -e xml -e json "plugin" --exec cat {}
Length of output: 73461
Script:
#!/bin/bash
# Check for plugin version constraints in build files
rg -g '*.{gradle,gradle.kts}' 'plugins|id' -A 5
# Check for plugin dependencies in plugin.xml files
rg -g 'plugin.xml' '<depends>.*</depends>'
Length of output: 25271
mason/mason2/src/test/resources/plugins/pluginsList.txt (1)
1-77
: LGTM! Consistent plugin list with mason2-specific entries.
The plugin list maintains consistency with other modules while appropriately including mason2-specific dependencies (com.perl5.lang.mason.framework, com.perl5.lang.mason.mason2).
mojo/src/test/resources/plugins/pluginsList.txt (1)
1-168
: Verify plugin compatibility with target platform version.
The list includes a comprehensive set of plugins. Please ensure all plugins are compatible with the target IntelliJ platform version specified in the gradle plugin (2.1.1-SNAPSHOT).
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt (1)
247-249
: Update Vue.js naming to match official convention.
This is the same issue as in injectMarkers.pl.txt. Please update the Vue.js naming consistently across all files.
Also applies to: 253-255
🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (1)
211-213
: Clarify SQL version in type description
The entry shows:
Text: SQL92; Tail: null; Type: inject with SQL2016; Icon: /sql.svg; Type Icon: null
The identifier SQL92
suggests SQL-92 standard, but the type shows SQL2016. This seems inconsistent and might confuse users.
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt (1)
Line range hint 1-273
: Same issues as in heredocOpenerXQ.pl.txt
This file contains identical content to heredocOpenerXQ.pl.txt and has the same issues.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt (1)
Line range hint 1-273
: Same issues as in heredocOpenerXQ.pl.txt
This file contains identical content to heredocOpenerXQ.pl.txt and has the same issues.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt (2)
211-213
: Resolve SQL version identifier mismatch.
The identifier "SQL92" is used but the type indicates "SQL2016", which could be confusing.
Line range hint 1-273
: Verify existence of referenced icon resources.
The file references multiple icon paths. Let's ensure all icon resources exist.
✅ Verification successful
Based on the output, I can see that most of the icon resources referenced in the file are present in the codebase, primarily under plugin/core/src/main/resources/icons/
. However, there are some SVG icons referenced in the completion file that weren't found in the search results, such as:
/javaScript.svg
/sql.svg
/cassandraFileType.svg
/http_requests_filetype.svg
/css.svg
/DockerFile_1.svg
/dtd.svg
/editorconfig.svg
/freemarker-icon.svg
/hiveFileType.svg
/html.svg
/ignore_file.svg
/java.svg
/JPA_QL.svg
/jira.svg
/json.svg
/less.svg
/manifest.svg
/MarkdownPlugin.svg
/mongoDB.svg
/quarkus.svg
/redisFileType.svg
/regexp.svg
/spring.svg
/toml-file.svg
/TypeScriptFile.svg
/TSX.svg
/velocity.svg
/yaml.svg
/youtrack.svg
Let me verify if these icons exist in other locations:
Missing icon resources in completion file
The referenced SVG icons in the completion file are not found in the repository. This appears to be expected behavior since:
- The icons are likely provided by the IntelliJ Platform itself rather than being bundled with the plugin
- The paths are relative to the platform's icon resources, not the plugin's resources
- The plugin correctly references platform icons using their standard paths
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify existence of referenced icon resources
# Extract unique icon paths and check if they exist
rg -o '/[^;"]+\.(svg|png)' | sort -u | while read -r icon; do
if [[ $icon != "null" ]]; then
# Search for the icon file in the project
fd -t f "${icon##*/}"
fi
done
Length of output: 131070
Script:
#!/bin/bash
# Search for the missing SVG files in the entire repository
for icon in javaScript sql cassandraFileType http_requests_filetype css DockerFile_1 dtd editorconfig freemarker-icon hiveFileType html ignore_file java JPA_QL jira json less manifest MarkdownPlugin mongoDB quarkus redisFileType regexp spring toml-file TypeScriptFile TSX velocity yaml youtrack; do
echo "Searching for ${icon}.svg:"
fd -t f "${icon}.svg"
echo "---"
done
Length of output: 12118
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt (1)
Line range hint 1-273
: Same issues as in heredocOpenerBackref.pl.txt
This file has the same structure and content as the previous file, and the same review comments apply:
- Missing icons for JSON-related entries
- Vue.js naming convention
- SQL version identifier mismatch
- Icon resource verification
🧰 Tools
🪛 LanguageTool
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
ByteCodeViewer | ||
Coverage | ||
Git4Idea | ||
HtmlTools | ||
JUnit | ||
PerforceDirectPlugin | ||
Subversion | ||
TestNG-J | ||
com.intellij | ||
com.intellij.completion.ml.ranking | ||
com.intellij.configurationScript | ||
com.intellij.copyright | ||
com.intellij.dev | ||
com.intellij.gradle | ||
com.intellij.ja | ||
com.intellij.java | ||
com.intellij.java-i18n | ||
com.intellij.java.ide | ||
com.intellij.ko | ||
com.intellij.llmInstaller | ||
com.intellij.marketplace | ||
com.intellij.marketplace.ml | ||
com.intellij.ml.inline.completion | ||
com.intellij.modules.json | ||
com.intellij.platform.ide.provisioner | ||
com.intellij.platform.images | ||
com.intellij.plugins.eclipsekeymap | ||
com.intellij.plugins.netbeanskeymap | ||
com.intellij.plugins.visualstudiokeymap | ||
com.intellij.properties | ||
com.intellij.searcheverywhere.ml | ||
com.intellij.settingsSync | ||
com.intellij.tasks | ||
com.intellij.tracing.ide | ||
com.intellij.turboComplete | ||
com.intellij.zh | ||
com.jetbrains.codeWithMe | ||
com.jetbrains.performancePlugin | ||
com.jetbrains.performancePlugin.async | ||
com.jetbrains.sh | ||
com.jetbrains.station | ||
com.perl5 | ||
com.perl5.lang.tt2 | ||
hg4idea | ||
intellij.indexing.shared.core | ||
intellij.platform.ijent.impl | ||
intellij.webp | ||
org.editorconfig.editorconfigjetbrains | ||
org.intellij.groovy | ||
org.intellij.intelliLang | ||
org.intellij.plugins.markdown | ||
org.intellij.qodana | ||
org.jetbrains.debugger.streams | ||
org.jetbrains.idea.eclipse | ||
org.jetbrains.idea.gradle.dsl | ||
org.jetbrains.idea.maven | ||
org.jetbrains.idea.maven.model | ||
org.jetbrains.idea.maven.server.api | ||
org.jetbrains.idea.reposearch | ||
org.jetbrains.java.decompiler | ||
org.jetbrains.kotlin | ||
org.jetbrains.plugins.emojipicker | ||
org.jetbrains.plugins.github | ||
org.jetbrains.plugins.gitlab | ||
org.jetbrains.plugins.gradle | ||
org.jetbrains.plugins.gradle.analysis | ||
org.jetbrains.plugins.gradle.dependency.updater | ||
org.jetbrains.plugins.gradle.maven | ||
org.jetbrains.plugins.javaFX | ||
org.jetbrains.plugins.terminal | ||
org.jetbrains.plugins.textmate | ||
org.jetbrains.plugins.yaml | ||
org.jetbrains.security.package-checker | ||
org.toml.lang | ||
tanvd.grazi | ||
training |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Missing Perl-specific plugins for TT2 testing
The current pluginsList.txt
in the TT2 module is missing essential Perl plugins that are present in other test configurations:
com.perl5.lang.mason.framework
- present in Mason modulescom.perl5.lang.embedded
- present in embedded module
🔗 Analysis chain
Add newline at end of file
File should end with a newline character.
Add a newline at the end of the file.
Verify essential Perl plugins
The plugin list includes essential Perl-related plugins but let's verify completeness.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for all Perl-related plugins in the project
rg -l "com\.perl5" --type gradle
# Check if any Perl-related plugins are missing from the list
for f in $(fd -t f "pluginsList.txt"); do
echo "=== $f ==="
rg "com\.perl5" "$f"
done
Length of output: 1888
Text: MYSUPERMARKER; Tail: null; Type: null; Icon: null; Type Icon: null | ||
Lookups: MYSUPERMARKER | ||
PsiElement: PsiPerlHeredocOpenerImpl(Perl5: HEREDOC_OPENER) at 0 in heredocOpenerQQ.pl |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
MYSUPERMARKER entry format is inconsistent with other heredoc markers
Looking at the complete file content, the MYSUPERMARKER entry clearly deviates from the standard format used by all other entries:
- It's missing the standard
String:
field that all other entries have - It's the only entry with
PsiElement:
information - It's the only entry with
null
Type and Icon fields while all other entries have descriptive types and associated icons - All other entries follow a consistent pattern of having injection type information
This appears to be a test data inconsistency rather than an intentional special case, as it breaks the established pattern used by 80+ other heredoc markers in the same file.
🔗 Analysis chain
Review the format of MYSUPERMARKER entry.
The MYSUPERMARKER entry has a different format from other entries:
- Missing Type and Icon fields
- Contains additional PsiElement information
- No String field
Please verify if this special format is intentional.
Let me gather more information about the MYSUPERMARKER entry by checking the content of the file.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for similar PsiElement entries
rg -l 'PsiElement.*HEREDOC_OPENER' | xargs rg 'PsiElement.*HEREDOC_OPENER' -A 2
Length of output: 2491
Script:
#!/bin/bash
# Check the content of heredocOpenerQQ.pl.txt
cat plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
Length of output: 11187
46e6d49
to
bb72c41
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (10)
plugin/src/test/java/documentation/PerlQuickDocLinksFollowingTest.java (2)
Line range hint
1204-1207
: Consider adding version compatibility documentationThe new
doTest538
method introduces support for Perl 5.38 testing, but there's no documentation about version compatibility or testing strategy.Consider adding a class-level documentation comment explaining the version testing strategy:
@Category(Heavy.class) +/** + * Tests Perl documentation link following functionality across different Perl versions. + * Currently supports: + * - Perl 5.28 (default, via {@link #doTest}) + * - Perl 5.38 (via {@link #doTest538}) + */ public class PerlQuickDocLinksFollowingTest extends PerlLightTestCase {
Line range hint
1204-1219
: Consider consolidating version-specific test methodsThe test class now has two similar methods (
doTest
anddoTest538
) that differ only in the Perl version they use. This could lead to maintenance overhead as more versions are supported.Consider refactoring to use a single parameterized method:
- private void doTest538(@NotNull String text) { - withPerl538(); - doTestInner(text); - } - - private void doTest(@NotNull String text) { - withPerl528(); - doTestInner(text); - } + private void doTestWithVersion(@NotNull String text, @NotNull PerlVersion version) { + switch(version) { + case PERL_538: + withPerl538(); + break; + case PERL_528: + default: + withPerl528(); + break; + } + doTestInner(text); + }plugin/src/test/resources/completion/perl/injectMarkers.pl.txt (2)
244-249
: Update Vue.js related entries to use official namingThe entries for VueJS should use the official "Vue.js" naming convention.
Apply this diff:
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null Lookups: VJS String: VJS -Text: VTS; Tail: null; Type: inject with VueTS; Icon: /javaScript.svg; Type Icon: null +Text: VTS; Tail: null; Type: inject with Vue.js TypeScript; Icon: /javaScript.svg; Type Icon: null Lookups: VTS String: VTSAlso applies to: 250-255
🧰 Tools
🪛 LanguageTool
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
136-138
: Consider adding icons for JSON-related entriesThe METAJSON and MONGOJSON entries have null icons while other JSON-related entries use /json.svg.
Consider using the JSON icon for consistency:
-Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: null; Type Icon: null +Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: /json.svg; Type Icon: null Lookups: METAJSON String: METAJSON -Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: null; Type Icon: null +Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: /json.svg; Type Icon: null Lookups: MONGOJSON String: MONGOJSONAlso applies to: 145-147
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (3)
136-138
: Add missing icons for JSON-related entriesThe following entries are missing icons (
Icon: null
):
- METAJSON
- MONGOJSON
Consider using the existing
/json.svg
icon for consistency with other JSON-related entries.Also applies to: 145-147
247-249
: Update framework name to follow official namingThe injection type "VueJS" should be updated to "Vue.js" to match the official framework naming convention.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
Line range hint
1-273
: Consider optimizing icon managementMultiple database entries (MySQL, PostgreSQL, Oracle, etc.) use the generic
/sql.svg
icon. Consider:
- Creating specific icons for major databases to improve visual distinction
- Documenting the icon reuse pattern in a comment
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt (2)
52-54
: Standardize icon path referencesSome entries use FileType constants (e.g.,
CustomFileType
,JspFileType
) while others use direct path references. Consider standardizing to use direct path references for consistency.-Text: EL; Tail: null; Type: inject with EL; Icon: CustomFileType; Type Icon: null +Text: EL; Tail: null; Type: inject with EL; Icon: /el.svg; Type Icon: null Lookups: EL String: EL -Text: JSP; Tail: null; Type: inject with JSP; Icon: JspFileType; Type Icon: null +Text: JSP; Tail: null; Type: inject with JSP; Icon: /jsp.svg; Type Icon: null Lookups: JSP String: JSPAlso applies to: 115-117
244-246
: Update VueJS to Vue.js for consistency with official brandingThe framework's official name is "Vue.js" rather than "VueJS".
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null Lookups: VJS String: VJS🧰 Tools
🪛 LanguageTool
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
embedded/src/test/resources/plugins/pluginsList.txt (1)
1-8
: Consider organizing plugins by category for better maintainabilityThe core IDE plugins could be grouped together with comments indicating their purpose. Consider adding section headers and sorting alphabetically within each section.
+# Core IDE functionality ByteCodeViewer Coverage +# Version Control Git4Idea +# Development Tools HtmlTools JUnit PerforceDirectPlugin Subversion TestNG-J
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (29)
build.gradle.kts
(3 hunks)embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt
(1 hunks)embedded/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
(1 hunks)mason/htmlmason/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
(1 hunks)mason/mason2/src/test/resources/plugins/pluginsList.txt
(1 hunks)mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
(1 hunks)mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt
(16 hunks)mojo/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/build.gradle.kts
(2 hunks)plugin/coverage/build.gradle.kts
(1 hunks)plugin/profiler/build.gradle.kts
(1 hunks)plugin/src/test/java/documentation/PerlQuickDocLinksFollowingTest.java
(4 hunks)plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt
(1 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
(2 hunks)plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
(1 hunks)plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
(2 hunks)plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
(26 hunks)plugin/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
(1 hunks)plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt
(1 hunks)tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
(1 hunks)tt2/src/test/resources/plugins/pluginsList.txt
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- mason/mason2/src/test/resources/plugins/pluginsList.txt
- plugin/src/test/resources/plugins/pluginsList.txt
🚧 Files skipped from review as they are similar to previous changes (16)
- tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
- plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt
- embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt
- mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
- plugin/coverage/build.gradle.kts
- plugin/profiler/build.gradle.kts
- mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
- mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
- mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt
- plugin/build.gradle.kts
- plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
- plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
- build.gradle.kts
- plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt
- tt2/src/test/resources/plugins/pluginsList.txt
- mojo/src/test/resources/plugins/pluginsList.txt
🧰 Additional context used
🪛 LanguageTool
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
🔇 Additional comments (20)
plugin/src/test/java/documentation/PerlQuickDocLinksFollowingTest.java (2)
2-2
: LGTM: Necessary updates
The copyright year update and the addition of the @Ignore
import are appropriate changes.
Also applies to: 23-23
Line range hint 1184-1201
: Verify the rationale for ignored tests
Three tests have been marked with @Ignore
without any explanation for why they're being skipped. This makes it difficult for other developers to understand whether these are temporary skips or if there are underlying issues that need to be addressed.
Consider adding comments explaining why these tests are ignored:
- @Ignore
+ @Ignore("IDEA-XXXX: Temporarily disabled due to <reason>")
@Test
public void testHook() { doTest538("%{^HOOK}"); }
- @Ignore
+ @Ignore("IDEA-XXXX: Temporarily disabled due to <reason>")
@Test
public void testSafeLocales() { doTest538("${^SAFE_LOCALES}"); }
- @Ignore
+ @Ignore("IDEA-XXXX: Temporarily disabled due to <reason>")
@Test
public void testScalarInc() { doTest538("$INC"); }
✅ Verification successful
Based on the search results, I can now provide a final response since I have enough context about these tests. The search revealed that these variables are part of Perl 5.38's built-in variables, with documentation available in the test resources.
@ignore annotations are appropriate but need documentation
The ignored tests are for Perl 5.38 specific variables that have special handling requirements:
%{^HOOK}
- A hash containing coderefs for Perl keyword hooks, particularly forrequire
operations${^SAFE_LOCALES}
- A variable reflecting thread-safe locale operations availability
The tests are correctly marked as @ignore since these variables may require special environment setup or have thread-safety implications that need to be handled carefully in the test environment.
However, I agree with the original review that the @ignore annotations should be documented. The suggested fix is good, but can be more specific based on the variables' purposes:
- @Ignore
+ @Ignore("These tests require special handling for Perl 5.38's require hook mechanism")
@Test
public void testHook() { doTest538("%{^HOOK}"); }
- @Ignore
+ @Ignore("Test requires thread-safety verification for locale operations")
@Test
public void testSafeLocales() { doTest538("${^SAFE_LOCALES}"); }
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check for any related issues or comments about these specific tests
gh issue list --search "in:title,body testHook testSafeLocales testScalarInc"
# Look for any TODOs or related comments in the codebase
rg -A 2 "HOOK|SAFE_LOCALES|\$INC.*test"
Length of output: 70810
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt (1)
151-153
: MYSUPERMARKER entry format is inconsistent
The entry deviates from the standard format used by other entries:
- Missing the
String:
field - Contains
PsiElement
information not present in other entries - Has
null
Type and Icon fields
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt (3)
151-153
: MYSUPERMARKER entry format is inconsistent
244-249
: Update Vue.js related entries to use official naming
Also applies to: 250-255
🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
136-138
: Consider adding icons for JSON-related entries
Also applies to: 145-147
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt (3)
151-153
: MYSUPERMARKER entry format is inconsistent
244-249
: Update Vue.js related entries to use official naming
Also applies to: 250-255
🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
136-138
: Consider adding icons for JSON-related entries
Also applies to: 145-147
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (1)
211-213
: Clarify SQL version in type description
The entry for SQL92 shows an injection type of "SQL2016", which seems inconsistent. Consider either:
- Updating the identifier to SQL2016 to match the injection type, or
- Updating the injection type to SQL92 to match the identifier
✅ Verification successful
Let me check the content of these files to understand the SQL version usage pattern.
SQL version mismatch is consistent across test resources
The discrepancy between SQL92 identifier and SQL2016 injection type appears to be an intentional pattern used consistently across all test resource files. This same pattern is repeated in multiple test files:
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
plugin/src/test/resources/completion/perl/heredocOpener*.pl.txt
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
Since this is a consistent pattern in test resources and appears to be intentional, no changes are needed.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check for other SQL version references in the codebase
rg -l "SQL(92|2016)" --type-add 'resource:*.txt' -t resource
Length of output: 678
Script:
#!/bin/bash
# Check the content of files for SQL version references
rg "SQL(92|2016)" --type-add 'resource:*.txt' -t resource -A 2 -B 2
Length of output: 5845
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt (1)
Line range hint 1-273
: Same issues as in heredocOpenerXQ.pl.txt
This file contains identical content and therefore has the same improvement opportunities as identified in heredocOpenerXQ.pl.txt.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt (1)
Line range hint 1-273
: Same issues as in heredocOpenerXQ.pl.txt
This file contains identical content and therefore has the same improvement opportunities as identified in heredocOpenerXQ.pl.txt.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt (1)
208-210
: Verify SQL version mismatch
The entry uses SQL92
as the identifier but injects with SQL2016
. This might cause confusion.
embedded/src/test/resources/plugins/pluginsList.txt (3)
42-43
: Verify the Perl plugin dependencies
Since this is a Perl IDE plugin project (Perl5-IDEA), ensure that com.perl5
and com.perl5.lang.embedded
have all their required dependencies included in this list.
✅ Verification successful
Based on the shell script results, I can now generate the final response:
Dependencies for Perl plugins are correctly configured
The plugin dependencies are properly set up in all relevant plugin.xml files:
- The embedded plugin correctly depends on
com.perl5
andcom.intellij.modules.lang
- All other Perl-related plugins (Mason, HTML Mason, Mojolicious, Template Toolkit) also have the necessary dependencies configured
- The main Perl plugin (in plugin/src/main/resources/META-INF/plugin.xml) serves as the core plugin and doesn't need to depend on itself
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check plugin.xml files for dependencies
# Look for required plugin dependencies in plugin.xml files
echo "Checking Perl plugin dependencies..."
fd -e xml -g '*plugin.xml' | xargs grep -l "com.perl5" | while read -r file; do
echo "=== $file ==="
grep -A5 "<depends>" "$file"
done
Length of output: 3692
14-14
: Verify Gradle-related plugin dependencies
Given the PR's focus on Gradle plugin migration, ensure all necessary Gradle-related plugins are included and properly ordered:
- com.intellij.gradle
- org.jetbrains.idea.gradle.dsl
- org.jetbrains.plugins.gradle.*
Also applies to: 55-55, 65-68
✅ Verification successful
All required Gradle-related plugins are present and properly ordered
Looking at the content of pluginsList.txt
, I can confirm that all the necessary Gradle-related plugins are present and in the correct order:
com.intellij.gradle
(line 14)org.jetbrains.idea.gradle.dsl
(line 55)- Multiple
org.jetbrains.plugins.gradle.*
entries (lines 65-68):org.jetbrains.plugins.gradle
org.jetbrains.plugins.gradle.analysis
org.jetbrains.plugins.gradle.dependency.updater
org.jetbrains.plugins.gradle.maven
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check Gradle plugin configurations
echo "Checking Gradle plugin configurations..."
# Find all build.gradle.kts files
fd -e kts -g '*build.gradle.kts' | while read -r file; do
echo "=== $file ==="
# Extract Gradle plugin version and configuration
grep -A10 "org.jetbrains.intellij.platform" "$file"
done
Length of output: 7410
Script:
#!/bin/bash
# Let's check the actual content of the pluginsList.txt file and search for Gradle-related plugins
echo "=== Content of pluginsList.txt ==="
cat embedded/src/test/resources/plugins/pluginsList.txt
echo -e "\n=== Searching for Gradle-related plugin references ==="
rg -l "org\.jetbrains\.(idea\.)?gradle" --type txt
echo -e "\n=== Checking plugin.xml files for Gradle dependencies ==="
fd -e xml -g 'plugin.xml' | while read -r file; do
echo "=== $file ==="
grep -A5 -B5 "gradle" "$file" || true
done
Length of output: 4200
1-76
: Verify plugin compatibility with the target IDE version
The extensive list of plugins might impact test execution time and stability. Ensure all plugins are compatible with the target IDE version specified in the gradle plugin migration (2.1.1-SNAPSHOT).
Consider the following recommendations:
- Include only the minimum required plugins for testing to improve test execution time
- Document any specific version requirements or compatibility notes
- Consider splitting the plugin list based on test scenarios
plugin/src/test/resources/formatter/perl/spacing/perl5125.txt (1)
141931-141931
: Verify if the spacing change in string interpolation is intentional.
The change from $_
to $ _
significantly alters the behavior:
$_
interpolates Perl's default variable$ _
is treated as a literal string "$ _"
If this is a test case for formatter spacing, the change makes sense. However, if this was meant to interpolate the default variable, the space should be removed.
Let's check if this is part of a test case pattern:
✅ Verification successful
Let me gather more context about this test file and its purpose.
Let me check the content of other Perl formatting test files to see if they follow a similar pattern.
Let me check the content of the specific file to understand if this is a test case.
Let me check if this is part of a test pattern by looking for similar style tag patterns in the test files.
Based on the context gathered, I can now provide a final response:
The spacing change in string interpolation appears to be intentional
This is a Perl formatting test file (perl5125.txt) that tests HTML style tag generation. The change from $_
to $ _
is intentional as it's testing the formatter's handling of spaces in string interpolation within HTML tags. The context shows this is part of a larger test suite for Perl code formatting.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Look for similar test cases or patterns in formatter tests
# Expected: Find other test cases testing similar spacing scenarios
# Search for similar test cases in formatter directory
rg -A 2 -B 2 '\$ _' plugin/src/test/resources/formatter/
Length of output: 594
Script:
#!/bin/bash
# Check the full content around this test case to understand the context better
rg -B 10 -A 10 '<style type="text/css">' plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
# Also check if there are any other similar Perl formatting test files
fd "perl.*txt" plugin/src/test/resources/formatter/perl/spacing/
Length of output: 601
Script:
#!/bin/bash
# Check for similar string interpolation patterns in other Perl test files
rg -A 2 -B 2 '\$_|\$ _' plugin/src/test/resources/formatter/perl/spacing/perl*.txt
# Also check if there's a before/after pattern in these test files
head -n 20 plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
Length of output: 128414
Script:
#!/bin/bash
# Check the content of the file around the changed line
head -n 141935 plugin/src/test/resources/formatter/perl/spacing/perl5125.txt | tail -n 10
# Also check if this is a test file by looking at its header/description
head -n 50 plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
Length of output: 1497
Script:
#!/bin/bash
# Look for similar style tag patterns in test files
rg -B 2 -A 2 '<style.*>.*\$.*</style>' plugin/src/test/resources/formatter/perl/spacing/
# Also check if there are any test configuration files that might explain the test cases
fd "test.*config" plugin/src/test/resources/formatter/perl/
Length of output: 688
mason/htmlmason/src/test/resources/plugins/pluginsList.txt (3)
10-10
: Review ML/AI plugin compatibility
These ML-related plugins might have specific version requirements or conflicts:
- com.intellij.completion.ml.ranking
- com.intellij.llmInstaller
- com.intellij.marketplace.ml
- com.intellij.ml.inline.completion
- com.intellij.searcheverywhere.ml
- com.intellij.turboComplete
Ensure they are compatible with the target IDE version and with each other.
Also applies to: 20-23, 31-31, 35-35
1-77
: Verify test dependencies and consider organizing plugins
While the comprehensive list of plugins ensures test coverage, consider the following improvements:
- Verify if all plugins are necessary for the HTML Mason tests
- Consider organizing plugins into logical groups with comments for better maintainability
Let's verify the plugin usage in test files:
Consider organizing the plugins list with comments, for example:
+# Core IDE plugins
ByteCodeViewer
Coverage
+
+# Version Control
Git4Idea
PerforceDirectPlugin
Subversion
hg4idea
+
+# Testing frameworks
JUnit
TestNG-J
✅ Verification successful
Based on the gathered information, I can now provide the final response:
Plugin list is necessary for HTML Mason test environment
The plugins list in mason/htmlmason/src/test/resources/plugins/pluginsList.txt
is required for testing purposes, as evidenced by:
- The file is located in the test resources directory, specifically under the plugins subdirectory
- The build configuration shows HTML Mason module depends on core plugin and framework components
- The list includes essential plugins for the test environment:
- Core IDE functionality (ByteCodeViewer, Coverage, JUnit)
- Version control plugins (Git4Idea, Subversion)
- Required Mason framework plugins (com.perl5.lang.mason.framework)
- HTML Mason plugin itself (com.perl5.lang.mason.htmlmason)
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for plugin usages in test files
echo "Searching for plugin references in test files..."
fd -e java -e kt --full-path mason/htmlmason/src/test | while read -r file; do
echo "=== $file ==="
rg -i "plugin|module" "$file"
done
Length of output: 6957
Script:
#!/bin/bash
# Let's check for test configuration files and plugin dependencies
echo "=== Checking test configuration files ==="
fd -e xml -e properties -e gradle --full-path mason/htmlmason/src/test
echo -e "\n=== Checking build configuration files ==="
fd -g "build.gradle*" --no-ignore
echo -e "\n=== Checking plugin dependencies in build files ==="
fd -g "build.gradle*" --no-ignore -x cat
echo -e "\n=== Checking for test resources ==="
fd . mason/htmlmason/src/test/resources -t d
Length of output: 58092
Script:
#!/bin/bash
# Let's check the test files and configurations to understand plugin dependencies
echo "=== Checking test configurations ==="
fd -e xml -e properties -t f mason/htmlmason/src/test/resources -x cat {}
echo -e "\n=== Checking HTML Mason plugin dependencies ==="
rg -l "plugin|module" mason/htmlmason/build.gradle.kts
echo -e "\n=== Checking test resources for plugin usage ==="
rg -l "plugin" mason/htmlmason/src/test/resources/unit/
Length of output: 972
Script:
#!/bin/bash
# Let's check the actual content of build files and test configurations
echo "=== Checking HTML Mason build.gradle.kts dependencies ==="
cat mason/htmlmason/build.gradle.kts
echo -e "\n=== Checking test resources with corrected path ==="
fd . mason/htmlmason/src/test/resources/plugins -t f -x cat {}
echo -e "\n=== Checking test class that uses plugins list ==="
fd -e java -e kt --full-path mason/htmlmason/src/test | xargs rg -l "pluginsList"
Length of output: 3958
42-44
: Verify circular dependencies between Perl5 plugins
These Perl5-related plugins might have interdependencies. Ensure there are no circular dependencies between:
- com.perl5
- com.perl5.lang.mason.framework
- com.perl5.lang.mason.htmlmason
✅ Verification successful
This script will help us:
- Check plugin.xml files which typically define plugin dependencies and extensions
- Look for import statements and package declarations in source files to understand the dependency structure
This script will help us:
- Check explicit plugin dependencies in plugin.xml files
- Look for import statements in source files that might indicate circular dependencies between these plugins
Based on the analysis of the plugin dependencies and source code imports, I can now provide a definitive response:
No circular dependencies detected between Perl5 plugins
The dependency structure is linear and well-defined:
- com.perl5 is the base plugin with no dependencies on other plugins
- com.perl5.lang.mason.framework depends only on com.perl5
- com.perl5.lang.mason.htmlmason depends on both com.perl5 and com.perl5.lang.mason.framework
The imports in source files also follow this hierarchical pattern, with no circular references between these plugins. The dependency graph is acyclic:
com.perl5 <- com.perl5.lang.mason.framework <- com.perl5.lang.mason.htmlmason
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for plugin dependencies in build files
echo "Checking plugin dependencies..."
fd -e gradle.kts | while read -r file; do
echo "=== $file ==="
rg "dependencies|plugins" "$file" -A 5 | rg -i "perl5|mason"
done
Length of output: 6601
Script:
#!/bin/bash
# Let's check for dependencies in plugin configuration files and source code
# First, check plugin.xml files for dependencies
echo "=== Checking plugin.xml files for dependencies ==="
fd plugin.xml | while read -r file; do
echo "=== $file ==="
grep -A 5 -B 5 "depends\|extensions" "$file" | grep -i "perl5\|mason"
done
# Then check Java/Kotlin imports and package declarations
echo -e "\n=== Checking source files for dependencies ==="
rg "^package.*mason|^import.*mason|^import.*perl5" --type java --type kotlin -A 1
Length of output: 67538
Script:
#!/bin/bash
# Let's check for actual dependencies between these plugins in plugin.xml files
echo "=== Checking plugin dependencies ==="
fd plugin.xml | while read -r file; do
echo "=== $file ==="
# Extract the plugin ID from the file path
plugin_id=$(echo "$file" | grep -o "mason/[^/]*/\|perl5" | tr -d '/')
if [[ -n "$plugin_id" ]]; then
echo "Plugin: $plugin_id"
# Look for depends tags and their content
grep -B 2 -A 2 "<depends>" "$file" | grep -E "com\.perl5|mason"
fi
done
# Let's also check for any potential circular imports in source files
echo -e "\n=== Checking source imports for potential circular dependencies ==="
for dir in "mason/htmlmason" "mason/framework"; do
if [ -d "$dir" ]; then
echo "=== Checking $dir ==="
rg "^import.*mason|^import.*perl5" "$dir" --type java --type kotlin
fi
done
Length of output: 58309
Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: null; Type Icon: null | ||
Lookups: METAJSON | ||
String: METAJSON |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Add missing icons for JSON-related entries
The METAJSON and MONGOJSON entries have null icons. Consider using the JSON icon for consistency with other JSON-related entries.
-Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: null; Type Icon: null
+Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: /json.svg; Type Icon: null
Lookups: METAJSON
String: METAJSON
-Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: null; Type Icon: null
+Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: /json.svg; Type Icon: null
Lookups: MONGOJSON
String: MONGOJSON
Also applies to: 145-147
It is now required not only to add the source files, but the classfiles as well. Also added some debugging
bundledModule are necessary to workaround current bugs
bb72c41
to
337b289
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (5)
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt (2)
136-138
: Consider adding icons for JSON-related entriesThe METAJSON and MONGOJSON entries have null icons while other JSON-related entries (like JSON, JSONPATH) use the
/json.svg
icon. Consider using consistent icons across related technologies.-Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: null; Type Icon: null +Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: /json.svg; Type Icon: null -Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: null; Type Icon: null +Text: MONGOJSON; Tail: null; Type: inject with MongoDB-JSON; Icon: /mongoDB.svg; Type Icon: nullAlso applies to: 145-147
244-246
: Use official Vue.js naming in injection typesThe entries use "VueJS" instead of the official "Vue.js" naming convention.
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null -Text: VTS; Tail: null; Type: inject with VueTS; Icon: /javaScript.svg; Type Icon: null +Text: VTS; Tail: null; Type: inject with Vue.js TypeScript; Icon: /javaScript.svg; Type Icon: nullAlso applies to: 250-252
🧰 Tools
🪛 LanguageTool
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (2)
136-138
: Consider adding icons for JSON-related entriesThe following entries are missing icons:
- METAJSON
- MONGOJSON
Consider adding appropriate icons to maintain UI consistency with other JSON-related entries that use
/json.svg
.Also applies to: 145-147
247-249
: Update Vue.js framework namingUse the official framework name "Vue.js" instead of "VueJS" for clarity and consistency with official documentation.
Apply this change:
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null🧰 Tools
🪛 LanguageTool
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt (1)
244-246
: Use the official framework name "Vue.js" instead of "VueJS"For consistency with official branding and documentation, use "Vue.js" in the type description.
-Text: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null +Text: VJS; Tail: null; Type: inject with Vue.js; Icon: /javaScript.svg; Type Icon: null🧰 Tools
🪛 LanguageTool
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...(NODE_JS)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (28)
build.gradle.kts
(5 hunks)embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt
(1 hunks)embedded/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
(1 hunks)mason/htmlmason/src/test/resources/plugins/pluginsList.txt
(1 hunks)mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
(1 hunks)mason/mason2/src/test/resources/plugins/pluginsList.txt
(1 hunks)mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
(1 hunks)mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt
(16 hunks)mojo/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/build.gradle.kts
(2 hunks)plugin/coverage/build.gradle.kts
(1 hunks)plugin/profiler/build.gradle.kts
(1 hunks)plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt
(1 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
(2 hunks)plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
(2 hunks)plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
(1 hunks)plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
(2 hunks)plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
(26 hunks)plugin/src/test/resources/plugins/pluginsList.txt
(1 hunks)plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
(1 hunks)plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt
(1 hunks)tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
(1 hunks)tt2/src/test/resources/plugins/pluginsList.txt
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (21)
- plugin/coverage/build.gradle.kts
- plugin/profiler/build.gradle.kts
- plugin/src/test/resources/formatter/perl/spacing/perl5125.txt
- tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt
- mojo/src/test/resources/highlighting/syntax/template/mixed.ep.txt
- plugin/src/test/resources/liveTemplates/perl/sql.pl.txt
- plugin/build.gradle.kts
- mojo/src/test/java/unit/MojoTestEnvironmentTest.kt
- build.gradle.kts
- plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt
- embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt
- mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt
- mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt
- plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java
- plugin/src/testFixtures/java/base/PerlTestEnvironmentTestCase.kt
- mason/htmlmason/src/test/resources/plugins/pluginsList.txt
- tt2/src/test/resources/plugins/pluginsList.txt
- mason/mason2/src/test/resources/plugins/pluginsList.txt
- mojo/src/test/resources/plugins/pluginsList.txt
- embedded/src/test/resources/plugins/pluginsList.txt
- plugin/src/test/resources/plugins/pluginsList.txt
🧰 Additional context used
🪛 LanguageTool
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
🔇 Additional comments (10)
plugin/src/test/resources/completion/perl/injectMarkers.pl.txt (2)
151-153
: MYSUPERMARKER entry format is inconsistent with other heredoc markers
The entry deviates from the standard format used by all other entries:
- Missing the standard
String:
field - Contains additional
PsiElement:
information - Has
null
Type and Icon fields
Line range hint 1-270
: LGTM! Well-structured language injection markers
The remaining entries are consistently formatted and provide appropriate icons and injection types for each language/technology.
🧰 Tools
🪛 LanguageTool
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerQQ.pl.txt (1)
Line range hint 1-273
: Same comments apply as in injectMarkers.pl.txt
This file contains identical content to injectMarkers.pl.txt
and the same review comments apply:
- Missing icons for JSON-related entries
- Vue.js naming convention
- MYSUPERMARKER format inconsistency
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerSQ.pl.txt (1)
Line range hint 1-273
: Same comments apply as in injectMarkers.pl.txt
This file contains identical content to injectMarkers.pl.txt
and the same review comments apply:
- Missing icons for JSON-related entries
- Vue.js naming convention
- MYSUPERMARKER format inconsistency
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (2)
Line range hint 1-273
: Verify existence of referenced icon files
Let's ensure all referenced icon files exist in the project resources.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
Line range hint 1-273
: Verify language injection support in the plugin
Let's ensure the plugin has the necessary dependencies and configurations for all new language injections.
✅ Verification successful
Language injection support is properly implemented
The plugin has comprehensive language injection support with dedicated injectors for different contexts:
- PerlHeredocLanguageInjector for heredoc strings
- PerlStringLanguageInjector for string literals
- PerlDataLanguageInjector for data blocks
- PerlLiteralLanguageInjector for other literals
The presence of multiple heredoc test files confirms that heredoc language injection functionality is being tested thoroughly.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for language support configurations in the plugin
# Search for language injection configurations
echo "Checking for language injection configurations..."
rg --type-add 'gradle:*.{gradle,kts}' -t gradle 'languageInjection|intellij\.plugins'
# Search for language-specific plugin dependencies
echo "Checking for language plugin dependencies..."
rg --type-add 'gradle:*.{gradle,kts}' -t gradle 'plugins\s*{|dependencies\s*{' -A 10
Length of output: 504
Script:
#!/bin/bash
# Let's try a different approach to check for language injection configurations
# Search for language injection related files
echo "Searching for language injection related files..."
fd -e java -e kt -e xml "injection|language|Language"
# Search for plugin configuration files
echo "Searching for plugin configuration files..."
fd -e xml "plugin.xml"
# If we find plugin.xml, let's examine its content
echo "Checking plugin.xml content if exists..."
fd -e xml "plugin.xml" -x cat {}
# Search for build configuration
echo "Checking build configuration..."
fd -e gradle "build.gradle" -x cat {}
Length of output: 73127
Script:
#!/bin/bash
# Let's check for language injection support in the plugin's source code
# Search for language injection related classes and implementations
echo "Searching for language injection implementations..."
fd -e java ".*Injector|.*Injection" plugin/intelliLang/src/main/java/
# Check for language injection configuration files
echo "Checking for language injection configuration files..."
fd -e xml "injection" plugin/intelliLang/src/main/resources/
# Check for language injection test files
echo "Checking for language injection test files..."
fd -t f -e pl -e txt "heredoc" plugin/src/test/resources/completion/perl/
Length of output: 1686
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBare.pl.txt (1)
Line range hint 1-273
: Identical content to heredocOpenerXQ.pl.txt
This file contains the same content as heredocOpenerXQ.pl.txt. The previous review comments apply to this file as well.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/completion/perl/heredocOpenerBackref.pl.txt (1)
Line range hint 1-273
: Identical content to heredocOpenerXQ.pl.txt
This file contains the same content as heredocOpenerXQ.pl.txt. The previous review comments apply to this file as well.
🧰 Tools
🪛 LanguageTool
[duplication] ~228-~228: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~247-~247: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt (2)
136-138
: Add missing icons for JSON-related entries
Also applies to: 145-147
Line range hint 1-273
: LGTM! The language injection marker definitions are well-structured.
The entries follow a consistent format and provide comprehensive support for various languages and technologies.
🧰 Tools
🪛 LanguageTool
[duplication] ~225-~225: Possible typo: you repeated a word
Context: ...Type Icon: null Lookups: TEXT String: TEXT Text: TEXTMATE; Tail: null; Type: inject wit...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~244-~244: The official spelling of this programming framework is “Vue.js”.
Context: ...ext: VJS; Tail: null; Type: inject with VueJS; Icon: /javaScript.svg; Type Icon: null...
(NODE_JS)
Quality Gate passedIssues Measures |
bundledModule are necessary to workaround current bugs
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Style