Skip to content
This repository was archived by the owner on Nov 6, 2024. It is now read-only.

Commit fc611d3

Browse files
authored
Merge pull request #127 from bridgecrewio/BCE-38714-Analytics-and-version-fixes
BCE-38714 - Analytics and version fixes
2 parents ae5aac4 + a445072 commit fc611d3

24 files changed

+368
-355
lines changed

build.gradle.kts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ fun properties(key: String): String = project.findProperty(key).toString()
1212
plugins {
1313
id("java") // Java support
1414
alias(libs.plugins.kotlin) // Kotlin support
15-
// alias(libs.plugins.kotlinSerialization) // Kotlin serialization support
1615
alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin
1716
alias(libs.plugins.changelog) // Gradle Changelog Plugin
1817
alias(libs.plugins.qodana) // Gradle Qodana Plugin
@@ -35,22 +34,19 @@ repositories {
3534
}
3635

3736
dependencies {
38-
implementation("com.beust:klaxon:5.6")
39-
implementation("com.google.code.gson:gson:2.10.1")
40-
implementation("org.json:json:20231013")
41-
implementation("commons-io:commons-io:2.11.0")
42-
implementation("io.github.java-diff-utils:java-diff-utils:4.12")
43-
implementation("org.slf4j:slf4j-api:2.0.16")
44-
implementation("ch.qos.logback:logback-classic:1.5.6")
45-
implementation(libs.springWeb)
46-
// implementation(libs.kotlinxSerializationJson)
4737
implementation(libs.jackson)
38+
implementation(libs.springWeb)
39+
implementation("org.json:json:20231013") // TODO: Remove when possible
40+
implementation(libs.commons)
41+
implementation(libs.slf4j)
42+
implementation(libs.logback)
43+
implementation(libs.diffUtils)
4844
compileOnly(libs.lombok)
4945
annotationProcessor(libs.lombok)
5046
testImplementation(libs.junit)
5147
testImplementation(libs.jupiterApi)
52-
testRuntimeOnly("org.junit.jupiter:junit-jupiter:5.8.1")
53-
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.9.0")
48+
testRuntimeOnly(libs.jupiter)
49+
testRuntimeOnly(libs.junitPlatform)
5450

5551
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
5652
intellijPlatform {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
33

44
pluginGroup = com.github.bridgecrewio.prismajetbrainsidea
5-
pluginName = prismacloud-jetbrains-idea
5+
pluginName = Prisma Cloud
66
pluginVersion=1.0.22
77
# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
88
# See https://jb.gg/intellij-platform-builds-list for available build versions

gradle/libs.versions.toml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
[versions]
22

33
# libraries
4+
jackson = "2.17.2"
45
lombok = "1.18.34"
5-
junit = "4.13.2"
6-
jupiterApi = "5.8.1"
76
springWeb = "6.1.12"
8-
jackson = "2.17.2"
9-
# kotlinxSerializationJson = "1.7.2"
7+
commons-io = "2.16.1"
8+
slf4j = "2.0.16"
9+
logback = "1.5.6"
10+
diffUtils = "4.12"
11+
junit = "4.13.2"
12+
jupiter = "5.8.1"
13+
junitPlatform = "1.9.0"
1014

1115
# plugins
1216
changelog = "2.2.1"
@@ -17,16 +21,20 @@ qodana = "0.1.13"
1721

1822
[libraries]
1923
jackson = { group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version.ref = "jackson"}
20-
# kotlinxSerializationJson = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson"}
2124
lombok = { group = "org.projectlombok", name = "lombok", version.ref = "lombok" }
22-
junit = { group = "junit", name = "junit", version.ref = "junit" }
23-
jupiterApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "jupiterApi" }
2425
springWeb = { group = "org.springframework", name = "spring-web", version.ref = "springWeb" }
26+
commons = { group = "commons-io", name = "commons-io", version.ref = "commons-io" }
27+
slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
28+
logback = { group = "ch.qos.logback", name = "logback-classic", version.ref = "logback" }
29+
diffUtils = { group = "io.github.java-diff-utils", name = "java-diff-utils", version.ref = "diffUtils" }
30+
junit = { group = "junit", name = "junit", version.ref = "junit" }
31+
jupiterApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "jupiter" }
32+
jupiter = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "jupiter" }
33+
junitPlatform = { group = "org.junit.platform", name = "junit-platform-launcher", version.ref = "junitPlatform" }
2534

