Skip to content

Commit ae0c4eb

Browse files
authored
Update packages. Python crypto tagging improvements (#71)
Signed-off-by: Prabhu Subramanian <prabhu@appthreat.com>
1 parent b6ff40f commit ae0c4eb

File tree

49 files changed

+1995
-1545
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1995
-1545
lines changed

.github/workflows/containers.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Set up JDK
2727
uses: actions/setup-java@v4
2828
with:
29-
distribution: 'zulu'
29+
distribution: 'temurin'
3030
java-version: '21'
3131
- name: "Install PHP"
3232
uses: "shivammathur/setup-php@v2"

.github/workflows/master.yml

+6-8
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ jobs:
1414
- name: Set up JDK
1515
uses: actions/setup-java@v4
1616
with:
17-
distribution: 'zulu'
18-
java-version: '21'
17+
distribution: 'temurin'
18+
java-version: '22'
1919
- name: "Install PHP"
2020
uses: "shivammathur/setup-php@v2"
2121
with:
@@ -41,12 +41,10 @@ jobs:
4141
if: runner.os == 'Linux'
4242
- name: Install graphviz-dev
4343
run: |
44-
brew install graphviz
45-
python -m pip install \
46-
--global-option=build_ext \
47-
--global-option="-I$(brew --prefix graphviz)/include/" \
48-
--global-option="-L$(brew --prefix graphviz)/lib/" \
49-
pygraphviz
44+
brew install graphviz sbt
45+
export C_INCLUDE_PATH="$(brew --prefix graphviz)/include/"
46+
export LIBRARY_PATH="$(brew --prefix graphviz)/lib/"
47+
pip install --use-pep517 --config-setting="--global-option=build_ext" pygraphviz
5048
if: runner.os == 'macOS'
5149
- name: Install and test
5250
run: |

.github/workflows/pr.yml

+7-8
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ jobs:
66
strategy:
77
matrix:
88
os: [ubuntu-latest, windows-latest, macos-latest]
9-
jvm: ['21']
9+
jvm: ['21', '22']
1010
steps:
1111
- uses: actions/checkout@v4
1212
with:
1313
fetch-depth: 1
1414
- name: Set up JDK
1515
uses: actions/setup-java@v4
1616
with:
17-
distribution: 'zulu'
17+
distribution: 'temurin'
1818
java-version: ${{ matrix.jvm }}
19+
cache: "sbt"
1920
- name: "Install PHP"
2021
uses: "shivammathur/setup-php@v2"
2122
with:
@@ -41,12 +42,10 @@ jobs:
4142
if: runner.os == 'Linux'
4243
- name: Install graphviz-dev
4344
run: |
44-
brew install graphviz
45-
python -m pip install \
46-
--global-option=build_ext \
47-
--global-option="-I$(brew --prefix graphviz)/include/" \
48-
--global-option="-L$(brew --prefix graphviz)/lib/" \
49-
pygraphviz
45+
brew install graphviz sbt
46+
export C_INCLUDE_PATH="$(brew --prefix graphviz)/include/"
47+
export LIBRARY_PATH="$(brew --prefix graphviz)/lib/"
48+
pip install --use-pep517 --config-setting="--global-option=build_ext" pygraphviz
5049
if: runner.os == 'macOS'
5150
- name: Install and test
5251
run: |

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Set up JDK
1919
uses: actions/setup-java@v4
2020
with:
21-
distribution: 'zulu'
21+
distribution: 'temurin'
2222
java-version: '21'
2323
- name: "Install PHP"
2424
uses: "shivammathur/setup-php@v2"

.scalafmt.conf

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version = 3.7.15
1+
version = 3.8.1
22
runner.dialect = scala3
33
preset = IntelliJ
44
maxColumn = 100
@@ -12,3 +12,6 @@ rewrite.scala3.removeOptionalBraces = yes
1212
rewrite.scala3.insertEndMarkerMinLines = 20
1313
rewrite.scala3.removeEndMarkerMaxLines = 18
1414

15+
rewrite.rules = [AvoidInfix]
16+
rewrite.avoidInfix.excludeFilters."+" = [ "map" ]
17+
rewrite.avoidInfix.excludePlaceholderArg = false

build.sbt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name := "chen"
22
ThisBuild / organization := "io.appthreat"
3-
ThisBuild / version := "2.0.8"
4-
ThisBuild / scalaVersion := "3.3.1"
3+
ThisBuild / version := "2.0.9"
4+
ThisBuild / scalaVersion := "3.4.1"
55

66
val cpgVersion = "1.0.0"
77

@@ -34,8 +34,8 @@ lazy val aggregatedProjects: Seq[ProjectReference] = Seq(
3434
)
3535

3636
ThisBuild / libraryDependencies ++= Seq(
37-
"org.slf4j" % "slf4j-api" % "2.0.12",
38-
"org.slf4j" % "slf4j-nop" % "2.0.12" % Optional,
37+
"org.slf4j" % "slf4j-api" % "2.0.13",
38+
"org.slf4j" % "slf4j-nop" % "2.0.13" % Optional,
3939
)
4040

4141
ThisBuild / compile / javacOptions ++= Seq(

ci/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ LABEL maintainer="appthreat" \
1111
org.opencontainers.image.description="Container image for AppThreat chen code analysis platform" \
1212
org.opencontainers.docker.cmd="docker run --rm -v /tmp:/tmp -v $HOME:$HOME -v $(pwd):/app:rw -it ghcr.io/appthreat/chen chennai"
1313

14-
ARG JAVA_VERSION=21.0.2-graalce
14+
ARG JAVA_VERSION=22.0.1-graalce
1515
ARG MAVEN_VERSION=3.9.6
16-
ARG GRADLE_VERSION=8.5
16+
ARG GRADLE_VERSION=8.7
1717

1818
ENV JAVA_VERSION=$JAVA_VERSION \
1919
MAVEN_VERSION=$MAVEN_VERSION \

codemeta.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"downloadUrl": "https://github.com/AppThreat/chen",
88
"issueTracker": "https://github.com/AppThreat/chen/issues",
99
"name": "chen",
10-
"version": "2.0.8",
10+
"version": "2.0.9",
1111
"description": "Code Hierarchy Exploration Net (chen) is an advanced exploration toolkit for your application source code and its dependency hierarchy.",
1212
"applicationCategory": "code-analysis",
1313
"keywords": [

console/build.sbt

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ libraryDependencies ++= Seq(
2424
"io.circe" %% "circe-generic" % CirceVersion,
2525
"io.circe" %% "circe-parser" % CirceVersion,
2626
"org.zeroturnaround" % "zt-zip" % ZeroturnaroundVersion,
27-
"com.lihaoyi" %% "os-lib" % "0.9.3",
28-
"com.lihaoyi" %% "pprint" % "0.8.1",
27+
"com.lihaoyi" %% "os-lib" % "0.10.0",
28+
"com.lihaoyi" %% "pprint" % "0.9.0",
2929
"com.lihaoyi" %% "cask" % CaskVersion,
3030
"dev.scalapy" %% "scalapy-core" % "0.5.3",
31-
"org.scala-lang.modules" % "scala-asm" % "9.6.0-scala-1",
31+
"org.scala-lang.modules" % "scala-asm" % "9.7.0-scala-2",
3232
"org.scalatest" %% "scalatest" % Versions.scalatest % Test
3333
)
3434

console/src/main/scala/io/appthreat/console/Console.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class Console[T <: Project](
3333
def config: ConsoleConfig = _config
3434
def console: Console[T] = this
3535

36-
protected var workspaceManager: WorkspaceManager[T] = _
36+
protected var workspaceManager: WorkspaceManager[T] = scala.compiletime.uninitialized
3737
switchWorkspace(baseDir.path.resolve("workspace").toString)
3838
protected def workspacePathName: String = workspaceManager.getPath
3939

@@ -797,7 +797,7 @@ class Console[T <: Project](
797797
lastCallerMethod = methodName
798798
dashCount += 1
799799
if dashCount < depth then
800-
calleeList foreach { c =>
800+
calleeList.foreach { c =>
801801
tree += s"${printDashes(dashCount)}${c.fullName}~~${c.location.filename}#${c.lineNumber.getOrElse(0)}"
802802
findCallee(c.fullName, tree)
803803
}

console/src/test/scala/io/appthreat/console/ConsoleTests.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ class ConsoleTests extends AnyWordSpec with Matchers {
289289
)
290290
val numOverlayFilesBefore = console.project.path.resolve("overlays").toFile.list().length
291291
numOverlayFilesBefore shouldBe 0
292-
console._runAnalyzer(defaultOverlayCreators(): _*)
292+
console._runAnalyzer(defaultOverlayCreators()*)
293293
console.project.appliedOverlays shouldBe List(
294294
Base.overlayName,
295295
ControlFlow.overlayName,

dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/language/ExtendedCfgNode.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class ExtendedCfgNode(val traversal: Iterator[CfgNode]) extends AnyVal:
3939
sourceTrav: IterableOnce[NodeType],
4040
sourceTravs: IterableOnce[NodeType]*
4141
)(implicit context: EngineContext): Iterator[NodeType] =
42-
val sources = sourceTravsToStartingPoints(sourceTrav +: sourceTravs: _*)
42+
val sources = sourceTravsToStartingPoints(sourceTrav +: sourceTravs*)
4343
val reachedSources =
4444
reachableByInternal(sources).map(_.path.head.node)
4545
reachedSources.cast[NodeType]
@@ -51,7 +51,7 @@ class ExtendedCfgNode(val traversal: Iterator[CfgNode]) extends AnyVal:
5151
def reachableByFlows[A](sourceTrav: IterableOnce[A], sourceTravs: IterableOnce[A]*)(implicit
5252
context: EngineContext
5353
): Iterator[Path] =
54-
val sources = sourceTravsToStartingPoints(sourceTrav +: sourceTravs: _*)
54+
val sources = sourceTravsToStartingPoints(sourceTrav +: sourceTravs*)
5555
val startingPoints = sources.map(_.startingPoint)
5656
val paths = reachableByInternal(sources).par
5757
.map { result =>
@@ -79,7 +79,7 @@ class ExtendedCfgNode(val traversal: Iterator[CfgNode]) extends AnyVal:
7979
sourceTravs: Iterator[NodeType]*
8080
)(implicit context: EngineContext): Vector[TableEntry] =
8181
val sources =
82-
SourcesToStartingPoints.sourceTravsToStartingPoints(sourceTrav +: sourceTravs: _*)
82+
SourcesToStartingPoints.sourceTravsToStartingPoints(sourceTrav +: sourceTravs*)
8383
reachableByInternal(sources)
8484

8585
private def removeConsecutiveDuplicates[T](l: Vector[T]): List[T] =

dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/DataFlowSolver.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class DataFlowSolver:
88
* given by two maps: `in` and `out`. These maps associate all CFG nodes with the set of
99
* definitions at node entry and node exit respectively.
1010
*/
11-
def calculateMopSolutionForwards[Node, T <: Iterable[_]](problem: DataFlowProblem[Node, T])
11+
def calculateMopSolutionForwards[Node, T <: Iterable[?]](problem: DataFlowProblem[Node, T])
1212
: Solution[Node, T] =
1313
var out: Map[Node, T] = problem.inOutInit.initOut
1414
var in = problem.inOutInit.initIn
@@ -43,7 +43,7 @@ class DataFlowSolver:
4343
* given by two maps: `in` and `out`. These maps associate all CFG nodes with the set of
4444
* definitions at node entry and node exit respectively.
4545
*/
46-
def calculateMopSolutionBackwards[Node, T <: Iterable[_]](problem: DataFlowProblem[Node, T])
46+
def calculateMopSolutionBackwards[Node, T <: Iterable[?]](problem: DataFlowProblem[Node, T])
4747
: Solution[Node, T] =
4848
var out: Map[Node, T] = problem.inOutInit.initOut
4949
var in = problem.inOutInit.initIn

dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/queryengine/HeldTaskCompletion.scala

-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ class HeldTaskCompletion(
113113
(parentTask, TableEntry(newPath))
114114
}
115115
.filter { case (_, tableEntry) => containsCycle(tableEntry) }
116-
end createResultsForHeldTaskAndTableResult
117116

118117
private def containsCycle(tableEntry: TableEntry): Boolean =
119118
val pathSeq =

meta.yaml

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% set version = "2.0.8" %}
1+
{% set version = "2.0.9" %}
22

33
package:
44
name: chen
@@ -19,17 +19,17 @@ requirements:
1919
- setuptools
2020
- poetry
2121
run:
22-
- python>=3.8.1,<3.12
23-
- conda-forge::httpx>=0.24.1,<0.25.0
24-
- conda-forge::websockets>=11.0.2,<12.0.0
25-
- conda-forge::orjson>=3.9.0,<4.0.0
26-
- conda-forge::rich>=13.4.1,<14.0.0
22+
- python>=3.10,<3.12
23+
- conda-forge::httpx>=0.27.0
24+
- conda-forge::websockets>=12.0
25+
- conda-forge::orjson>=3.10.1,<4.0.0
26+
- conda-forge::rich>=13.7.1,<14.0.0
2727
- conda-forge::oras-py==0.1.26
2828
- conda-forge::appdirs>=1.4.4,<2.0.0
29-
- conda-forge::psutil>=5.9.5,<6.0.0
29+
- conda-forge::psutil>=5.9.8,<6.0.0
3030
- conda-forge::packageurl-python>=0.11.2,<0.12.0
31-
- conda-forge::gitpython>=3.1.37,<4.0.0
32-
- conda-forge::networkx>=3.1
31+
- conda-forge::gitpython>=3.1.43,<4.0.0
32+
- conda-forge::networkx>=3.3
3333
- conda-forge::numpy>=1.26
3434
- conda-forge::scipy>=1.11.3
3535
build:

platform/frontends/c2cpg/build.sbt

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ dependsOn(Projects.semanticcpg, Projects.dataflowengineoss % Test, Projects.x2cp
44

55
libraryDependencies ++= Seq(
66
"org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4",
7-
"org.eclipse.platform" % "org.eclipse.equinox.common" % "3.18.200",
8-
"org.eclipse.platform" % "org.eclipse.core.resources" % "3.20.0" excludeAll(
7+
"org.eclipse.platform" % "org.eclipse.equinox.common" % "3.19.0",
8+
"org.eclipse.platform" % "org.eclipse.core.resources" % "3.20.100" excludeAll(
99
ExclusionRule(organization = "com.ibm.icu", name = "icu4j"),
1010
ExclusionRule(organization = "org.eclipse.platform", name = "org.eclipse.jface"),
1111
ExclusionRule(organization = "org.eclipse.platform", name = "org.eclipse.jface.text")
1212
),
13-
"org.jline" % "jline" % "3.25.1",
13+
"org.jline" % "jline" % "3.26.1",
1414
"org.scalatest" %% "scalatest" % Versions.scalatest % Test
1515
)
1616

platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/parser/HeaderFileFinder.scala

-1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,3 @@ class HeaderFileFinder(root: String):
2424
val matches = nameToPathMap.getOrElse(name, List())
2525
matches.map(_.toString).sortBy(x => Levenshtein.distance(x, path)).headOption
2626
}
27-
end HeaderFileFinder

platform/frontends/javasrc2cpg/build.sbt

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ dependsOn(Projects.dataflowengineoss, Projects.x2cpg % "compile->compile;test->t
44

55
libraryDependencies ++= Seq(
66
"io.appthreat" %% "cpg2" % Versions.cpg,
7-
"com.github.javaparser" % "javaparser-symbol-solver-core" % "3.25.8",
7+
"com.github.javaparser" % "javaparser-symbol-solver-core" % "3.25.10",
88
"org.gradle" % "gradle-tooling-api" % Versions.gradleTooling,
99
"org.scalatest" %% "scalatest" % Versions.scalatest % Test,
10-
"org.projectlombok" % "lombok" % "1.18.30",
10+
"org.projectlombok" % "lombok" % "1.18.32",
1111
"org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4",
12-
"org.scala-lang.modules" %% "scala-parser-combinators" % "2.3.0",
12+
"org.scala-lang.modules" %% "scala-parser-combinators" % "2.4.0",
1313
"net.lingala.zip4j" % "zip4j" % "2.11.5"
1414
)
1515

platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/typesolvers/EagerSourceTypeSolver.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ class EagerSourceTypeSolver(
2121
) extends TypeSolver:
2222

2323
private val logger = LoggerFactory.getLogger(this.getClass)
24-
private var parent: TypeSolver = _
24+
private var parent: TypeSolver = scala.compiletime.uninitialized
2525

2626
private val foundTypes: Map[String, SymbolReference[ResolvedReferenceTypeDeclaration]] =
2727
filenames
2828
.flatMap(sourceParser.parseTypesFile)
2929
.flatMap { cu =>
3030
symbolSolver.inject(cu)
31-
cu.findAll(classOf[TypeDeclaration[_]])
31+
cu.findAll(classOf[TypeDeclaration[?]])
3232
.asScala
3333
.map { typeDeclaration =>
3434
val name = typeDeclaration.getFullyQualifiedName.toScala match

platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/typesolvers/SimpleCombinedTypeSolver.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import scala.jdk.OptionConverters.RichOptional
1414
class SimpleCombinedTypeSolver extends TypeSolver:
1515

1616
private val logger = LoggerFactory.getLogger(this.getClass)
17-
private var parent: TypeSolver = _
17+
private var parent: TypeSolver = scala.compiletime.uninitialized
1818
// Ideally all types would be cached in the SimpleCombinedTypeSolver to avoid unnecessary unresolved types
1919
// from being cached. The EagerSourceTypeSolver preloads all types, however, so separating caching and
2020
// non-caching solvers avoids caching types twice.

platform/frontends/jimple2cpg/build.sbt

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ name := "jimple2cpg"
33
dependsOn(Projects.dataflowengineoss, Projects.x2cpg % "compile->compile;test->test")
44

55
libraryDependencies ++= Seq(
6-
"io.appthreat" %% "cpg2" % Versions.cpg,
7-
"org.soot-oss" % "soot" % "4.4.1",
8-
"org.scala-lang.modules" % "scala-asm" % "9.6.0-scala-1",
9-
"org.ow2.asm" % "asm" % "9.6",
10-
"org.ow2.asm" % "asm-analysis" % "9.6",
11-
"org.ow2.asm" % "asm-util" % "9.6",
12-
"org.ow2.asm" % "asm-tree" % "9.6",
6+
"io.appthreat" %% "cpg2" % Versions.cpg,
7+
"org.soot-oss" % "soot" % "4.5.0",
8+
"org.scala-lang.modules" % "scala-asm" % "9.7.0-scala-2",
9+
"org.ow2.asm" % "asm" % "9.7",
10+
"org.ow2.asm" % "asm-analysis" % "9.7",
11+
"org.ow2.asm" % "asm-util" % "9.7",
12+
"org.ow2.asm" % "asm-tree" % "9.7",
1313
"org.scalatest" %% "scalatest" % Versions.scalatest % Test
1414
)
1515

platform/frontends/jimple2cpg/src/test/scala/io/appthreat/jimple2cpg/unpacking/JarUnpackingTests.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import scala.util.{Failure, Success, Try}
1616

1717
class JarUnpackingTests extends AnyWordSpec with Matchers with BeforeAndAfterAll {
1818

19-
var validCpgs: Map[String, Cpg] = _
20-
var slippyCpg: Cpg = _
19+
var validCpgs: Map[String, Cpg] = scala.compiletime.uninitialized
20+
var slippyCpg: Cpg = scala.compiletime.uninitialized
2121

2222
override protected def beforeAll(): Unit = {
2323
super.beforeAll()

platform/frontends/jssrc2cpg/build.sbt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ astGenVersion := appProperties.value.getString("jssrc2cpg.astgen_version")
2020
libraryDependencies ++= Seq(
2121
"io.appthreat" %% "cpg2" % Versions.cpg,
2222
"com.lihaoyi" %% "upickle" % Versions.upickle,
23-
"com.fasterxml.jackson.core" % "jackson-databind" % "2.16.1",
23+
"com.fasterxml.jackson.core" % "jackson-databind" % "2.17.0",
2424
"com.typesafe" % "config" % "1.4.3",
2525
"com.michaelpollmeier" % "versionsort" % "1.0.11",
2626
"org.scalatest" %% "scalatest" % Versions.scalatest % Test

platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/astcreation/AstForFunctionsCreator.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ trait AstForFunctionsCreator(implicit withSchemaValidation: ValidationMode):
255255
case i: NewIdentifier if localNode.name == i.name => i
256256
}
257257
.map { i => assignmentCallAst.withRefEdge(i, localNode) }
258-
.reduce(_ merge _)
258+
.reduce(_.merge(_))
259259
case RestElement =>
260260
handleRestInParameters(elementNodeInfo, nodeInfo, paramName)
261261
case _ => astForNodeWithFunctionReference(elementNodeInfo.json)

platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/datastructures/Scope.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class Scope:
5353
addVariable(stack, variableName, variableNode, scopeType)
5454

5555
def addVariableReference(variableName: String, referenceNode: NewNode): Unit =
56-
pendingReferences prepend PendingReference(variableName, referenceNode, stack)
56+
pendingReferences.prepend(PendingReference(variableName, referenceNode, stack))
5757

5858
def resolve(unresolvedHandler: (NewNode, String) => (NewNode, ScopeType))
5959
: Iterator[ResolvedReference] =

platform/frontends/php2atom/src/main/scala/io/appthreat/php2atom/passes/PhpSetKnownTypes.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class PhpSetKnownTypesPass(cpg: Cpg, knownTypesFile: Option[JFile] = None)
5050
val builtinMethod = cpg.method.fullNameExact(part.name).l
5151
builtinMethod.foreach(mNode =>
5252
setTypes(builder, mNode.methodReturn, part.rTypes)
53-
(mNode.parameter.l zip part.pTypes).map((p, pTypes) => setTypes(builder, p, pTypes))
53+
(mNode.parameter.l.zip(part.pTypes)).map((p, pTypes) => setTypes(builder, p, pTypes))
5454
)
5555

5656
def createKnownFunctionFromLine(line: String): Option[KnownFunction] =

0 commit comments

Comments
 (0)