From f0a3be2ccff9b4a790260a772099661cffed3984 Mon Sep 17 00:00:00 2001 From: Prabhu Subramanian Date: Tue, 19 Dec 2023 18:01:08 +0000 Subject: [PATCH] Track unused type declarations in usages slices Signed-off-by: Prabhu Subramanian --- build.sbt | 4 ++-- project/build.properties | 2 +- .../appthreat/atom/slicing/UsageSlicing.scala | 17 +++++++++++++++- wrapper/nodejs/package-lock.json | 20 +++++++++---------- wrapper/nodejs/package.json | 4 ++-- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/build.sbt b/build.sbt index 9dbde09..f5fd5c9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,9 +1,9 @@ name := "atom" ThisBuild / organization := "io.appthreat" -ThisBuild / version := "1.7.4" +ThisBuild / version := "1.7.5" ThisBuild / scalaVersion := "3.3.1" -val chenVersion = "1.0.9" +val chenVersion = "1.0.10" lazy val atom = Projects.atom diff --git a/project/build.properties b/project/build.properties index e8a1e24..abbbce5 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.7 +sbt.version=1.9.8 diff --git a/src/main/scala/io/appthreat/atom/slicing/UsageSlicing.scala b/src/main/scala/io/appthreat/atom/slicing/UsageSlicing.scala index 015a837..4faa6a4 100644 --- a/src/main/scala/io/appthreat/atom/slicing/UsageSlicing.scala +++ b/src/main/scala/io/appthreat/atom/slicing/UsageSlicing.scala @@ -54,7 +54,7 @@ object UsageSlicing: userDefTypes ++ routesAsUDT(atom) ) else - ProgramUsageSlice(slices, userDefTypes) + ProgramUsageSlice(slices ++ unusedTypeDeclAsSlices(atom), userDefTypes) end calculateUsageSlice import io.shiftleft.semanticcpg.codedumper.CodeDumper.dump @@ -122,6 +122,21 @@ object UsageSlicing: ) ) + private def unusedTypeDeclAsSlices(atom: Cpg): List[MethodUsageSlice] = + atom.typeDecl.annotation.filter(_.method.isEmpty).l.map(im => + MethodUsageSlice( + code = if im.code.nonEmpty then im.code.replaceAll("\\s*", "") else "", + fullName = im.fullName, + signature = s"@${im.name}", + fileName = if im.file.nonEmpty then im.file.head.name else "", + slices = Seq[ObjectUsageSlice]().toSet, + lineNumber = + im.lineNumber.map(_.intValue()), + columnNumber = + im.columnNumber.map(_.intValue()) + ) + ) + private def externalCalleesAsSlices( atom: Cpg, typeMap: TrieMap[String, String] diff --git a/wrapper/nodejs/package-lock.json b/wrapper/nodejs/package-lock.json index d9d3bea..a6b1446 100644 --- a/wrapper/nodejs/package-lock.json +++ b/wrapper/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@appthreat/atom", - "version": "1.7.4", + "version": "1.7.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@appthreat/atom", - "version": "1.7.4", + "version": "1.7.5", "license": "Apache-2.0", "dependencies": { "@babel/parser": "^7.23.6", @@ -18,7 +18,7 @@ "atom": "index.js" }, "devDependencies": { - "eslint": "^8.55.0" + "eslint": "^8.56.0" }, "engines": { "node": ">=16.0.0" @@ -92,9 +92,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -390,15 +390,15 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", diff --git a/wrapper/nodejs/package.json b/wrapper/nodejs/package.json index a2c5765..f96e513 100644 --- a/wrapper/nodejs/package.json +++ b/wrapper/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@appthreat/atom", - "version": "1.7.4", + "version": "1.7.5", "description": "Create atom (⚛) representation for your application, packages and libraries", "exports": "./index.js", "type": "module", @@ -14,7 +14,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "eslint": "^8.55.0" + "eslint": "^8.56.0" }, "bin": { "atom": "./index.js",