Skip to content
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

Merged
merged 3 commits into from
Dec 6, 2024
Merged

Conversation

hurricup
Copy link
Collaborator

@hurricup hurricup commented Oct 24, 2024

bundledModule are necessary to workaround current bugs

Summary by CodeRabbit

  • New Features

    • Enhanced testing capabilities with the addition of coverage and profiler modules.
    • Updated plugin archive naming for better clarity.
    • New tasks introduced for plugin configuration verification.
    • Comprehensive list of new plugins added, expanding available functionalities across various categories.
    • Improved syntax highlighting to support XML tags alongside existing formats.
    • New Kotlin test classes added for various environments, enhancing test coverage.
    • New entries added for a wide range of programming languages and technologies, improving code completion and injection support.
  • Bug Fixes

    • Improved dependency management for testing tasks.
  • Documentation

    • Updated configuration to reflect new bundled modules in the IntelliJ platform setup.
  • Style

    • Updated plugin path patterns in the test case to reflect new directory structure.
    • Adjusted caret positioning in SQL string declarations for better formatting.

Copy link

coderabbitai bot commented Oct 24, 2024

Walkthrough

The changes in this pull request involve updates to various build.gradle.kts files across the project. The version of the org.jetbrains.intellij.platform plugin is updated from 2.0.1 to 2.2.0. New tasks are introduced, including prepareJarSearchableOptions and verifyPluginProjectConfiguration, both set to disabled. The test task is modified to include ignoreFailures = false. Additionally, the plugin/build.gradle.kts file now specifies dependencies for testing, including intellij.platform.coverage.agent and intellij.profiler.common. Numerous new test classes are introduced, and various plugins are added to multiple pluginsList.txt files.

Changes

File Change Summary
build.gradle.kts Updated plugin version from 2.0.1 to 2.2.0. Added new tasks prepareJarSearchableOptions (disabled) and verifyPluginProjectConfiguration (disabled). Updated test task to include ignoreFailures = false.
plugin/build.gradle.kts Introduced test task with dependencies for intellij.platform.coverage.agent and intellij.profiler.common. Updated buildPlugin task's archiveBaseName to "lang.perl5".
plugin/coverage/build.gradle.kts Added bundled module intellij.platform.coverage.agent to the intellijPlatform configuration.
plugin/profiler/build.gradle.kts Added bundled module intellij.profiler.common to the dependencies block.
plugin/src/testFixtures/java/base/PerlInstrumentationTestCase.java Updated path patterns in constants for plugin paths reflecting new directory structure.
embedded/src/test/java/unit/EmbeddedPerlTestEnvironmentTest.kt Added new test class EmbeddedPerlTestEnvironmentTest extending PerlTestEnvironmentTestCase.
mason/htmlmason/src/test/java/unit/HtmlMasonTestEnvironmentTest.kt Added new test class HtmlMasonTestEnvironmentTest extending PerlTestEnvironmentTestCase.
mason/mason2/src/test/java/unit/Mason2TestEnvironmentTest.kt Added new test class Mason2TestEnvironmentTest extending PerlTestEnvironmentTestCase.
mojo/src/test/java/unit/MojoTestEnvironmentTest.kt Added new test class MojoTestEnvironmentTest extending PerlTestEnvironmentTestCase.
plugin/src/test/java/unit/PerlPluginTestEnvironmentTest.kt Added new test class PerlPluginTestEnvironmentTest extending PerlTestEnvironmentTestCase.
tt2/src/test/java/unit/TemplateToolkitTestEnvironmentTest.kt Added new test class TemplateToolkitTestEnvironmentTest extending PerlTestEnvironmentTestCase.
embedded/src/test/resources/plugins/pluginsList.txt Added multiple new plugin entries to the list.
plugin/src/test/resources/plugins/pluginsList.txt Added multiple new plugin entries to the list.
mason/htmlmason/src/test/resources/plugins/pluginsList.txt Added multiple new plugin entries to the list.
mason/mason2/src/test/resources/plugins/pluginsList.txt Added multiple new plugin entries to the list.
mojo/src/test/resources/plugins/pluginsList.txt Added multiple new plugin entries to the list.
plugin/src/test/resources/completion/perl/heredocOpener*.pl.txt Added multiple entries for various programming languages and technologies with injection metadata.
plugin/src/test/resources/intellilang/perl/injeciton_markers/markerCompletion.pl.txt Added multiple entries for various programming languages and technologies with injection metadata.
plugin/src/test/resources/liveTemplates/perl/sql.pl.txt Adjusted caret position in SQL string declarations for formatting.