2635
[plugins]
2736
changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
2837
intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "intelliJPlatform" }
2938
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
30-
# kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
3139
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
3240
qodana = { id = "org.jetbrains.qodana", version.ref = "qodana" }

src/main/java/com/bridgecrew/log/LoggerService.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.bridgecrew.log;
22

33
import ch.qos.logback.classic.LoggerContext;
4+
import ch.qos.logback.classic.joran.JoranConfigurator;
45
import ch.qos.logback.core.Appender;
56
import ch.qos.logback.core.FileAppender;
7+
import ch.qos.logback.core.joran.spi.JoranException;
8+
import com.intellij.openapi.application.PathManager;
69
import com.intellij.openapi.components.Service;
710
import org.slf4j.LoggerFactory;
11+
import java.net.URL;
812

913
@Service
1014
public final class LoggerService {
@@ -18,4 +22,22 @@ public String getLogFilePath() {
1822
}
1923
return null;
2024
}
25+
26+
public void initializeLogger() {
27+
System.setProperty("prisma.log", PathManager.getLogPath());
28+
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
29+
context.reset();
30+
try {
31+
JoranConfigurator configurator = new JoranConfigurator();
32+
configurator.setContext(context);
33+
URL configURL = getClass().getClassLoader().getResource("logback.xml");
34+
if (configURL != null) {
35+
configurator.doConfigure(configURL);
36+
} else {
37+
System.err.println("Logback configuration file not found");
38+
}
39+
} catch (JoranException je) {
40+
System.err.println("Failed to initialize logback: " + je.getMessage());
41+
}
42+
}
2143
}
Lines changed: 48 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,69 @@
11
package com.bridgecrew
22

3-
import com.google.gson.Gson
4-
5-
val gson = Gson()
6-
73
data class VulnerabilityDetails(
8-
val id: String?,
9-
val package_name: String?,
10-
val package_version: String?,
11-
val link: String?,
12-
val description: String?,
13-
val license: String?,
14-
val cvss: Double?,
15-
val lowest_fixed_version: String?,
16-
val published_date: String?,
17-
val vector: String?,
18-
val risk_factors: Map<String, Any>,
19-
val root_package_name: String?,
20-
val root_package_version: String?,
21-
val root_package_fix_version: String?,
22-
val fix_command: FixCommand?
4+
val id: String?,
5+
val package_name: String?,
6+
val package_version: String?,
7+
val link: String?,
8+
val description: String?,
9+
val license: String?,
10+
val cvss: Double?,
11+
val lowest_fixed_version: String?,
12+
val published_date: String?,
13+
val vector: String?,
14+
val risk_factors: Map<String, Any>?,
15+
val root_package_name: String?,
16+
val root_package_version: String?,
17+
val root_package_fix_version: String?,
18+
val fix_command: FixCommand?
2319
)
2420

2521
data class FixCommand(
26-
val msg: String?,
27-
val cmds: ArrayList<String>,
28-
val manualCodeFix: Boolean
22+
val msg: String?,
23+
val cmds: ArrayList<String>,
24+
val manualCodeFix: Boolean
2925
)
3026

3127
data class CheckovResult(
32-
val check_id: String,
33-
val bc_check_id: String = "",
34-
val check_name: String,
35-
val file_path: String,
36-
val repo_file_path: String,
37-
var file_abs_path: String,
38-
val file_line_range: ArrayList<Int>,
39-
val resource: String,
40-
val severity: String,
41-
val description: String,
42-
val short_description: String,
43-
val vulnerability_details: VulnerabilityDetails?,
44-
val guideline: String = "\"No Guide\")",
45-
val code_block: List<List<Any>>,
46-
var check_type: String,
47-
val fixed_definition: String = "",
48-
val cwe: ArrayList<String>? = ArrayList(),
49-
val owasp: ArrayList<String>? = ArrayList(),
50-
val metadata: Metadata? = null
51-
)
28+
val check_id: String,
29+
val bc_check_id: String? = "",
30+
val check_name: String,
31+
val file_path: String,
32+
val repo_file_path: String?,
33+
var file_abs_path: String,
34+
val file_line_range: ArrayList<Int>,
35+
val resource: String,
36+
val severity: String,
37+
val description: String?,
38+
val short_description: String?,
39+
val vulnerability_details: VulnerabilityDetails?,
40+
val guideline: String? = "\"No Guide\")",
41+
val code_block: List<List<Any>>,
42+
val fixed_definition: String? = "",
43+
val cwe: ArrayList<String>? = ArrayList(),
44+
val owasp: ArrayList<String>? = ArrayList(),
45+
val metadata: Metadata? = null
46+
) {
47+
lateinit var check_type: String
48+
}
5249

5350
data class Metadata(
54-
val code_locations: List<DataFlow>?,
55-
val taint_mode: TaintMode?
51+
val code_locations: List<DataFlow>?,
52+
val taint_mode: TaintMode?
5653
)
5754

5855
data class TaintMode(
59-
val data_flow: List<DataFlow>?
56+
val data_flow: List<DataFlow>?
6057
)
6158

6259
data class DataFlow(
63-
val path: String,
64-
val start: CodePosition,
65-
val end: CodePosition,
66-
val code_block: String
60+
val path: String,
61+
val start: CodePosition,
62+
val end: CodePosition,
63+
val code_block: String
6764
)
6865

6966
data class CodePosition(
70-
val row: Int,
71-
val column: Int
67+
val row: Int,
68+
val column: Int
7269
)

src/main/kotlin/com/bridgecrew/activities/PostStartupActivity.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import com.bridgecrew.initialization.InitializationService
55
import com.bridgecrew.listeners.InitializationListener
66
import com.bridgecrew.listeners.InitializationListener.Companion.INITIALIZATION_TOPIC
77
import com.bridgecrew.listeners.PrismaVirtualFileListener
8+
import com.bridgecrew.log.LoggerService
89
import com.bridgecrew.settings.PrismaSettingsState
910
import com.bridgecrew.ui.CheckovToolWindowManagerPanel
11+
import com.bridgecrew.util.ApplicationServiceUtil
1012
import com.intellij.ide.plugins.IdeaPluginDescriptor
1113
import com.intellij.ide.plugins.PluginInstaller
1214
import com.intellij.ide.plugins.PluginManagerCore
@@ -24,6 +26,7 @@ class PostStartupActivity : ProjectActivity {
2426
private val logger = LoggerFactory.getLogger(javaClass)
2527

2628
override suspend fun execute(project: Project) {
29+
ApplicationServiceUtil.getService(LoggerService::class.java).initializeLogger()
2730
val version = PluginManagerCore.getPlugin(PluginId.getId("com.github.bridgecrewio.prismacloud"))?.version
2831
logger.info("Starting Prisma Cloud JetBrains plugin version $version")
2932
project.messageBus.connect().subscribe(INITIALIZATION_TOPIC, object : InitializationListener {

src/main/kotlin/com/bridgecrew/api/PrismaApiClient.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.bridgecrew.listeners.CheckovSettingsListener
55
import com.bridgecrew.settings.DEFAULT_REPORTING_INTERVAL
66
import com.bridgecrew.settings.PLUGIN_NAME
77
import com.bridgecrew.settings.PrismaSettingsState
8+
import com.fasterxml.jackson.annotation.JsonInclude
89
import com.fasterxml.jackson.databind.DeserializationFeature
910
import com.fasterxml.jackson.databind.ObjectMapper
1011
import com.fasterxml.jackson.module.kotlin.KotlinModule
@@ -33,6 +34,7 @@ data class PrismaConnectionDetails(
3334
val mapper = ObjectMapper().apply {
3435
registerModule(KotlinModule.Builder().build())
3536
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
37+
setSerializationInclusion(JsonInclude.Include.NON_NULL)
3638
}
3739

3840
@Service
@@ -77,7 +79,7 @@ class PrismaApiClient {
7779
private inline fun <reified T> sendRequest(endpoint: String, method: HttpMethod, payload: Any?, login: Boolean = false): T? {
7880
try {
7981
if (connection == null) {
80-
logger.warn("API call aborted because Prisma Cloud settings were not configured in the plugin settings")
82+
logger.warn("API call '$endpoint' aborted because Prisma Cloud settings were not configured in the plugin settings")
8183
return null
8284
}
8385
logger.info("Sending {} request '{}' to {}", method, endpoint, connection!!.url)

src/main/kotlin/com/bridgecrew/results/BaseCheckovResult.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,20 @@ enum class Severity {
4040
}
4141

4242
open class BaseCheckovResult(
43-
val category: Category,
44-
val checkType: CheckType,
45-
val filePath: String,
46-
val resource: String,
47-
val name: String,
48-
val id: String,
49-
val severity: Severity,
50-
val description: String?,
51-
val guideline: String?,
52-
val absoluteFilePath: String,
53-
val fileLineRange: List<Int>,
54-
val fixDefinition: String?,
55-
val codeBlock: List<List<Any>>,
56-
var codeDiffFirstLine: Int = fileLineRange[0]
43+
val category: Category,
44+
val checkType: CheckType,
45+
val filePath: String,
46+
val resource: String,
47+
val name: String,
48+
val id: String,
49+
val severity: Severity,
50+
val description: String?,
51+
val guideline: String?,
52+
val absoluteFilePath: String,
53+
val fileLineRange: List<Int>,
54+
val fixDefinition: String?,
55+
val codeBlock: List<List<Any>>,
56+
var codeDiffFirstLine: Int = fileLineRange[0]
5757
) {
5858
override fun equals(other: Any?): Boolean {
5959
if (this === other) return true
Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
package com.bridgecrew.results
22

33
class IacCheckovResult(
4-
checkType: CheckType,
5-
filePath: String,
6-
resource: String,
7-
name: String,
8-
id: String,
9-
severity: Severity,
10-
description: String?,
11-
guideline: String?,
12-
absoluteFilePath: String,
13-
fileLineRange: List<Int>,
14-
fixDefinition: String?,
15-
codeBlock: List<List<Any>>,
16-
val checkName: String
17-
) :
18-
BaseCheckovResult(
19-
category = Category.IAC,
20-
checkType,
21-
filePath,
22-
resource,
23-
name,
24-
id,
25-
severity,
26-
description,
27-
guideline,
28-
absoluteFilePath,
29-
fileLineRange,
30-
fixDefinition,
31-
codeBlock)
4+
checkType: CheckType,
5+
filePath: String,
6+
resource: String,
7+
name: String,
8+
id: String,
9+
severity: Severity,
10+
description: String?,
11+
guideline: String?,
12+
absoluteFilePath: String,
13+
fileLineRange: List<Int>,
14+
fixDefinition: String?,
15+
codeBlock: List<List<Any>>,
16+
val checkName: String
17+
) : BaseCheckovResult(
18+
category = Category.IAC,
19+
checkType,
20+
filePath,
21+
resource,
22+
name,
23+
id,
24+
severity,
25+
description,
26+
guideline,
27+
absoluteFilePath,
28+
fileLineRange,
29+
fixDefinition,
30+
codeBlock
31+
)

0 commit comments

Comments
 (0)