Skip to content

Commit 16f8bdc

Browse files
committed
feat(dependencies): add project dependencies model and inspections #316
Introduce `AutoDevProjectDependenciesModel` to handle project dependencies and integrate `VulnerableLibrariesLocalInspection` for dependency checks. Additionally, update the XML configuration to include the new model.
1 parent 6c4a462 commit 16f8bdc

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

exts/ext-dependencies/src/233/main/kotlin/cc/unitmesh/dependencies/AutoDevDependenciesCheck.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ package cc.unitmesh.dependencies
33
import cc.unitmesh.devti.AutoDevNotifications
44
import cc.unitmesh.devti.provider.BuildSystemProvider
55
import cc.unitmesh.devti.sketch.lint.SketchCodeInspection
6+
import com.intellij.codeInspection.InspectionManager
7+
import com.intellij.javascript.nodejs.packageJson.NodeInstalledPackageFinder
68
import com.intellij.lang.annotation.HighlightSeverity
79
import com.intellij.openapi.actionSystem.ActionUpdateThread
810
import com.intellij.openapi.actionSystem.AnAction
911
import com.intellij.openapi.actionSystem.AnActionEvent
1012
import com.intellij.openapi.actionSystem.PlatformDataKeys
1113
import com.intellij.openapi.fileEditor.FileDocumentManager
1214
import com.intellij.packageChecker.api.BuildFileProvider
15+
import com.intellij.packageChecker.inspection.VulnerableLibrariesLocalInspection
16+
import com.intellij.packageChecker.model.impl.ProjectDependenciesModelImpl
1317
import com.intellij.psi.PsiManager
1418
import org.jetbrains.security.`package`.Package
1519
import org.jetbrains.security.`package`.PackageType
@@ -47,6 +51,12 @@ class AutoDevDependenciesCheck : AnAction("Check dependencies has Issues") {
4751
Package(PackageType.fromString(it.type), it.namespace, it.name, it.version, it.qualifiers, it.subpath)
4852
}
4953

54+
val depModel = ProjectDependenciesModelImpl.getInstance(project)
55+
val declaredDependencies = depModel.declaredDependencies(psiFile)
56+
depModel.refresh(project)
57+
58+
val mgr = InspectionManager.getInstance(project)
59+
val checkFile = VulnerableLibrariesLocalInspection().checkFile(psiFile, mgr, true)
5060
val runInspections = SketchCodeInspection.runInspections(
5161
project,
5262
psiFile,
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cc.unitmesh.dependencies
2+
3+
import cc.unitmesh.devti.provider.BuildSystemProvider
4+
import cc.unitmesh.devti.util.AutoDevCoroutineScope
5+
import com.intellij.openapi.module.Module
6+
import com.intellij.openapi.project.Project
7+
import com.intellij.packageChecker.api.PackageDeclaration
8+
import com.intellij.packageChecker.model.Dependency
9+
import com.intellij.packageChecker.model.LibraryDependency
10+
import com.intellij.packageChecker.model.impl.MutableModuleModel
11+
import com.intellij.packageChecker.model.impl.ProjectDependenciesModelBase
12+
import com.intellij.psi.PsiFile
13+
import org.jetbrains.security.`package`.Package
14+
import org.jetbrains.security.`package`.PackageType
15+
16+
class AutoDevProjectDependenciesModel(val project: Project) : ProjectDependenciesModelBase<MutableModuleModel>(
17+
AutoDevCoroutineScope.scope(project).coroutineContext
18+
) {
19+
override fun copyModule(
20+
module: MutableModuleModel,
21+
newDependencies: Iterable<Dependency>
22+
): MutableModuleModel = module.withDependencies(newDependencies)
23+
24+
override fun getAllModules(): Iterable<MutableModuleModel> = listOf()
25+
26+
override fun declaredDependencies(module: Module): List<PackageDeclaration> = listOf()
27+
28+
override fun declaredDependencies(psiFile: PsiFile): List<PackageDeclaration> {
29+
return BuildSystemProvider.EP_NAME.extensionList.map {
30+
it.collectDependencies(project, psiFile)
31+
}.flatten().map {
32+
val pkg =
33+
Package(PackageType.fromString(it.type), it.namespace, it.name, it.version, it.qualifiers, it.subpath)
34+
PackageDeclaration(pkg)
35+
}
36+
}
37+
38+
override fun libraryDependencies(module: Module): List<LibraryDependency> = listOf()
39+
40+
override fun supports(module: Module): Boolean = true
41+
42+
override fun supports(project: Project): Boolean = true
43+
44+
override fun supports(psiFile: PsiFile): Boolean = true
45+
46+
}

exts/ext-dependencies/src/233/main/resources/cc.unitmesh.dependencies.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
</action>
1414
</actions>
1515

16+
<!-- <extensions defaultExtensionNs="com.intellij.packageChecker">-->
17+
<!-- <dependencyModel implementation="cc.unitmesh.dependencies.AutoDevProjectDependenciesModel"/>-->
18+
<!-- </extensions>-->
19+
1620
<extensions defaultExtensionNs="cc.unitmesh">
1721
<toolchainFunctionProvider implementation="cc.unitmesh.dependencies.DependenciesFunctionProvider"/>
1822
</extensions>

0 commit comments

Comments
 (0)