unit-mesh / auto-dev

🧙‍AutoDev: The AI-powered coding wizard(AI 驱动编程助手) with multilingual support 🌐, auto code generation 🏗️, and a helpful bug-slaying assistant 🐞! Customizable prompts 🎨 and a magic Auto Dev/Testing/Document/Agent feature 🧪 included! 🚀
https://ide.unitmesh.cc/
Mozilla Public License 2.0
2.76k stars 317 forks source link

测试此代码功能报错 #199

Closed OnlywaitY closed 4 months ago

OnlywaitY commented 4 months ago

Describe the bug 作者你好,我在使用右键-测试此代码时,IDEA报错:

2024-06-05 11:28:29,124 [ 383462]   INFO - #cc.unitmesh.devti.custom.action.CustomPromptConfig - Loaded prompt config: CustomPromptConfig(spec={controller=, service=, entity=, repository=}, prompts=[], documentations=null)
2024-06-05 11:28:31,231 [ 385569] SEVERE - #c.i.o.p.Task - Class com.jetbrains.python.psi.PyClass must not be requested from main classloader of Pythonid plugin. Matches content module (packagePrefix=com.jetbrains.python., moduleName=intellij.python.community.impl). [Plugin: cc.unitmesh.devti]
com.intellij.diagnostic.PluginException: Class com.jetbrains.python.psi.PyClass must not be requested from main classloader of Pythonid plugin. Matches content module (packagePrefix=com.jetbrains.python., moduleName=intellij.python.community.impl). [Plugin: cc.unitmesh.devti]
    at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.kt:203)
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:151)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at cc.unitmesh.python.context.PythonClassContextBuilder.getClassContext(PythonClassContextBuilder.kt:13)
    at cc.unitmesh.devti.context.ClassContextProvider.from(ClassContextProvider.kt:21)
    at cc.unitmesh.idea.service.JavaAutoTestService.lookupRelevantClass$lambda$8(JavaAutoTestService.kt:189)
    at com.intellij.openapi.application.impl.RwLockHolder.runReadAction(RwLockHolder.kt:289)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:850)
    at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:65)
    at cc.unitmesh.idea.service.JavaAutoTestService.lookupRelevantClass(JavaAutoTestService.kt:144)
    at cc.unitmesh.idea.service.JavaAutoTestService.findOrCreateTestFile(JavaAutoTestService.kt:58)
    at cc.unitmesh.devti.intentions.action.task.TestCodeGenTask.run(TestCodeGenTask.kt:57)
    at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:477)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:133)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:528)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:250)
    at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:100)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
    at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:46)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
    at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:100)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$5(ProgressRunner.java:250)
    at com.intellij.openapi.progress.impl.ProgressRunner$ProgressRunnable.run(ProgressRunner.java:500)
    at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
    at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
    at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:86)
    at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:81)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$launchTask$18(ProgressRunner.java:466)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:840)

python插件已经更新到最新 Desktop (please complete the following information):

phodal commented 4 months ago

理论上,错误要求三方插件不能调用 PyClass 做依赖分析:

2024-06-05 11:28:31,231 [ 385569] SEVERE - #c.i.o.p.Task - Class com.jetbrains.python.psi. c must not be requested from main classloader of Pythonid plugin. Matches content module (packagePrefix=com.jetbrains.python., moduleName=intellij.python.community.impl). [Plugin: cc.unitmesh.devti]

这个其实是 IDEA 的 bug,暂时找不到好的修复方式,建议如果项目没有用到 Python 可以暂时禁用 Python 插件。

phodal commented 4 months ago

详细见:

https://youtrack.jetbrains.com/issue/PY-71481/Python-Community-plugin-doesnt-work-in-Rider-GoLand-and-DataGrip

https://youtrack.jetbrains.com/issue/PY-70729/Class-com.jetbrains.python.psi.PyElementType-must-not-be-requested-from-main-classloader-of-Pythonid-plugin

OnlywaitY commented 4 months ago

解决了,非常感谢

phodal commented 4 months ago

这个 bug 里加了个 try-catch,必要时也可以用这个版本:https://github.com/unit-mesh/auto-dev/actions/runs/9378064502 。但是,官方这个 bug 限制了在 IDEA 调用 PyClass的 AST 分析,所以也等于没用