Possibly related PRs

  • #2934 Implemented tests for the classpath in tests #2935: The changes in this PR involve modifications to the embedded/build.gradle.kts file, which is related to the overall build configuration and dependency management, similar to the updates made in the build.gradle.kts file in the main PR. Both PRs involve changes to Gradle build scripts, specifically focusing on plugin configurations and task management.

Poem

In the garden of code, we hop and play,
With plugins updated, we brighten the day.
Coverage and profiling, all bundled with care,
A leap for our project, with joy in the air!
So let’s build and test, let our features unfold,
In the world of IntelliJ, our stories are told! 🐇✨


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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@hurricup hurricup enabled auto-merge (rebase) October 24, 2024 05:19
@hurricup hurricup disabled auto-merge October 24, 2024 07:52
Copy link

Qodana for JVM

It 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
☁️ View the detailed Qodana report

Detected 11 dependencies

Third-party software list

This page lists the third-party software dependencies used in perl5

Dependency Version Licenses
ant-launcher 1.10.13 Apache-2.0
W3C-19980720
ant 1.10.13 Apache-2.0
W3C-19980720
com.jetbrains.performanceplugin ic-242.20224.300 Apache-2.0
com.jetbrains.performanceplugin iu-242.20224.300 Apache-2.0
docker iu-242.20224.300 Apache-2.0
jflex 1.9.2 BSD-3-Clause
jsr305 3.0.2 Apache-2.0
tanvd.grazi ic-242.20224.300 Apache-2.0
LGPL-2.0-or-later
LGPL-2.1-only
MIT
tanvd.grazi iu-242.20224.300 Apache-2.0
LGPL-2.0-or-later
LGPL-2.1-only
MIT
testng-j ic-242.20224.300 MIT
testng-j iu-242.20224.300 MIT
Contact Qodana team

Contact us at [email protected]

@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch 2 times, most recently from aeccec8 to 3dd2ca3 Compare October 29, 2024 09:48
Copy link

github-actions bot commented Oct 30, 2024

Qodana for JVM

1398 new problems were found

Inspection name Severity Problems
Usage of API marked for removal 🔴 Failure 4
Unused declaration 🔶 Warning 1128
Method always returns the same value 🔶 Warning 163
Declaration can have 'final' modifier 🔶 Warning 35
Null-check method is called with obviously non-null argument 🔶 Warning 13
Raw use of parameterized class 🔶 Warning 13
Empty method 🔶 Warning 9
Deprecated API usage 🔶 Warning 7
Redundant 'throws' clause 🔶 Warning 6
Redundant semicolon 🔶 Warning 4
Hardcoded strings 🔶 Warning 2
A service can be converted to a light one 🔶 Warning 2
Redundant qualifier name 🔶 Warning 2
Unnecessary boxing 🔶 Warning 2
Unused import directive 🔶 Warning 1
@NotNull/@Nullable problems 🔶 Warning 1
Method can be made 'void' 🔶 Warning 1
Unused symbol 🔶 Warning 1
Class member can have 'private' visibility ◽️ Notice 3
Non-canonical modifier order ◽️ Notice 1

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Detected 11 dependencies

Third-party software list

This page lists the third-party software dependencies used in perl5

Dependency Version Licenses
ant-launcher 1.10.13 Apache-2.0
W3C-19980720
ant 1.10.13 Apache-2.0
W3C-19980720
com.jetbrains.performanceplugin ic-243.21565.193 Apache-2.0
com.jetbrains.performanceplugin iu-243.21565.193 Apache-2.0
docker iu-243.21565.193 Apache-2.0
jflex 1.9.2 BSD-3-Clause
jsr305 3.0.2 Apache-2.0
tanvd.grazi ic-243.21565.193 Apache-2.0
LGPL-2.0-or-later
LGPL-2.1-only
MIT
tanvd.grazi iu-243.21565.193 Apache-2.0
LGPL-2.0-or-later
LGPL-2.1-only
MIT
testng-j ic-243.21565.193 MIT
testng-j iu-243.21565.193 MIT
Contact Qodana team

Contact us at [email protected]

@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch 2 times, most recently from c92a71a to 72fe254 Compare November 6, 2024 12:05
Copy link

@coderabbitai coderabbitai bot left a 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

📥 Commits

Reviewing files that changed from the base of the PR and between c92a71a and 72fe254.

📒 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";
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix pattern string inconsistencies.

There are a couple of inconsistencies in the pattern strings:

  1. EMBEDDED_PATTERN_STRING is missing the trailing ! that's present in all other patterns
  2. MASON_FRAMEWORK_PATTERN_STRING uses unescaped dots in lang.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

