Skip to content

Commit

Permalink
Update chen to fix import line numbers (#109)
Browse files Browse the repository at this point in the history
Signed-off-by: Prabhu Subramanian <prabhu@appthreat.com>
  • Loading branch information
prabhu authored Jan 9, 2024
1 parent 098c8c0 commit c9bd082
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 16 deletions.
4 changes: 2 additions & 2 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name := "atom"
ThisBuild / organization := "io.appthreat"
ThisBuild / version := "1.8.2"
ThisBuild / version := "1.8.3"
ThisBuild / scalaVersion := "3.3.1"

val chenVersion = "1.1.4"
val chenVersion = "1.1.5"

lazy val atom = Projects.atom

Expand Down
2 changes: 1 addition & 1 deletion codemeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"downloadUrl": "https://github.com/AppThreat/atom",
"issueTracker": "https://github.com/AppThreat/atom/issues",
"name": "atom",
"version": "1.8.2",
"version": "1.8.3",
"description": "Atom is a novel intermediate representation for next-generation code analysis.",
"applicationCategory": "code-analysis",
"keywords": [
Expand Down
30 changes: 20 additions & 10 deletions src/main/scala/io/appthreat/atom/slicing/UsageSlicing.scala
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object UsageSlicing:
val slices = usageSlices(atom, () => getDeclarations, typeMap)
val language = atom.metaData.language.headOption
val userDefTypes = userDefinedTypes(atom)
if language.get == Languages.NEWC || language.get == Languages.C
if language.get == Languages.NEWC || language.get == Languages.C || language.get == Languages.PHP
then
ProgramUsageSlice(slices ++ importsAsSlices(atom), userDefTypes ++ routesAsUDT(atom))
else if language.get == Languages.PYTHON || language.get == Languages.PYTHONSRC
Expand All @@ -54,9 +54,6 @@ object UsageSlicing:
slices ++ externalCalleesAsSlices(atom, typeMap),
userDefTypes ++ routesAsUDT(atom)
)
else if language.get == Languages.PHP
then
ProgramUsageSlice(slices, userDefTypes ++ routesAsUDT(atom))
else
ProgramUsageSlice(slices ++ unusedTypeDeclAsSlices(atom), userDefTypes)
end calculateUsageSlice
Expand Down Expand Up @@ -111,18 +108,31 @@ object UsageSlicing:
.toList
end usageSlices

private def cleanupImportCode(code: String) =
if code.startsWith("use") then code else code.replaceAll("\\s*", "")

private def importLineNumber(im: Import) =
if im.file.nonEmpty && im.file.head.lineNumber.nonEmpty then
im.file.head.lineNumber.map(_.intValue())
else if im.lineNumber.nonEmpty then im.lineNumber.map(_.intValue())
else None

private def importColumnNumber(im: Import) =
if im.file.nonEmpty && im.file.head.columnNumber.nonEmpty then
im.file.head.columnNumber.map(_.intValue())
else if im.columnNumber.nonEmpty then im.columnNumber.map(_.intValue())
else None

private def importsAsSlices(atom: Cpg): List[MethodUsageSlice] =
atom.imports.l.map(im =>
MethodUsageSlice(
code = if im.code.nonEmpty then im.code.replaceAll("\\s*", "") else "",
code = if im.code.nonEmpty then cleanupImportCode(im.code) else "",
fullName = im.importedEntity.get,
signature = im.importedAs.get,
signature = im.importedAs.getOrElse(""),
fileName = if im.file.nonEmpty then im.file.head.name else "",
slices = Seq[ObjectUsageSlice]().toSet,
lineNumber =
if im.file.nonEmpty then im.file.head.lineNumber.map(_.intValue()) else None,
columnNumber =
if im.file.nonEmpty then im.file.head.columnNumber.map(_.intValue()) else None
lineNumber = importLineNumber(im),
columnNumber = importColumnNumber(im)
)
)

Expand Down
4 changes: 2 additions & 2 deletions wrapper/nodejs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion wrapper/nodejs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@appthreat/atom",
"version": "1.8.2",
"version": "1.8.3",
"description": "Create atom (⚛) representation for your application, packages and libraries",
"exports": "./index.js",
"type": "module",
Expand Down

0 comments on commit c9bd082

Please sign in to comment.