@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch from 72fe254 to d0a9ea5 Compare November 6, 2024 12:14
@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch 3 times, most recently from f9bdb10 to 46e6d49 Compare December 5, 2024 07:09
Copy link

@coderabbitai coderabbitai bot left a 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 configurable

The 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 comparison

The 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:

  1. Documenting minimum resource requirements
  2. Implementing resource monitoring in CI/CD pipelines
  3. 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:

  1. Reads from a common plugin list
  2. Adds module-specific plugins
  3. 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 entries

The 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 naming

The 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 paths

The 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
  done

Length 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

📥 Commits

Reviewing files that changed from the base of the PR and between f9bdb10 and 46e6d49.

📒 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:

  1. The icons are likely provided by the IntelliJ Platform itself rather than being bundled with the plugin
  2. The paths are relative to the platform's icon resources, not the plugin's resources
  3. 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:

  1. Missing icons for JSON-related entries
  2. Vue.js naming convention
  3. SQL version identifier mismatch
  4. 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)

Comment on lines +1 to +76
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
Copy link

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 modules
  • com.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

Comment on lines 151 to 153
Text: MYSUPERMARKER; Tail: null; Type: null; Icon: null; Type Icon: null
Lookups: MYSUPERMARKER
PsiElement: PsiPerlHeredocOpenerImpl(Perl5: HEREDOC_OPENER) at 0 in heredocOpenerQQ.pl
Copy link

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

@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch from 46e6d49 to bb72c41 Compare December 6, 2024 06:27
Copy link

@coderabbitai coderabbitai bot left a 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 documentation

The 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 methods

The test class now has two similar methods (doTest and doTest538) 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 naming

The 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: VTS

Also 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 entries

The 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: MONGOJSON

Also applies to: 145-147

plugin/src/test/resources/completion/perl/heredocOpenerXQ.pl.txt (3)

136-138: Add missing icons for JSON-related entries

The 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 naming

The 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 management

Multiple database entries (MySQL, PostgreSQL, Oracle, etc.) use the generic /sql.svg icon. Consider:

  1. Creating specific icons for major databases to improve visual distinction
  2. 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 references

Some 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: JSP

Also applies to: 115-117


244-246: Update VueJS to Vue.js for consistency with official branding

The 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 maintainability

The 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

📥 Commits

Reviewing files that changed from the base of the PR and between 46e6d49 and bb72c41.

📒 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 for require 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:

  1. Updating the identifier to SQL2016 to match the injection type, or
  2. 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 and com.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:

  1. Include only the minimum required plugins for testing to improve test execution time
  2. Document any specific version requirements or compatibility notes
  3. 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:

  1. Verify if all plugins are necessary for the HTML Mason tests
  2. 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:

  1. The file is located in the test resources directory, specifically under the plugins subdirectory
  2. The build configuration shows HTML Mason module depends on core plugin and framework components
  3. 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:

  1. Check plugin.xml files which typically define plugin dependencies and extensions
  2. Look for import statements and package declarations in source files to understand the dependency structure

This script will help us:

  1. Check explicit plugin dependencies in plugin.xml files
  2. 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

Comment on lines +136 to +138
Text: METAJSON; Tail: null; Type: inject with Metadata JSON; Icon: null; Type Icon: null
Lookups: METAJSON
String: METAJSON
Copy link

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
@hurricup hurricup force-pushed the hurricup/gradle-plugin-2.1.0 branch from bb72c41 to 337b289 Compare December 6, 2024 10:24
Copy link

@coderabbitai coderabbitai bot left a 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 entries

The 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: null

Also applies to: 145-147


244-246: Use official Vue.js naming in injection types

The 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: null

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 (2)

136-138: Consider adding icons for JSON-related entries

The 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 naming

Use 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

📥 Commits

Reviewing files that changed from the base of the PR and between bb72c41 and 337b289.

📒 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:

  1. Missing icons for JSON-related entries
  2. Vue.js naming convention
  3. 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:

  1. Missing icons for JSON-related entries
  2. Vue.js naming convention
  3. 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)

@hurricup hurricup changed the title Migrated to the gradle plugin 2.1.1-SNAPSHOT Migrated to the gradle plugin 2.2.0 Dec 6, 2024
@hurricup hurricup enabled auto-merge (rebase) December 6, 2024 13:51
@hurricup hurricup merged commit c97fc78 into master Dec 6, 2024
42 checks passed
@hurricup hurricup deleted the hurricup/gradle-plugin-2.1.0 branch December 6, 2024 16:13
Copy link

sonarqubecloud bot commented Dec 6, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant