From 88231094bf85802b067b14038383e269fc37c23c Mon Sep 17 00:00:00 2001 From: Chris Gavin Date: Tue, 23 Jun 2020 14:22:03 +0100 Subject: [PATCH] Convert all 4-space indented files to 2-space. --- lib/analysis-paths.js.map | 2 +- lib/analysis-paths.test.js.map | 2 +- lib/config-utils.js.map | 2 +- lib/external-queries.test.js.map | 2 +- lib/fingerprints.js.map | 2 +- lib/fingerprints.test.js.map | 2 +- lib/setup-tools.js.map | 2 +- lib/setup-tools.test.js.map | 2 +- lib/setup-tracer.js.map | 2 +- lib/tracer-env.js.map | 2 +- lib/upload-lib.js.map | 2 +- lib/upload-sarif.js.map | 2 +- lib/util.js.map | 2 +- src/analysis-paths.test.ts | 20 +- src/analysis-paths.ts | 28 +- src/config-utils.ts | 392 +++++++++++----------- src/external-queries.test.ts | 20 +- src/fingerprints.test.ts | 320 +++++++++--------- src/fingerprints.ts | 368 ++++++++++----------- src/setup-tools.test.ts | 70 ++-- src/setup-tools.ts | 102 +++--- src/setup-tracer.ts | 402 +++++++++++------------ src/tracer-env.ts | 11 +- src/upload-lib.ts | 332 +++++++++---------- src/upload-sarif.ts | 30 +- src/util.ts | 538 +++++++++++++++---------------- 26 files changed, 1329 insertions(+), 1330 deletions(-) diff --git a/lib/analysis-paths.js.map b/lib/analysis-paths.js.map index d80707f93..e409927c2 100644 --- a/lib/analysis-paths.js.map +++ b/lib/analysis-paths.js.map @@ -1 +1 @@ -{"version":3,"file":"analysis-paths.js","sourceRoot":"","sources":["../src/analysis-paths.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AAItC,SAAgB,8BAA8B,CAAC,MAA0B,EAAE,SAAmB;IAC1F,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtE;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5E;IAED,SAAS,qBAAqB,CAAC,QAAQ;QACnC,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,QAAQ,CAAC;IAC9D,CAAC;IAED,2DAA2D;IAC3D,+DAA+D;IAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE;QAC3G,IAAI,CAAC,OAAO,CAAC,4FAA4F,CAAC,CAAC;KAC9G;AACL,CAAC;AAlBD,wEAkBC"} \ No newline at end of file +{"version":3,"file":"analysis-paths.js","sourceRoot":"","sources":["../src/analysis-paths.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AAItC,SAAgB,8BAA8B,CAAC,MAA0B,EAAE,SAAmB;IAC5F,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACpE;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1E;IAED,SAAS,qBAAqB,CAAC,QAAQ;QACrC,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,QAAQ,CAAC;IAC5D,CAAC;IAED,2DAA2D;IAC3D,+DAA+D;IAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE;QAC7G,IAAI,CAAC,OAAO,CAAC,4FAA4F,CAAC,CAAC;KAC5G;AACH,CAAC;AAlBD,wEAkBC"} \ No newline at end of file diff --git a/lib/analysis-paths.test.js.map b/lib/analysis-paths.test.js.map index 321415575..6d95947ad 100644 --- a/lib/analysis-paths.test.js.map +++ b/lib/analysis-paths.test.js.map @@ -1 +1 @@ -{"version":3,"file":"analysis-paths.test.js","sourceRoot":"","sources":["../src/analysis-paths.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AAEvB,gEAAkD;AAClD,4DAA8C;AAE9C,aAAI,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACzB,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,eAAe,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC5B,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,aAAa,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"analysis-paths.test.js","sourceRoot":"","sources":["../src/analysis-paths.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AAEvB,gEAAkD;AAClD,4DAA8C;AAE9C,aAAI,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3B,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,eAAe,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC9B,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,aAAa,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/config-utils.js.map b/lib/config-utils.js.map index 5c2754fd2..ce2185b34 100644 --- a/lib/config-utils.js.map +++ b/lib/config-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"config-utils.js","sourceRoot":"","sources":["../src/config-utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/external-queries.test.js.map b/lib/external-queries.test.js.map index 0013ce496..2797419f4 100644 --- a/lib/external-queries.test.js.map +++ b/lib/external-queries.test.js.map @@ -1 +1 @@ -{"version":3,"file":"external-queries.test.js","sourceRoot":"","sources":["../src/external-queries.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AACvB,uCAAyB;AACzB,2CAA6B;AAE7B,4DAA8C;AAC9C,oEAAsD;AACtD,6CAA+B;AAE/B,aAAI,CAAC,yBAAyB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACtC,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,eAAe,GAAG;QACrB,IAAI,WAAW,CAAC,aAAa,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KAChG,CAAC;IAEF,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;QACpC,MAAM,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEtD,uFAAuF;QACvF,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"external-queries.test.js","sourceRoot":"","sources":["../src/external-queries.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AACvB,uCAAyB;AACzB,2CAA6B;AAE7B,4DAA8C;AAC9C,oEAAsD;AACtD,6CAA+B;AAE/B,aAAI,CAAC,yBAAyB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACxC,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,eAAe,GAAG;QACvB,IAAI,WAAW,CAAC,aAAa,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KAC9F,CAAC;IAEF,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;QACpC,MAAM,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEtD,uFAAuF;QACvF,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/fingerprints.js.map b/lib/fingerprints.js.map index be89c3518..d61ab331d 100644 --- a/lib/fingerprints.js.map +++ b/lib/fingerprints.js.map @@ -1 +1 @@ -{"version":3,"file":"fingerprints.js","sourceRoot":"","sources":["../src/fingerprints.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fingerprints.js","sourceRoot":"","sources":["../src/fingerprints.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/fingerprints.test.js.map b/lib/fingerprints.test.js.map index 5b6be9640..f12afc32c 100644 --- a/lib/fingerprints.test.js.map +++ b/lib/fingerprints.test.js.map @@ -1 +1 @@ -{"version":3,"file":"fingerprints.test.js","sourceRoot":"","sources":["../src/fingerprints.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AAEvB,uCAAyB;AACzB,2CAA6B;AAE7B,6DAA+C;AAE/C,SAAS,QAAQ,CAAC,CAAiB,EAAE,KAAa,EAAE,cAAwB;IACxE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,UAAU,UAAkB,EAAE,IAAY;QACrD,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,aAAI,CAAC,MAAM,EAAE,CAAC,CAAiB,EAAE,EAAE;IAC/B,iBAAiB;IACjB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAExC,iDAAiD;IACjD,QAAQ,CACJ,CAAC,EACD,oBAAoB,EACpB;QACI,oBAAoB;QACpB,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;KACvB,CAAC,CAAC;IACP,QAAQ,CACJ,CAAC,EACD,iDAAiD,EACjD;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;KACtB,CAAC,CAAC;IACP,QAAQ,CACJ,CAAC,EACD,mDAAmD,EACnD;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;IACP,QAAQ,CACJ,CAAC,EACD,mDAAmD,EACnD;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;IACP,QAAQ,CACJ,CAAC,EACD,+DAA+D,EAC/D;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;IACP,QAAQ,CACJ,CAAC,EACD,uDAAuD,EACvD;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;IAEP,yDAAyD;IACzD,QAAQ,CACJ,CAAC,EACD,+BAA+B,CAAC,MAAM,CAAC,EAAE,CAAC,EAC1C;QACI,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,SAAS,oBAAoB,CAAC,GAAQ,EAAE,KAAU,EAAE,aAAoB;IACpE,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,aAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;IACzB,wFAAwF;IACxF,oFAAoF;IACpF,qFAAqF;IACrF,uDAAuD;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC;IAEtC,gCAAgC;IAChC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE1E,mCAAmC;IACnC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,GAAG,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAElF,oDAAoD;IACpD,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAE/E,8BAA8B;IAC9B,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAE1E,6BAA6B;IAC7B,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAEhE,mCAAmC;IACnC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAErE,oBAAoB;IACpB,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEtE,gCAAgC;IAChC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;IACxB,wCAAwC;IACxC,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,6CAA6C,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClG,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,gDAAgD,CAAC,CAAC,QAAQ,EAAE,CAAC;IAExG,mFAAmF;IACnF,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC;IAEjF,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE;IACvB,wCAAwC;IACxC,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,8CAA8C,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnG,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,iDAAiD,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEzG,mFAAmF;IACnF,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC;IAEjF,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"fingerprints.test.js","sourceRoot":"","sources":["../src/fingerprints.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuB;AAEvB,uCAAyB;AACzB,2CAA6B;AAE7B,6DAA+C;AAE/C,SAAS,QAAQ,CAAC,CAAiB,EAAE,KAAa,EAAE,cAAwB;IAC1E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,UAAU,UAAkB,EAAE,IAAY;QACvD,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,KAAK,EAAE,CAAC;IACV,CAAC,CAAC;IACF,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,aAAI,CAAC,MAAM,EAAE,CAAC,CAAiB,EAAE,EAAE;IACjC,iBAAiB;IACjB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAExC,iDAAiD;IACjD,QAAQ,CACN,CAAC,EACD,oBAAoB,EACpB;QACE,oBAAoB;QACpB,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;KACrB,CAAC,CAAC;IACL,QAAQ,CACN,CAAC,EACD,iDAAiD,EACjD;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,CAAC;IACL,QAAQ,CACN,CAAC,EACD,mDAAmD,EACnD;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC,CAAC;IACL,QAAQ,CACN,CAAC,EACD,mDAAmD,EACnD;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC,CAAC;IACL,QAAQ,CACN,CAAC,EACD,+DAA+D,EAC/D;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC,CAAC;IACL,QAAQ,CACN,CAAC,EACD,uDAAuD,EACvD;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC,CAAC;IAEL,yDAAyD;IACzD,QAAQ,CACN,CAAC,EACD,+BAA+B,CAAC,MAAM,CAAC,EAAE,CAAC,EAC1C;QACE,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,SAAS,oBAAoB,CAAC,GAAQ,EAAE,KAAU,EAAE,aAAoB;IACtE,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,aAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;IAC3B,wFAAwF;IACxF,oFAAoF;IACpF,qFAAqF;IACrF,uDAAuD;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC;IAEtC,gCAAgC;IAChC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE1E,mCAAmC;IACnC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,GAAG,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAElF,oDAAoD;IACpD,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAE/E,8BAA8B;IAC9B,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAE1E,6BAA6B;IAC7B,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAEhE,mCAAmC;IACnC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAErE,oBAAoB;IACpB,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEtE,gCAAgC;IAChC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;IAC1B,wCAAwC;IACxC,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,6CAA6C,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClG,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,gDAAgD,CAAC,CAAC,QAAQ,EAAE,CAAC;IAExG,mFAAmF;IACnF,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC;IAEjF,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE;IACzB,wCAAwC;IACxC,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,8CAA8C,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnG,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,iDAAiD,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEzG,mFAAmF;IACnF,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC;IAEjF,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/setup-tools.js.map b/lib/setup-tools.js.map index faac02a6f..70c6756eb 100644 --- a/lib/setup-tools.js.map +++ b/lib/setup-tools.js.map @@ -1 +1 @@ -{"version":3,"file":"setup-tools.js","sourceRoot":"","sources":["../src/setup-tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"setup-tools.js","sourceRoot":"","sources":["../src/setup-tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/setup-tools.test.js.map b/lib/setup-tools.test.js.map index 079d93c48..0f211ac18 100644 --- a/lib/setup-tools.test.js.map +++ b/lib/setup-tools.test.js.map @@ -1 +1 @@ -{"version":3,"file":"setup-tools.test.js","sourceRoot":"","sources":["../src/setup-tools.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAiD;AACjD,8CAAuB;AACvB,gDAAwB;AACxB,2CAA6B;AAE7B,0DAA4C;AAC5C,6CAA+B;AAE/B,aAAI,CAAC,8BAA8B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAE3C,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QAEjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE5B,cAAI,CAAC,qBAAqB,CAAC;iBACtB,GAAG,CAAC,2BAA2B,OAAO,uBAAuB,CAAC;iBAC9D,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAC,CAAC;YAGvF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,8CAA8C,OAAO,uBAAuB,CAAC;YAE1G,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAE/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;SAC1D;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE3D,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE;IAExC,MAAM,KAAK,GAAG;QACV,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,kBAAkB;QAChC,cAAc,EAAE,cAAc;QAC9B,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,aAAa;QAC5B,cAAc,EAAE,cAAc;KACjC,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC5D,MAAM,GAAG,GAAG,wCAAwC,OAAO,MAAM,CAAC;QAElE,IAAI;YACA,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE;YACR,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACrB;KACJ;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"setup-tools.test.js","sourceRoot":"","sources":["../src/setup-tools.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAiD;AACjD,8CAAuB;AACvB,gDAAwB;AACxB,2CAA6B;AAE7B,0DAA4C;AAC5C,6CAA+B;AAE/B,aAAI,CAAC,8BAA8B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAE7C,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QAEnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE5B,cAAI,CAAC,qBAAqB,CAAC;iBACxB,GAAG,CAAC,2BAA2B,OAAO,uBAAuB,CAAC;iBAC9D,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAC,CAAC;YAGrF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,8CAA8C,OAAO,uBAAuB,CAAC;YAE1G,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAE/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;SACxD;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE3D,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,aAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE;IAE1C,MAAM,KAAK,GAAG;QACZ,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,kBAAkB;QAChC,cAAc,EAAE,cAAc;QAC9B,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,aAAa;QAC5B,cAAc,EAAE,cAAc;KAC/B,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9D,MAAM,GAAG,GAAG,wCAAwC,OAAO,MAAM,CAAC;QAElE,IAAI;YACF,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACnB;KACF;AACH,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/setup-tracer.js.map b/lib/setup-tracer.js.map index 22ce2bf7e..dd643ffac 100644 --- a/lib/setup-tracer.js.map +++ b/lib/setup-tracer.js.map @@ -1 +1 @@ -{"version":3,"file":"setup-tracer.js","sourceRoot":"","sources":["../src/setup-tracer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"setup-tracer.js","sourceRoot":"","sources":["../src/setup-tracer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/tracer-env.js.map b/lib/tracer-env.js.map index e450532a8..824a4338f 100644 --- a/lib/tracer-env.js.map +++ b/lib/tracer-env.js.map @@ -1 +1 @@ -{"version":3,"file":"tracer-env.js","sourceRoot":"","sources":["../src/tracer-env.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAyB;AAEzB,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;QACpF,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACpB;CACJ;AACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"tracer-env.js","sourceRoot":"","sources":["../src/tracer-env.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAyB;AAEzB,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;QACtF,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAClB;CACF;AACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/upload-lib.js.map b/lib/upload-lib.js.map index 71ac88592..b0dab6fc4 100644 --- a/lib/upload-lib.js.map +++ b/lib/upload-lib.js.map @@ -1 +1 @@ -{"version":3,"file":"upload-lib.js","sourceRoot":"","sources":["../src/upload-lib.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"upload-lib.js","sourceRoot":"","sources":["../src/upload-lib.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsC;AACtC,2DAA6C;AAC7C,gEAAkD;AAClD,wDAA+B;AAC/B,uCAAyB;AACzB,uDAAyC;AACzC,2CAA6B;AAC7B,gDAAwB;AAExB,6DAA+C;AAC/C,gEAAkD;AAClD,6CAA+B;AAE/B,mEAAmE;AACnE,qDAAqD;AACrD,SAAgB,iBAAiB,CAAC,UAAoB;IACpD,IAAI,aAAa,GAAG;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAW;KAClB,CAAC;IAEF,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;QAChC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,sBAAsB;QACtB,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;YAClC,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;SAC7C;aAAM,IAAI,aAAa,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE;YACxD,MAAM,wCAAwC,GAAG,aAAa,CAAC,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;SACxG;QAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC;AAnBD,8CAmBC;AAED,4BAA4B;AAC5B,qEAAqE;AACrE,KAAK,UAAU,aAAa,CAAC,OAAO;IAClC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAE/B,sDAAsD;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC;IAC9D,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAiC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,8BAA8B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,+BAA+B,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,yBAAyB,CAAC;IAE3G,uDAAuD;IACvD,0CAA0C;IAC1C,4DAA4D;IAC5D,2DAA2D;IAC3D,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAElC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAEjE,MAAM,GAAG,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,IAAI,UAAU,KAAK,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;SACb;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAE7D,oEAAoE;QACpE,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE;YACxD,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC;SACd;QAED,gDAAgD;QAChD,IAAI,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE;YACnC,uEAAuE;YACvE,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpF,YAAY,GAAG,SAAS,GAAG,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC;gBACtE,aAAa,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,+BAA+B;YAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACtE,SAAS;SAEV;aAAM;YACL,wEAAwE;YACxE,wDAAwD;YACxD,qEAAqE;YACrE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4DAA4D;AAC5D,kDAAkD;AAClD,qDAAqD;AAC9C,KAAK,UAAU,MAAM,CAAC,KAAa;IACxC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,sCAAsC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;SACd;QACD,OAAO,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;KACtC;SAAM;QACL,OAAO,MAAM,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACnC;AACH,CAAC;AAbD,wBAaC;AAED,uDAAuD;AACvD,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QACxC,UAAU,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;KAClC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAND,kDAMC;AAED,mEAAmE;AACnE,oEAAoE;AACpE,yDAAyD;AACzD,SAAgB,uBAAuB,CAAC,aAAqB;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,kCAAkC,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnG,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;SAAM;QACL,2DAA2D;QAC3D,iFAAiF;QACjF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,qBAAqB,GAAG,aAAa,GAAG,gCAAgC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpH,oFAAoF;QACpF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;QAED,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAtBD,0DAsBC;AAED,wCAAwC;AACxC,qDAAqD;AACrD,KAAK,UAAU,WAAW,CAAC,UAAoB;IAC7C,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAElE,MAAM,cAAc,GAAG,qBAAqB,CAAC;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;QACpH,OAAO,KAAK,CAAC;KACd;IACD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAEpD,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;KACF;IAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAElE,IAAI,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,WAAW,GAAG,kBAAO,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;QAC/B,IAAI,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,GAAuB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;QACtC,MAAM,GAAG,SAAS,CAAC;KACpB;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,YAAY,EAAE,SAAS;QACvB,KAAK,EAAE,GAAG;QACV,cAAc,EAAE,WAAW;QAC3B,eAAe,EAAE,YAAY;QAC7B,OAAO,EAAE,YAAY;QACrB,iBAAiB,EAAE,aAAa;QAChC,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,SAAS;KACxB,CAAC,CAAC;IAEH,4CAA4C;IAC5C,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,CAAC,+BAA+B,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAEhF,kBAAkB;IAClB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,OAAO,SAAS,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/lib/upload-sarif.js.map b/lib/upload-sarif.js.map index 94ed1837d..a647067d0 100644 --- a/lib/upload-sarif.js.map +++ b/lib/upload-sarif.js.map @@ -1 +1 @@ -{"version":3,"file":"upload-sarif.js","sourceRoot":"","sources":["../src/upload-sarif.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AAEtC,yDAA2C;AAC3C,6CAA+B;AAE/B,KAAK,UAAU,GAAG;IACd,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE;QAC9F,OAAO;KACV;IAED,IAAI;QACA,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE;YACtD,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;SACpD;aAAM;YACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SAC3D;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO;KACV;AACL,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,IAAI,CAAC,SAAS,CAAC,qCAAqC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"upload-sarif.js","sourceRoot":"","sources":["../src/upload-sarif.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AAEtC,yDAA2C;AAC3C,6CAA+B;AAE/B,KAAK,UAAU,GAAG;IAChB,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE;QAChG,OAAO;KACR;IAED,IAAI;QACF,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE;YACxD,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;SAClD;aAAM;YACL,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SACzD;KACF;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO;KACR;AACH,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACd,IAAI,CAAC,SAAS,CAAC,qCAAqC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/util.js.map b/lib/util.js.map index 650954e6a..08dc109f2 100644 --- a/lib/util.js.map +++ b/lib/util.js.map @@ -1 +1 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsC;AACtC,oDAAsC;AACtC,2DAA6C;AAC7C,gEAAkD;AAClD,uDAAyC;AACzC,0EAAgD;AAChD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAE7B,gEAAkD;AAElD;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,UAAkB,EAAE,uBAAgC;IAE/E,6DAA6D;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,EAAE;QACrB,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,4EAA4E;IAC5E,IAAI,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,4BAA4B,CAAC,KAAK,SAAS,EAAE;QAChG,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,8EAA8E,CAAC,CAAC;QAC5H,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAhBD,oCAgBC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,mCAAmC,CAAC,CAAC;KAClE;IACD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,kDAOC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;;IAC/B,8DAA8D;IAC9D,MAAM,eAAe,GAAG;QACtB,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,YAAY;QAC1B,QAAQ,EAAE,QAAQ;KACnB,CAAC;IACF,IAAI,QAAQ,SAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE;QACZ,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC5B,SAAS,EAAE,eAAe;YAC1B,GAAG,EAAE,2BAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,mCAAmC,EAAE,CAAC;YACtE,KAAK;YACL,IAAI;SACL,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElE,sEAAsE;QACtE,wFAAwF;QACxF,4FAA4F;QAC5F,qEAAqE;QACrE,IAAI,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAC;QACvC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;YAC9B,IAAI,IAAI,IAAI,eAAe,EAAE;gBAC3B,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;aACtC;SACF;QACD,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;KACvB;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,YAAY;IAEhC,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAChE,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC9B;IACD,8CAA8C;IAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SAC5D,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAExE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,qEAAqE;QACrE,SAAS,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;KAC7E;IAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,uBAAuB,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5E,OAAO,SAAS,CAAC;AACnB,CAAC;AAzBD,oCAyBC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;QAC5C,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAClD;KACF,CAAC,CAAC;IACH,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAVD,oCAUC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAEpD,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5B,SAAS,EAAE,eAAe;QAC1B,GAAG,EAAE,2BAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KACzC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,8CAA8C,EAAE;QACpF,KAAK;QACL,IAAI;QACJ,MAAM;KACP,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;IAEnD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IAEhE,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,cAAc;IAClC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpE,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,OAAO,WAAW,CAAC;KACpB;IAED,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAElD,WAAW,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC;IAC3C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC;AACrB,CAAC;AAZD,wCAYC;AAED;;GAEG;AACH,SAAgB,MAAM;IACpB,0DAA0D;IAC1D,6DAA6D;IAC7D,MAAM,GAAG,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAE9C,gEAAgE;IAChE,yDAAyD;IACzD,iEAAiE;IACjE,2DAA2D;IAC3D,MAAM,cAAc,GAAG,0BAA0B,CAAC;IAClD,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;KACzD;SAAM;QACL,OAAO,GAAG,CAAC;KACZ;AACH,CAAC;AAfD,wBAeC;AAmBD;;;;;;;GAOG;AACH,KAAK,UAAU,kBAAkB,CAC/B,UAAkB,EAClB,MAAc,EACd,KAAc,EACd,SAAkB;IAGlB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACtD,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,gBAAgB,EAAE;QACpB,aAAa,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;KAChD;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9F,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,YAAY,GAAiB;QAC/B,eAAe,EAAE,aAAa;QAC9B,aAAa,EAAE,YAAY;QAC3B,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,SAAS;QACrB,GAAG,EAAE,GAAG;QACR,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,MAAM;KACf,CAAC;IAEF,0BAA0B;IAC1B,IAAI,KAAK,EAAE;QACT,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;KAC5B;IACD,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;KACpC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;QAChD,YAAY,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;KACtD;IACD,IAAI,MAAM,GAAuB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,MAAM,EAAE;QACV,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC;KACnC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,YAA0B;;IACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAEtD,IAAI,CAAC,KAAK,CAAC,yBAAyB,GAAG,gBAAgB,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAiC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,+BAA+B,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;UAC1E,gCAAgC,CAAC;IACrC,MAAM,GAAG,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAE7E,aAAO,GAAG,CAAC,OAAO,0CAAE,UAAU,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAExF,oFAAoF;IACpF,+EAA+E;IAC/E,8DAA8D;IAC9D,EAAE;IACF,+EAA+E;IAC/E,4BAA4B;IAC5B,IAAI,UAAU,KAAK,GAAG,EAAE;QACtB,IAAI,CAAC,SAAS,CAAC,mFAAmF,CAAC,CAAC;QACpG,OAAO,KAAK,CAAC;KACd;IACD,IAAI,UAAU,KAAK,GAAG,EAAE;QACtB,IAAI,CAAC,SAAS,CAAC,uEAAuE,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,oDAmBC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAc,EAAE,SAAkB;IACzF,MAAM,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACxF,CAAC;AAFD,gDAEC;AAED;;;;;GAKG;AACI,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACxD,MAAM,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,sDAEC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,aAAqB;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7D,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC/B;KACF;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAbD,oCAaC;AAED,6FAA6F;AAC7F,wCAAwC;AACjC,KAAK,UAAU,UAAU,CAAI,IAAoC;IACtE,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,gCAKC;AAED;;;;;GAKG;AACH,SAAgB,aAAa;IAC3B,IAAI,oBAA4B,CAAC;IACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,iBAAiB,EAAE;QACrB,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,IAAI,CAAC,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;SAClF;KACF;SAAM;QACL,MAAM,gBAAgB,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC9D,MAAM,6BAA6B,GAAG,GAAG,CAAC;QAC1C,oBAAoB,GAAG,oBAAoB,GAAG,6BAA6B,CAAC;KAC7E;IACD,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAfD,sCAeC;AAED;;;;;GAKG;AACH,SAAgB,cAAc;IAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,gBAAgB,EAAE;QACpB,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,gBAAgB,eAAe,CAAC,CAAC;SAC9E;QACD,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACpC,IAAI,UAAU,GAAG,UAAU,EAAE;YAC3B,UAAU,GAAG,UAAU,CAAC;SACzB;QACD,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC;QAC/B,IAAI,UAAU,GAAG,UAAU,EAAE;YAC3B,UAAU,GAAG,UAAU,CAAC;SACzB;KACF;IACD,OAAO,aAAa,UAAU,EAAE,CAAC;AACnC,CAAC;AAlBD,wCAkBC"} \ No newline at end of file diff --git a/src/analysis-paths.test.ts b/src/analysis-paths.test.ts index 22a21abc9..c6596465a 100644 --- a/src/analysis-paths.test.ts +++ b/src/analysis-paths.test.ts @@ -4,17 +4,17 @@ import * as analysisPaths from './analysis-paths'; import * as configUtils from './config-utils'; test("emptyPaths", async t => { - let config = new configUtils.Config(); - analysisPaths.includeAndExcludeAnalysisPaths(config, []); - t.is(process.env['LGTM_INDEX_INCLUDE'], undefined); - t.is(process.env['LGTM_INDEX_EXCLUDE'], undefined); + let config = new configUtils.Config(); + analysisPaths.includeAndExcludeAnalysisPaths(config, []); + t.is(process.env['LGTM_INDEX_INCLUDE'], undefined); + t.is(process.env['LGTM_INDEX_EXCLUDE'], undefined); }); test("nonEmptyPaths", async t => { - let config = new configUtils.Config(); - config.paths.push('path1', 'path2'); - config.pathsIgnore.push('path3', 'path4'); - analysisPaths.includeAndExcludeAnalysisPaths(config, []); - t.is(process.env['LGTM_INDEX_INCLUDE'], 'path1\npath2'); - t.is(process.env['LGTM_INDEX_EXCLUDE'], 'path3\npath4'); + let config = new configUtils.Config(); + config.paths.push('path1', 'path2'); + config.pathsIgnore.push('path3', 'path4'); + analysisPaths.includeAndExcludeAnalysisPaths(config, []); + t.is(process.env['LGTM_INDEX_INCLUDE'], 'path1\npath2'); + t.is(process.env['LGTM_INDEX_EXCLUDE'], 'path3\npath4'); }); diff --git a/src/analysis-paths.ts b/src/analysis-paths.ts index 2b7451e7c..6a88da05f 100644 --- a/src/analysis-paths.ts +++ b/src/analysis-paths.ts @@ -3,21 +3,21 @@ import * as core from '@actions/core'; import * as configUtils from './config-utils'; export function includeAndExcludeAnalysisPaths(config: configUtils.Config, languages: string[]) { - if (config.paths.length !== 0) { - core.exportVariable('LGTM_INDEX_INCLUDE', config.paths.join('\n')); - } + if (config.paths.length !== 0) { + core.exportVariable('LGTM_INDEX_INCLUDE', config.paths.join('\n')); + } - if (config.pathsIgnore.length !== 0) { - core.exportVariable('LGTM_INDEX_EXCLUDE', config.pathsIgnore.join('\n')); - } + if (config.pathsIgnore.length !== 0) { + core.exportVariable('LGTM_INDEX_EXCLUDE', config.pathsIgnore.join('\n')); + } - function isInterpretedLanguage(language): boolean { - return language === 'javascript' || language === 'python'; - } + function isInterpretedLanguage(language): boolean { + return language === 'javascript' || language === 'python'; + } - // Index include/exclude only work in javascript and python - // If some other language is detected/configured show a warning - if ((config.paths.length !== 0 || config.pathsIgnore.length !== 0) && !languages.every(isInterpretedLanguage)) { - core.warning('The "paths"/"paths-ignore" fields of the config only have effect for Javascript and Python'); - } + // Index include/exclude only work in javascript and python + // If some other language is detected/configured show a warning + if ((config.paths.length !== 0 || config.pathsIgnore.length !== 0) && !languages.every(isInterpretedLanguage)) { + core.warning('The "paths"/"paths-ignore" fields of the config only have effect for Javascript and Python'); + } } diff --git a/src/config-utils.ts b/src/config-utils.ts index 7e92e30ce..ca9ad82a0 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -14,14 +14,14 @@ const PATHS_IGNORE_PROPERTY = 'paths-ignore'; const PATHS_PROPERTY = 'paths'; export class ExternalQuery { - public repository: string; - public ref: string; - public path = ''; - - constructor(repository: string, ref: string) { - this.repository = repository; - this.ref = ref; - } + public repository: string; + public ref: string; + public path = ''; + + constructor(repository: string, ref: string) { + this.repository = repository; + this.ref = ref; + } } // The set of acceptable values for built-in suites from the codeql bundle @@ -30,255 +30,255 @@ const builtinSuites = ['security-extended', 'security-and-quality'] as const; type BuiltInSuite = typeof builtinSuites[number]; export class Config { - public name = ""; - public disableDefaultQueries = false; - public additionalQueries: string[] = []; - public externalQueries: ExternalQuery[] = []; - public additionalSuites: BuiltInSuite[] = []; - public pathsIgnore: string[] = []; - public paths: string[] = []; - - public addQuery(configFile: string, queryUses: string) { - // The logic for parsing the string is based on what actions does for - // parsing the 'uses' actions in the workflow file - queryUses = queryUses.trim(); - if (queryUses === "") { - throw new Error(getQueryUsesInvalid(configFile)); - } - - // Check for the local path case before we start trying to parse the repository name - if (queryUses.startsWith("./")) { - const localQueryPath = queryUses.slice(2); - // Resolve the local path against the workspace so that when this is - // passed to codeql it resolves to exactly the path we expect it to resolve to. - const workspacePath = fs.realpathSync(util.getRequiredEnvParam('GITHUB_WORKSPACE')); - let absoluteQueryPath = path.join(workspacePath, localQueryPath); - - // Check the file exists - if (!fs.existsSync(absoluteQueryPath)) { - throw new Error(getLocalPathDoesNotExist(configFile, localQueryPath)); - } - - // Call this after checking file exists, because it'll fail if file doesn't exist - absoluteQueryPath = fs.realpathSync(absoluteQueryPath); - - // Check the local path doesn't jump outside the repo using '..' or symlinks - if (!(absoluteQueryPath + path.sep).startsWith(workspacePath + path.sep)) { - throw new Error(getLocalPathOutsideOfRepository(configFile, localQueryPath)); - } - - this.additionalQueries.push(absoluteQueryPath); - return; - } - - // Check for one of the builtin suites - if (queryUses.indexOf('/') === -1 && queryUses.indexOf('@') === -1) { - const suite = builtinSuites.find((suite) => suite === queryUses); - if (suite) { - this.additionalSuites.push(suite); - return; - } else { - throw new Error(getQueryUsesInvalid(configFile, queryUses)); - } - } - - let tok = queryUses.split('@'); - if (tok.length !== 2) { - throw new Error(getQueryUsesInvalid(configFile, queryUses)); - } - - const ref = tok[1]; - tok = tok[0].split('/'); - // The first token is the owner - // The second token is the repo - // The rest is a path, if there is more than one token combine them to form the full path - if (tok.length < 2) { - throw new Error(getQueryUsesInvalid(configFile, queryUses)); - } - if (tok.length > 3) { - tok = [tok[0], tok[1], tok.slice(2).join('/')]; - } - - // Check none of the parts of the repository name are empty - if (tok[0].trim() === '' || tok[1].trim() === '') { - throw new Error(getQueryUsesInvalid(configFile, queryUses)); - } - - let external = new ExternalQuery(tok[0] + '/' + tok[1], ref); - if (tok.length === 3) { - external.path = tok[2]; - } - this.externalQueries.push(external); + public name = ""; + public disableDefaultQueries = false; + public additionalQueries: string[] = []; + public externalQueries: ExternalQuery[] = []; + public additionalSuites: BuiltInSuite[] = []; + public pathsIgnore: string[] = []; + public paths: string[] = []; + + public addQuery(configFile: string, queryUses: string) { + // The logic for parsing the string is based on what actions does for + // parsing the 'uses' actions in the workflow file + queryUses = queryUses.trim(); + if (queryUses === "") { + throw new Error(getQueryUsesInvalid(configFile)); + } + + // Check for the local path case before we start trying to parse the repository name + if (queryUses.startsWith("./")) { + const localQueryPath = queryUses.slice(2); + // Resolve the local path against the workspace so that when this is + // passed to codeql it resolves to exactly the path we expect it to resolve to. + const workspacePath = fs.realpathSync(util.getRequiredEnvParam('GITHUB_WORKSPACE')); + let absoluteQueryPath = path.join(workspacePath, localQueryPath); + + // Check the file exists + if (!fs.existsSync(absoluteQueryPath)) { + throw new Error(getLocalPathDoesNotExist(configFile, localQueryPath)); + } + + // Call this after checking file exists, because it'll fail if file doesn't exist + absoluteQueryPath = fs.realpathSync(absoluteQueryPath); + + // Check the local path doesn't jump outside the repo using '..' or symlinks + if (!(absoluteQueryPath + path.sep).startsWith(workspacePath + path.sep)) { + throw new Error(getLocalPathOutsideOfRepository(configFile, localQueryPath)); + } + + this.additionalQueries.push(absoluteQueryPath); + return; + } + + // Check for one of the builtin suites + if (queryUses.indexOf('/') === -1 && queryUses.indexOf('@') === -1) { + const suite = builtinSuites.find((suite) => suite === queryUses); + if (suite) { + this.additionalSuites.push(suite); + return; + } else { + throw new Error(getQueryUsesInvalid(configFile, queryUses)); + } + } + + let tok = queryUses.split('@'); + if (tok.length !== 2) { + throw new Error(getQueryUsesInvalid(configFile, queryUses)); + } + + const ref = tok[1]; + tok = tok[0].split('/'); + // The first token is the owner + // The second token is the repo + // The rest is a path, if there is more than one token combine them to form the full path + if (tok.length < 2) { + throw new Error(getQueryUsesInvalid(configFile, queryUses)); + } + if (tok.length > 3) { + tok = [tok[0], tok[1], tok.slice(2).join('/')]; + } + + // Check none of the parts of the repository name are empty + if (tok[0].trim() === '' || tok[1].trim() === '') { + throw new Error(getQueryUsesInvalid(configFile, queryUses)); + } + + let external = new ExternalQuery(tok[0] + '/' + tok[1], ref); + if (tok.length === 3) { + external.path = tok[2]; } + this.externalQueries.push(external); + } } export function getNameInvalid(configFile: string): string { - return getConfigFilePropertyError(configFile, NAME_PROPERTY, 'must be a non-empty string'); + return getConfigFilePropertyError(configFile, NAME_PROPERTY, 'must be a non-empty string'); } export function getDisableDefaultQueriesInvalid(configFile: string): string { - return getConfigFilePropertyError(configFile, DISPLAY_DEFAULT_QUERIES_PROPERTY, 'must be a boolean'); + return getConfigFilePropertyError(configFile, DISPLAY_DEFAULT_QUERIES_PROPERTY, 'must be a boolean'); } export function getQueriesInvalid(configFile: string): string { - return getConfigFilePropertyError(configFile, QUERIES_PROPERTY, 'must be an array'); + return getConfigFilePropertyError(configFile, QUERIES_PROPERTY, 'must be an array'); } export function getQueryUsesInvalid(configFile: string, queryUses?: string): string { - return getConfigFilePropertyError( - configFile, - QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, - 'must be a built-in suite (' + builtinSuites.join(' or ') + - '), a relative path, or be of the form "owner/repo[/path]@ref"' + - (queryUses !== undefined ? '\n Found: ' + queryUses : '')); + return getConfigFilePropertyError( + configFile, + QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, + 'must be a built-in suite (' + builtinSuites.join(' or ') + + '), a relative path, or be of the form "owner/repo[/path]@ref"' + + (queryUses !== undefined ? '\n Found: ' + queryUses : '')); } export function getPathsIgnoreInvalid(configFile: string): string { - return getConfigFilePropertyError(configFile, PATHS_IGNORE_PROPERTY, 'must be an array of non-empty strings'); + return getConfigFilePropertyError(configFile, PATHS_IGNORE_PROPERTY, 'must be an array of non-empty strings'); } export function getPathsInvalid(configFile: string): string { - return getConfigFilePropertyError(configFile, PATHS_PROPERTY, 'must be an array of non-empty strings'); + return getConfigFilePropertyError(configFile, PATHS_PROPERTY, 'must be an array of non-empty strings'); } export function getLocalPathOutsideOfRepository(configFile: string, localPath: string): string { - return getConfigFilePropertyError( - configFile, - QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, - 'is invalid as the local path "' + localPath + '" is outside of the repository'); + return getConfigFilePropertyError( + configFile, + QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, + 'is invalid as the local path "' + localPath + '" is outside of the repository'); } export function getLocalPathDoesNotExist(configFile: string, localPath: string): string { - return getConfigFilePropertyError( - configFile, - QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, - 'is invalid as the local path "' + localPath + '" does not exist in the repository'); + return getConfigFilePropertyError( + configFile, + QUERIES_PROPERTY + '.' + QUERIES_USES_PROPERTY, + 'is invalid as the local path "' + localPath + '" does not exist in the repository'); } export function getConfigFileOutsideWorkspaceErrorMessage(configFile: string): string { - return 'The configuration file "' + configFile + '" is outside of the workspace'; + return 'The configuration file "' + configFile + '" is outside of the workspace'; } export function getConfigFileDoesNotExistErrorMessage(configFile: string): string { - return 'The configuration file "' + configFile + '" does not exist'; + return 'The configuration file "' + configFile + '" does not exist'; } function getConfigFilePropertyError(configFile: string, property: string, error: string): string { - return 'The configuration file "' + configFile + '" is invalid: property "' + property + '" ' + error; + return 'The configuration file "' + configFile + '" is invalid: property "' + property + '" ' + error; } function initConfig(): Config { - let configFile = core.getInput('config-file'); + let configFile = core.getInput('config-file'); - const config = new Config(); + const config = new Config(); - // If no config file was provided create an empty one - if (configFile === '') { - core.debug('No configuration file was provided'); - return config; - } + // If no config file was provided create an empty one + if (configFile === '') { + core.debug('No configuration file was provided'); + return config; + } - // Treat the config file as relative to the workspace - const workspacePath = util.getRequiredEnvParam('GITHUB_WORKSPACE'); - configFile = path.resolve(workspacePath, configFile); + // Treat the config file as relative to the workspace + const workspacePath = util.getRequiredEnvParam('GITHUB_WORKSPACE'); + configFile = path.resolve(workspacePath, configFile); - // Error if the config file is now outside of the workspace - if (!(configFile + path.sep).startsWith(workspacePath + path.sep)) { - throw new Error(getConfigFileOutsideWorkspaceErrorMessage(configFile)); - } + // Error if the config file is now outside of the workspace + if (!(configFile + path.sep).startsWith(workspacePath + path.sep)) { + throw new Error(getConfigFileOutsideWorkspaceErrorMessage(configFile)); + } - // Error if the file does not exist - if (!fs.existsSync(configFile)) { - throw new Error(getConfigFileDoesNotExistErrorMessage(configFile)); - } + // Error if the file does not exist + if (!fs.existsSync(configFile)) { + throw new Error(getConfigFileDoesNotExistErrorMessage(configFile)); + } - const parsedYAML = yaml.safeLoad(fs.readFileSync(configFile, 'utf8')); + const parsedYAML = yaml.safeLoad(fs.readFileSync(configFile, 'utf8')); - if (NAME_PROPERTY in parsedYAML) { - if (typeof parsedYAML[NAME_PROPERTY] !== "string") { - throw new Error(getNameInvalid(configFile)); - } - if (parsedYAML[NAME_PROPERTY].length === 0) { - throw new Error(getNameInvalid(configFile)); - } - config.name = parsedYAML[NAME_PROPERTY]; + if (NAME_PROPERTY in parsedYAML) { + if (typeof parsedYAML[NAME_PROPERTY] !== "string") { + throw new Error(getNameInvalid(configFile)); } - - if (DISPLAY_DEFAULT_QUERIES_PROPERTY in parsedYAML) { - if (typeof parsedYAML[DISPLAY_DEFAULT_QUERIES_PROPERTY] !== "boolean") { - throw new Error(getDisableDefaultQueriesInvalid(configFile)); - } - config.disableDefaultQueries = parsedYAML[DISPLAY_DEFAULT_QUERIES_PROPERTY]; + if (parsedYAML[NAME_PROPERTY].length === 0) { + throw new Error(getNameInvalid(configFile)); } + config.name = parsedYAML[NAME_PROPERTY]; + } - if (QUERIES_PROPERTY in parsedYAML) { - if (!(parsedYAML[QUERIES_PROPERTY] instanceof Array)) { - throw new Error(getQueriesInvalid(configFile)); - } - parsedYAML[QUERIES_PROPERTY].forEach(query => { - if (!(QUERIES_USES_PROPERTY in query) || typeof query[QUERIES_USES_PROPERTY] !== "string") { - throw new Error(getQueryUsesInvalid(configFile)); - } - config.addQuery(configFile, query[QUERIES_USES_PROPERTY]); - }); + if (DISPLAY_DEFAULT_QUERIES_PROPERTY in parsedYAML) { + if (typeof parsedYAML[DISPLAY_DEFAULT_QUERIES_PROPERTY] !== "boolean") { + throw new Error(getDisableDefaultQueriesInvalid(configFile)); } + config.disableDefaultQueries = parsedYAML[DISPLAY_DEFAULT_QUERIES_PROPERTY]; + } - if (PATHS_IGNORE_PROPERTY in parsedYAML) { - if (!(parsedYAML[PATHS_IGNORE_PROPERTY] instanceof Array)) { - throw new Error(getPathsIgnoreInvalid(configFile)); - } - parsedYAML[PATHS_IGNORE_PROPERTY].forEach(path => { - if (typeof path !== "string" || path === '') { - throw new Error(getPathsIgnoreInvalid(configFile)); - } - config.pathsIgnore.push(path); - }); + if (QUERIES_PROPERTY in parsedYAML) { + if (!(parsedYAML[QUERIES_PROPERTY] instanceof Array)) { + throw new Error(getQueriesInvalid(configFile)); } - - if (PATHS_PROPERTY in parsedYAML) { - if (!(parsedYAML[PATHS_PROPERTY] instanceof Array)) { - throw new Error(getPathsInvalid(configFile)); - } - parsedYAML[PATHS_PROPERTY].forEach(path => { - if (typeof path !== "string" || path === '') { - throw new Error(getPathsInvalid(configFile)); - } - config.paths.push(path); - }); + parsedYAML[QUERIES_PROPERTY].forEach(query => { + if (!(QUERIES_USES_PROPERTY in query) || typeof query[QUERIES_USES_PROPERTY] !== "string") { + throw new Error(getQueryUsesInvalid(configFile)); + } + config.addQuery(configFile, query[QUERIES_USES_PROPERTY]); + }); + } + + if (PATHS_IGNORE_PROPERTY in parsedYAML) { + if (!(parsedYAML[PATHS_IGNORE_PROPERTY] instanceof Array)) { + throw new Error(getPathsIgnoreInvalid(configFile)); } - - return config; + parsedYAML[PATHS_IGNORE_PROPERTY].forEach(path => { + if (typeof path !== "string" || path === '') { + throw new Error(getPathsIgnoreInvalid(configFile)); + } + config.pathsIgnore.push(path); + }); + } + + if (PATHS_PROPERTY in parsedYAML) { + if (!(parsedYAML[PATHS_PROPERTY] instanceof Array)) { + throw new Error(getPathsInvalid(configFile)); + } + parsedYAML[PATHS_PROPERTY].forEach(path => { + if (typeof path !== "string" || path === '') { + throw new Error(getPathsInvalid(configFile)); + } + config.paths.push(path); + }); + } + + return config; } function getConfigFolder(): string { - return util.getRequiredEnvParam('RUNNER_TEMP'); + return util.getRequiredEnvParam('RUNNER_TEMP'); } export function getConfigFile(): string { - return path.join(getConfigFolder(), 'config'); + return path.join(getConfigFolder(), 'config'); } async function saveConfig(config: Config) { - const configString = JSON.stringify(config); - await io.mkdirP(getConfigFolder()); - fs.writeFileSync(getConfigFile(), configString, 'utf8'); - core.debug('Saved config:'); - core.debug(configString); + const configString = JSON.stringify(config); + await io.mkdirP(getConfigFolder()); + fs.writeFileSync(getConfigFile(), configString, 'utf8'); + core.debug('Saved config:'); + core.debug(configString); } export async function loadConfig(): Promise { - const configFile = getConfigFile(); - if (fs.existsSync(configFile)) { - const configString = fs.readFileSync(configFile, 'utf8'); - core.debug('Loaded config:'); - core.debug(configString); - return JSON.parse(configString); - - } else { - const config = initConfig(); - core.debug('Initialized config:'); - core.debug(JSON.stringify(config)); - await saveConfig(config); - return config; - } + const configFile = getConfigFile(); + if (fs.existsSync(configFile)) { + const configString = fs.readFileSync(configFile, 'utf8'); + core.debug('Loaded config:'); + core.debug(configString); + return JSON.parse(configString); + + } else { + const config = initConfig(); + core.debug('Initialized config:'); + core.debug(JSON.stringify(config)); + await saveConfig(config); + return config; + } } diff --git a/src/external-queries.test.ts b/src/external-queries.test.ts index 255fab619..3705d6df6 100644 --- a/src/external-queries.test.ts +++ b/src/external-queries.test.ts @@ -7,16 +7,16 @@ import * as externalQueries from "./external-queries"; import * as util from "./util"; test("checkoutExternalQueries", async t => { - let config = new configUtils.Config(); - config.externalQueries = [ - new configUtils.ExternalQuery("github/codeql-go", "df4c6869212341b601005567381944ed90906b6b"), - ]; + let config = new configUtils.Config(); + config.externalQueries = [ + new configUtils.ExternalQuery("github/codeql-go", "df4c6869212341b601005567381944ed90906b6b"), + ]; - await util.withTmpDir(async tmpDir => { - process.env["RUNNER_TEMP"] = tmpDir; - await externalQueries.checkoutExternalQueries(config); + await util.withTmpDir(async tmpDir => { + process.env["RUNNER_TEMP"] = tmpDir; + await externalQueries.checkoutExternalQueries(config); - // COPYRIGHT file existed in df4c6869212341b601005567381944ed90906b6b but not in master - t.true(fs.existsSync(path.join(tmpDir, "github", "codeql-go", "COPYRIGHT"))); - }); + // COPYRIGHT file existed in df4c6869212341b601005567381944ed90906b6b but not in master + t.true(fs.existsSync(path.join(tmpDir, "github", "codeql-go", "COPYRIGHT"))); + }); }); diff --git a/src/fingerprints.test.ts b/src/fingerprints.test.ts index 327bb1dd3..a145f969f 100644 --- a/src/fingerprints.test.ts +++ b/src/fingerprints.test.ts @@ -6,185 +6,185 @@ import * as path from 'path'; import * as fingerprints from './fingerprints'; function testHash(t: ava.Assertions, input: string, expectedHashes: string[]) { - let index = 0; - let callback = function (lineNumber: number, hash: string) { - t.is(lineNumber, index + 1); - t.is(hash, expectedHashes[index]); - index++; - }; - fingerprints.hash(callback, input); - t.is(index, input.split(/\r\n|\r|\n/).length); + let index = 0; + let callback = function (lineNumber: number, hash: string) { + t.is(lineNumber, index + 1); + t.is(hash, expectedHashes[index]); + index++; + }; + fingerprints.hash(callback, input); + t.is(index, input.split(/\r\n|\r|\n/).length); } test('hash', (t: ava.Assertions) => { - // Try empty file - testHash(t, "", ["c129715d7a2bc9a3:1"]); - - // Try various combinations of newline characters - testHash( - t, - " a\nb\n \t\tc\n d", - [ - "271789c17abda88f:1", - "54703d4cd895b18:1", - "180aee12dab6264:1", - "a23a3dc5e078b07b:1" - ]); - testHash( - t, - " hello; \t\nworld!!!\n\n\n \t\tGreetings\n End", - [ - "8b7cf3e952e7aeb2:1", - "b1ae1287ec4718d9:1", - "bff680108adb0fcc:1", - "c6805c5e1288b612:1", - "b86d3392aea1be30:1", - "e6ceba753e1a442:1", - ]); - testHash( - t, - " hello; \t\nworld!!!\n\n\n \t\tGreetings\n End\n", - [ - "e9496ae3ebfced30:1", - "fb7c023a8b9ccb3f:1", - "ce8ba1a563dcdaca:1", - "e20e36e16fcb0cc8:1", - "b3edc88f2938467e:1", - "c8e28b0b4002a3a0:1", - "c129715d7a2bc9a3:1", - ]); - testHash( - t, - " hello; \t\nworld!!!\r\r\r \t\tGreetings\r End\r", - [ - "e9496ae3ebfced30:1", - "fb7c023a8b9ccb3f:1", - "ce8ba1a563dcdaca:1", - "e20e36e16fcb0cc8:1", - "b3edc88f2938467e:1", - "c8e28b0b4002a3a0:1", - "c129715d7a2bc9a3:1", - ]); - testHash( - t, - " hello; \t\r\nworld!!!\r\n\r\n\r\n \t\tGreetings\r\n End\r\n", - [ - "e9496ae3ebfced30:1", - "fb7c023a8b9ccb3f:1", - "ce8ba1a563dcdaca:1", - "e20e36e16fcb0cc8:1", - "b3edc88f2938467e:1", - "c8e28b0b4002a3a0:1", - "c129715d7a2bc9a3:1", - ]); - testHash( - t, - " hello; \t\nworld!!!\r\n\n\r \t\tGreetings\r End\r\n", - [ - "e9496ae3ebfced30:1", - "fb7c023a8b9ccb3f:1", - "ce8ba1a563dcdaca:1", - "e20e36e16fcb0cc8:1", - "b3edc88f2938467e:1", - "c8e28b0b4002a3a0:1", - "c129715d7a2bc9a3:1", - ]); - - // Try repeating line that will generate identical hashes - testHash( - t, - "Lorem ipsum dolor sit amet.\n".repeat(10), - [ - "a7f2ff13bc495cf2:1", - "a7f2ff13bc495cf2:2", - "a7f2ff13bc495cf2:3", - "a7f2ff13bc495cf2:4", - "a7f2ff13bc495cf2:5", - "a7f2ff13bc495cf2:6", - "a7f2ff1481e87703:1", - "a9cf91f7bbf1862b:1", - "55ec222b86bcae53:1", - "cc97dc7b1d7d8f7b:1", - "c129715d7a2bc9a3:1" - ]); + // Try empty file + testHash(t, "", ["c129715d7a2bc9a3:1"]); + + // Try various combinations of newline characters + testHash( + t, + " a\nb\n \t\tc\n d", + [ + "271789c17abda88f:1", + "54703d4cd895b18:1", + "180aee12dab6264:1", + "a23a3dc5e078b07b:1" + ]); + testHash( + t, + " hello; \t\nworld!!!\n\n\n \t\tGreetings\n End", + [ + "8b7cf3e952e7aeb2:1", + "b1ae1287ec4718d9:1", + "bff680108adb0fcc:1", + "c6805c5e1288b612:1", + "b86d3392aea1be30:1", + "e6ceba753e1a442:1", + ]); + testHash( + t, + " hello; \t\nworld!!!\n\n\n \t\tGreetings\n End\n", + [ + "e9496ae3ebfced30:1", + "fb7c023a8b9ccb3f:1", + "ce8ba1a563dcdaca:1", + "e20e36e16fcb0cc8:1", + "b3edc88f2938467e:1", + "c8e28b0b4002a3a0:1", + "c129715d7a2bc9a3:1", + ]); + testHash( + t, + " hello; \t\nworld!!!\r\r\r \t\tGreetings\r End\r", + [ + "e9496ae3ebfced30:1", + "fb7c023a8b9ccb3f:1", + "ce8ba1a563dcdaca:1", + "e20e36e16fcb0cc8:1", + "b3edc88f2938467e:1", + "c8e28b0b4002a3a0:1", + "c129715d7a2bc9a3:1", + ]); + testHash( + t, + " hello; \t\r\nworld!!!\r\n\r\n\r\n \t\tGreetings\r\n End\r\n", + [ + "e9496ae3ebfced30:1", + "fb7c023a8b9ccb3f:1", + "ce8ba1a563dcdaca:1", + "e20e36e16fcb0cc8:1", + "b3edc88f2938467e:1", + "c8e28b0b4002a3a0:1", + "c129715d7a2bc9a3:1", + ]); + testHash( + t, + " hello; \t\nworld!!!\r\n\n\r \t\tGreetings\r End\r\n", + [ + "e9496ae3ebfced30:1", + "fb7c023a8b9ccb3f:1", + "ce8ba1a563dcdaca:1", + "e20e36e16fcb0cc8:1", + "b3edc88f2938467e:1", + "c8e28b0b4002a3a0:1", + "c129715d7a2bc9a3:1", + ]); + + // Try repeating line that will generate identical hashes + testHash( + t, + "Lorem ipsum dolor sit amet.\n".repeat(10), + [ + "a7f2ff13bc495cf2:1", + "a7f2ff13bc495cf2:2", + "a7f2ff13bc495cf2:3", + "a7f2ff13bc495cf2:4", + "a7f2ff13bc495cf2:5", + "a7f2ff13bc495cf2:6", + "a7f2ff1481e87703:1", + "a9cf91f7bbf1862b:1", + "55ec222b86bcae53:1", + "cc97dc7b1d7d8f7b:1", + "c129715d7a2bc9a3:1" + ]); }); function testResolveUriToFile(uri: any, index: any, artifactsURIs: any[]) { - const location = { "uri": uri, "index": index }; - const artifacts = artifactsURIs.map(uri => ({ "location": { "uri": uri } })); - return fingerprints.resolveUriToFile(location, artifacts); + const location = { "uri": uri, "index": index }; + const artifacts = artifactsURIs.map(uri => ({ "location": { "uri": uri } })); + return fingerprints.resolveUriToFile(location, artifacts); } test('resolveUriToFile', t => { - // The resolveUriToFile method checks that the file exists and is in the right directory - // so we need to give it real files to look at. We will use this file as an example. - // For this to work we require the current working directory to be a parent, but this - // should generally always be the case so this is fine. - const cwd = process.cwd(); - const filepath = __filename; - t.true(filepath.startsWith(cwd + '/')); - const relativeFilepaht = filepath.substring(cwd.length + 1); - - process.env['GITHUB_WORKSPACE'] = cwd; - - // Absolute paths are unmodified - t.is(testResolveUriToFile(filepath, undefined, []), filepath); - t.is(testResolveUriToFile('file://' + filepath, undefined, []), filepath); - - // Relative paths are made absolute - t.is(testResolveUriToFile(relativeFilepaht, undefined, []), filepath); - t.is(testResolveUriToFile('file://' + relativeFilepaht, undefined, []), filepath); - - // Absolute paths outside the src root are discarded - t.is(testResolveUriToFile('/src/foo/bar.js', undefined, []), undefined); - t.is(testResolveUriToFile('file:///src/foo/bar.js', undefined, []), undefined); - - // Other schemes are discarded - t.is(testResolveUriToFile('https://' + filepath, undefined, []), undefined); - t.is(testResolveUriToFile('ftp://' + filepath, undefined, []), undefined); - - // Invalid URIs are discarded - t.is(testResolveUriToFile(1, undefined, []), undefined); - t.is(testResolveUriToFile(undefined, undefined, []), undefined); - - // Non-existant files are discarded - t.is(testResolveUriToFile(filepath + '2', undefined, []), undefined); - - // Index is resolved - t.is(testResolveUriToFile(undefined, 0, [filepath]), filepath); - t.is(testResolveUriToFile(undefined, 1, ['foo', filepath]), filepath); - - // Invalid indexes are discarded - t.is(testResolveUriToFile(undefined, 1, [filepath]), undefined); - t.is(testResolveUriToFile(undefined, '0', [filepath]), undefined); + // The resolveUriToFile method checks that the file exists and is in the right directory + // so we need to give it real files to look at. We will use this file as an example. + // For this to work we require the current working directory to be a parent, but this + // should generally always be the case so this is fine. + const cwd = process.cwd(); + const filepath = __filename; + t.true(filepath.startsWith(cwd + '/')); + const relativeFilepaht = filepath.substring(cwd.length + 1); + + process.env['GITHUB_WORKSPACE'] = cwd; + + // Absolute paths are unmodified + t.is(testResolveUriToFile(filepath, undefined, []), filepath); + t.is(testResolveUriToFile('file://' + filepath, undefined, []), filepath); + + // Relative paths are made absolute + t.is(testResolveUriToFile(relativeFilepaht, undefined, []), filepath); + t.is(testResolveUriToFile('file://' + relativeFilepaht, undefined, []), filepath); + + // Absolute paths outside the src root are discarded + t.is(testResolveUriToFile('/src/foo/bar.js', undefined, []), undefined); + t.is(testResolveUriToFile('file:///src/foo/bar.js', undefined, []), undefined); + + // Other schemes are discarded + t.is(testResolveUriToFile('https://' + filepath, undefined, []), undefined); + t.is(testResolveUriToFile('ftp://' + filepath, undefined, []), undefined); + + // Invalid URIs are discarded + t.is(testResolveUriToFile(1, undefined, []), undefined); + t.is(testResolveUriToFile(undefined, undefined, []), undefined); + + // Non-existant files are discarded + t.is(testResolveUriToFile(filepath + '2', undefined, []), undefined); + + // Index is resolved + t.is(testResolveUriToFile(undefined, 0, [filepath]), filepath); + t.is(testResolveUriToFile(undefined, 1, ['foo', filepath]), filepath); + + // Invalid indexes are discarded + t.is(testResolveUriToFile(undefined, 1, [filepath]), undefined); + t.is(testResolveUriToFile(undefined, '0', [filepath]), undefined); }); test('addFingerprints', t => { - // Run an end-to-end test on a test file - let input = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting.input.sarif').toString(); - let expected = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting.expected.sarif').toString(); + // Run an end-to-end test on a test file + let input = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting.input.sarif').toString(); + let expected = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting.expected.sarif').toString(); - // The test files are stored prettified, but addFingerprints outputs condensed JSON - input = JSON.stringify(JSON.parse(input)); - expected = JSON.stringify(JSON.parse(expected)); + // The test files are stored prettified, but addFingerprints outputs condensed JSON + input = JSON.stringify(JSON.parse(input)); + expected = JSON.stringify(JSON.parse(expected)); - // The URIs in the SARIF files resolve to files in the testdata directory - process.env['GITHUB_WORKSPACE'] = path.normalize(__dirname + '/../src/testdata'); + // The URIs in the SARIF files resolve to files in the testdata directory + process.env['GITHUB_WORKSPACE'] = path.normalize(__dirname + '/../src/testdata'); - t.deepEqual(fingerprints.addFingerprints(input), expected); + t.deepEqual(fingerprints.addFingerprints(input), expected); }); test('missingRegions', t => { - // Run an end-to-end test on a test file - let input = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting2.input.sarif').toString(); - let expected = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting2.expected.sarif').toString(); + // Run an end-to-end test on a test file + let input = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting2.input.sarif').toString(); + let expected = fs.readFileSync(__dirname + '/../src/testdata/fingerprinting2.expected.sarif').toString(); - // The test files are stored prettified, but addFingerprints outputs condensed JSON - input = JSON.stringify(JSON.parse(input)); - expected = JSON.stringify(JSON.parse(expected)); + // The test files are stored prettified, but addFingerprints outputs condensed JSON + input = JSON.stringify(JSON.parse(input)); + expected = JSON.stringify(JSON.parse(expected)); - // The URIs in the SARIF files resolve to files in the testdata directory - process.env['GITHUB_WORKSPACE'] = path.normalize(__dirname + '/../src/testdata'); + // The URIs in the SARIF files resolve to files in the testdata directory + process.env['GITHUB_WORKSPACE'] = path.normalize(__dirname + '/../src/testdata'); - t.deepEqual(fingerprints.addFingerprints(input), expected); + t.deepEqual(fingerprints.addFingerprints(input), expected); }); diff --git a/src/fingerprints.ts b/src/fingerprints.ts index cd78bca4a..b75f11e93 100644 --- a/src/fingerprints.ts +++ b/src/fingerprints.ts @@ -11,11 +11,11 @@ const MOD = Long.fromInt(37); // L // Compute the starting point for the hash mod function computeFirstMod(): Long { - let firstMod = Long.ONE; // L - for (let i = 0; i < BLOCK_SIZE; i++) { - firstMod = firstMod.multiply(MOD); - } - return firstMod; + let firstMod = Long.ONE; // L + for (let i = 0; i < BLOCK_SIZE; i++) { + firstMod = firstMod.multiply(MOD); + } + return firstMod; } // Type signature of callback passed to hash function. @@ -35,125 +35,125 @@ type hashCallback = (lineNumber: number, hash: string) => void; * @param input The file's contents */ export function hash(callback: hashCallback, input: string) { - // A rolling view in to the input - const window = Array(BLOCK_SIZE).fill(0); + // A rolling view in to the input + const window = Array(BLOCK_SIZE).fill(0); - // If the character in the window is the start of a new line - // then records the line number, otherwise will be -1. - // Indexes match up with those from the window variable. - const lineNumbers = Array(BLOCK_SIZE).fill(-1); + // If the character in the window is the start of a new line + // then records the line number, otherwise will be -1. + // Indexes match up with those from the window variable. + const lineNumbers = Array(BLOCK_SIZE).fill(-1); - // The current hash value, updated as we read each character - let hash = Long.ZERO; - let firstMod = computeFirstMod(); + // The current hash value, updated as we read each character + let hash = Long.ZERO; + let firstMod = computeFirstMod(); - // The current index in the window, will wrap around to zero when we reach BLOCK_SIZE - let index = 0; - // The line number of the character we are currently processing from the input - let lineNumber = 0; - // Is the next character to be read the start of a new line - let lineStart = true; - // Was the previous character a CR (carriage return) - let prevCR = false; - // A map of hashes we've seen before and how many times, - // so we can disambiguate identical hashes - const hashCounts: { [hashValue: string]: number } = {}; + // The current index in the window, will wrap around to zero when we reach BLOCK_SIZE + let index = 0; + // The line number of the character we are currently processing from the input + let lineNumber = 0; + // Is the next character to be read the start of a new line + let lineStart = true; + // Was the previous character a CR (carriage return) + let prevCR = false; + // A map of hashes we've seen before and how many times, + // so we can disambiguate identical hashes + const hashCounts: { [hashValue: string]: number } = {}; - // Output the current hash and line number to the callback function - const outputHash = function () { - let hashValue = hash.toUnsigned().toString(16); - if (!hashCounts[hashValue]) { - hashCounts[hashValue] = 0; - } - hashCounts[hashValue]++; - callback(lineNumbers[index], hashValue + ":" + hashCounts[hashValue]); - lineNumbers[index] = -1; - }; + // Output the current hash and line number to the callback function + const outputHash = function () { + let hashValue = hash.toUnsigned().toString(16); + if (!hashCounts[hashValue]) { + hashCounts[hashValue] = 0; + } + hashCounts[hashValue]++; + callback(lineNumbers[index], hashValue + ":" + hashCounts[hashValue]); + lineNumbers[index] = -1; + }; - // Update the current hash value and increment the index in the window - const updateHash = function (current: number) { - const begin = window[index]; - window[index] = current; - hash = MOD.multiply(hash) - .add(Long.fromInt(current)) - .subtract(firstMod.multiply(Long.fromInt(begin))); + // Update the current hash value and increment the index in the window + const updateHash = function (current: number) { + const begin = window[index]; + window[index] = current; + hash = MOD.multiply(hash) + .add(Long.fromInt(current)) + .subtract(firstMod.multiply(Long.fromInt(begin))); - index = (index + 1) % BLOCK_SIZE; - }; + index = (index + 1) % BLOCK_SIZE; + }; - // First process every character in the input, updating the hash and lineNumbers - // as we go. Once we reach a point in the window again then we've processed - // BLOCK_SIZE characters and if the last character at this point in the window - // was the start of a line then we should output the hash for that line. - for (let i = 0, len = input.length; i <= len; i++) { - let current = i === len ? 65535 : input.charCodeAt(i); - // skip tabs, spaces, and line feeds that come directly after a carriage return - if (current === space || current === tab || (prevCR && current === lf)) { - prevCR = false; - continue; - } - // replace CR with LF - if (current === cr) { - current = lf; - prevCR = true; - } else { - prevCR = false; - } - if (lineNumbers[index] !== -1) { - outputHash(); - } - if (lineStart) { - lineStart = false; - lineNumber++; - lineNumbers[index] = lineNumber; - } - if (current === lf) { - lineStart = true; - } - updateHash(current); + // First process every character in the input, updating the hash and lineNumbers + // as we go. Once we reach a point in the window again then we've processed + // BLOCK_SIZE characters and if the last character at this point in the window + // was the start of a line then we should output the hash for that line. + for (let i = 0, len = input.length; i <= len; i++) { + let current = i === len ? 65535 : input.charCodeAt(i); + // skip tabs, spaces, and line feeds that come directly after a carriage return + if (current === space || current === tab || (prevCR && current === lf)) { + prevCR = false; + continue; + } + // replace CR with LF + if (current === cr) { + current = lf; + prevCR = true; + } else { + prevCR = false; } + if (lineNumbers[index] !== -1) { + outputHash(); + } + if (lineStart) { + lineStart = false; + lineNumber++; + lineNumbers[index] = lineNumber; + } + if (current === lf) { + lineStart = true; + } + updateHash(current); + } - // Flush the remaining lines - for (let i = 0; i < BLOCK_SIZE; i++) { - if (lineNumbers[index] !== -1) { - outputHash(); - } - updateHash(0); + // Flush the remaining lines + for (let i = 0; i < BLOCK_SIZE; i++) { + if (lineNumbers[index] !== -1) { + outputHash(); } + updateHash(0); + } } // Generate a hash callback function that updates the given result in-place // when it recieves a hash for the correct line number. Ignores hashes for other lines. function locationUpdateCallback(result: any, location: any): hashCallback { - let locationStartLine = location.physicalLocation?.region?.startLine; - if (locationStartLine === undefined) { - // We expect the region section to be present, but it can be absent if the - // alert pertains to the entire file. In this case, we compute the fingerprint - // using the hash of the first line of the file. - locationStartLine = 1; + let locationStartLine = location.physicalLocation?.region?.startLine; + if (locationStartLine === undefined) { + // We expect the region section to be present, but it can be absent if the + // alert pertains to the entire file. In this case, we compute the fingerprint + // using the hash of the first line of the file. + locationStartLine = 1; + } + return function (lineNumber: number, hash: string) { + // Ignore hashes for lines that don't concern us + if (locationStartLine !== lineNumber) { + return; } - return function (lineNumber: number, hash: string) { - // Ignore hashes for lines that don't concern us - if (locationStartLine !== lineNumber) { - return; - } - if (!result.partialFingerprints) { - result.partialFingerprints = {}; - } - const existingFingerprint = result.partialFingerprints.primaryLocationLineHash; + if (!result.partialFingerprints) { + result.partialFingerprints = {}; + } + const existingFingerprint = result.partialFingerprints.primaryLocationLineHash; - // If the hash doesn't match the existing fingerprint then - // output a warning and don't overwrite it. - if (!existingFingerprint) { - result.partialFingerprints.primaryLocationLineHash = hash; - } else if (existingFingerprint !== hash) { - core.warning("Calculated fingerprint of " + hash + - " for file " + location.physicalLocation.artifactLocation.uri + - " line " + lineNumber + - ", but found existing inconsistent fingerprint value " + existingFingerprint); - } - }; + // If the hash doesn't match the existing fingerprint then + // output a warning and don't overwrite it. + if (!existingFingerprint) { + result.partialFingerprints.primaryLocationLineHash = hash; + } else if (existingFingerprint !== hash) { + core.warning("Calculated fingerprint of " + hash + + " for file " + location.physicalLocation.artifactLocation.uri + + " line " + lineNumber + + ", but found existing inconsistent fingerprint value " + existingFingerprint); + } + }; } // Can we fingerprint the given location. This requires access to @@ -161,100 +161,100 @@ function locationUpdateCallback(result: any, location: any): hashCallback { // If possible returns a absolute file path for the source file, // or if not possible then returns undefined. export function resolveUriToFile(location: any, artifacts: any[]): string | undefined { - // This may be referencing an artifact - if (!location.uri && location.index !== undefined) { - if (typeof location.index !== 'number' || - location.index < 0 || - location.index >= artifacts.length || - typeof artifacts[location.index].location !== 'object') { - core.debug('Ignoring location as index "' + location.index + '" is invalid'); - return undefined; - } - location = artifacts[location.index].location; + // This may be referencing an artifact + if (!location.uri && location.index !== undefined) { + if (typeof location.index !== 'number' || + location.index < 0 || + location.index >= artifacts.length || + typeof artifacts[location.index].location !== 'object') { + core.debug('Ignoring location as index "' + location.index + '" is invalid'); + return undefined; } + location = artifacts[location.index].location; + } - // Get the URI and decode - if (typeof location.uri !== 'string') { - core.debug('Ignoring location as uri "' + location.uri + '" is invalid'); - return undefined; - } - let uri = decodeURIComponent(location.uri); + // Get the URI and decode + if (typeof location.uri !== 'string') { + core.debug('Ignoring location as uri "' + location.uri + '" is invalid'); + return undefined; + } + let uri = decodeURIComponent(location.uri); - // Remove a file scheme, and abort if the scheme is anything else - const fileUriPrefix = 'file://'; - if (uri.startsWith(fileUriPrefix)) { - uri = uri.substring(fileUriPrefix.length); - } - if (uri.indexOf('://') !== -1) { - core.debug('Ignoring location URI "' + uri + "' as the scheme is not recognised"); - return undefined; - } + // Remove a file scheme, and abort if the scheme is anything else + const fileUriPrefix = 'file://'; + if (uri.startsWith(fileUriPrefix)) { + uri = uri.substring(fileUriPrefix.length); + } + if (uri.indexOf('://') !== -1) { + core.debug('Ignoring location URI "' + uri + "' as the scheme is not recognised"); + return undefined; + } - // Discard any absolute paths that aren't in the src root - const srcRootPrefix = process.env['GITHUB_WORKSPACE'] + '/'; - if (uri.startsWith('/') && !uri.startsWith(srcRootPrefix)) { - core.debug('Ignoring location URI "' + uri + "' as it is outside of the src root"); - return undefined; - } + // Discard any absolute paths that aren't in the src root + const srcRootPrefix = process.env['GITHUB_WORKSPACE'] + '/'; + if (uri.startsWith('/') && !uri.startsWith(srcRootPrefix)) { + core.debug('Ignoring location URI "' + uri + "' as it is outside of the src root"); + return undefined; + } - // Just assume a relative path is relative to the src root. - // This is not necessarily true but should be a good approximation - // and here we likely want to err on the side of handling more cases. - if (!uri.startsWith('/')) { - uri = srcRootPrefix + uri; - } + // Just assume a relative path is relative to the src root. + // This is not necessarily true but should be a good approximation + // and here we likely want to err on the side of handling more cases. + if (!uri.startsWith('/')) { + uri = srcRootPrefix + uri; + } - // Check the file exists - if (!fs.existsSync(uri)) { - core.debug("Unable to compute fingerprint for non-existent file: " + uri); - return undefined; - } + // Check the file exists + if (!fs.existsSync(uri)) { + core.debug("Unable to compute fingerprint for non-existent file: " + uri); + return undefined; + } - return uri; + return uri; } // Compute fingerprints for results in the given sarif file // and return an updated sarif file contents. export function addFingerprints(sarifContents: string): string { - let sarif = JSON.parse(sarifContents); + let sarif = JSON.parse(sarifContents); - // Gather together results for the same file and construct - // callbacks to accept hashes for that file and update the location - const callbacksByFile: { [filename: string]: hashCallback[] } = {}; - for (const run of sarif.runs || []) { - // We may need the list of artifacts to resolve against - let artifacts = run.artifacts || []; + // Gather together results for the same file and construct + // callbacks to accept hashes for that file and update the location + const callbacksByFile: { [filename: string]: hashCallback[] } = {}; + for (const run of sarif.runs || []) { + // We may need the list of artifacts to resolve against + let artifacts = run.artifacts || []; - for (const result of run.results || []) { - // Check the primary location is defined correctly and is in the src root - const primaryLocation = (result.locations || [])[0]; - if (!primaryLocation || - !primaryLocation.physicalLocation || - !primaryLocation.physicalLocation.artifactLocation) { - core.debug("Unable to compute fingerprint for invalid location: " + JSON.stringify(primaryLocation)); - continue; - } + for (const result of run.results || []) { + // Check the primary location is defined correctly and is in the src root + const primaryLocation = (result.locations || [])[0]; + if (!primaryLocation || + !primaryLocation.physicalLocation || + !primaryLocation.physicalLocation.artifactLocation) { + core.debug("Unable to compute fingerprint for invalid location: " + JSON.stringify(primaryLocation)); + continue; + } - const filepath = resolveUriToFile(primaryLocation.physicalLocation.artifactLocation, artifacts); - if (!filepath) { - continue; - } - if (!callbacksByFile[filepath]) { - callbacksByFile[filepath] = []; - } - callbacksByFile[filepath].push(locationUpdateCallback(result, primaryLocation)); - } + const filepath = resolveUriToFile(primaryLocation.physicalLocation.artifactLocation, artifacts); + if (!filepath) { + continue; + } + if (!callbacksByFile[filepath]) { + callbacksByFile[filepath] = []; + } + callbacksByFile[filepath].push(locationUpdateCallback(result, primaryLocation)); } + } - // Now hash each file that was found - Object.entries(callbacksByFile).forEach(([filepath, callbacks]) => { - // A callback that forwards the hash to all other callbacks for that file - const teeCallback = function (lineNumber: number, hash: string) { - Object.values(callbacks).forEach(c => c(lineNumber, hash)); - }; - const fileContents = fs.readFileSync(filepath).toString(); - hash(teeCallback, fileContents); - }); + // Now hash each file that was found + Object.entries(callbacksByFile).forEach(([filepath, callbacks]) => { + // A callback that forwards the hash to all other callbacks for that file + const teeCallback = function (lineNumber: number, hash: string) { + Object.values(callbacks).forEach(c => c(lineNumber, hash)); + }; + const fileContents = fs.readFileSync(filepath).toString(); + hash(teeCallback, fileContents); + }); - return JSON.stringify(sarif); + return JSON.stringify(sarif); } diff --git a/src/setup-tools.test.ts b/src/setup-tools.test.ts index 96680b339..e0bd0b458 100644 --- a/src/setup-tools.test.ts +++ b/src/setup-tools.test.ts @@ -8,55 +8,55 @@ import * as util from './util'; test('download codeql bundle cache', async t => { - await util.withTmpDir(async tmpDir => { + await util.withTmpDir(async tmpDir => { - process.env['GITHUB_WORKSPACE'] = tmpDir; + process.env['GITHUB_WORKSPACE'] = tmpDir; - process.env['RUNNER_TEMP'] = path.join(tmpDir, 'temp'); - process.env['RUNNER_TOOL_CACHE'] = path.join(tmpDir, 'cache'); + process.env['RUNNER_TEMP'] = path.join(tmpDir, 'temp'); + process.env['RUNNER_TOOL_CACHE'] = path.join(tmpDir, 'cache'); - const versions = ['20200601', '20200610']; + const versions = ['20200601', '20200610']; - for (let i = 0; i < versions.length; i++) { - const version = versions[i]; + for (let i = 0; i < versions.length; i++) { + const version = versions[i]; - nock('https://example.com') - .get(`/download/codeql-bundle-${version}/codeql-bundle.tar.gz`) - .replyWithFile(200, path.join(__dirname, `/../src/testdata/codeql-bundle.tar.gz`)); + nock('https://example.com') + .get(`/download/codeql-bundle-${version}/codeql-bundle.tar.gz`) + .replyWithFile(200, path.join(__dirname, `/../src/testdata/codeql-bundle.tar.gz`)); - process.env['INPUT_TOOLS'] = `https://example.com/download/codeql-bundle-${version}/codeql-bundle.tar.gz`; + process.env['INPUT_TOOLS'] = `https://example.com/download/codeql-bundle-${version}/codeql-bundle.tar.gz`; - await setupTools.setupCodeQL(); + await setupTools.setupCodeQL(); - t.assert(toolcache.find('CodeQL', `0.0.0-${version}`)); - } + t.assert(toolcache.find('CodeQL', `0.0.0-${version}`)); + } - const cachedVersions = toolcache.findAllVersions('CodeQL'); + const cachedVersions = toolcache.findAllVersions('CodeQL'); - t.is(cachedVersions.length, 2); - }); + t.is(cachedVersions.length, 2); + }); }); test('parse codeql bundle url version', t => { - const tests = { - '20200601': '0.0.0-20200601', - '20200601.0': '0.0.0-20200601.0', - '20200601.0.0': '20200601.0.0', - '1.2.3': '1.2.3', - '1.2.3-alpha': '1.2.3-alpha', - '1.2.3-beta.1': '1.2.3-beta.1', - }; - - for (const [version, expectedVersion] of Object.entries(tests)) { - const url = `https://github.com/.../codeql-bundle-${version}/...`; - - try { - const parsedVersion = setupTools.getCodeQLURLVersion(url); - t.deepEqual(parsedVersion, expectedVersion); - } catch (e) { - t.fail(e.message); - } + const tests = { + '20200601': '0.0.0-20200601', + '20200601.0': '0.0.0-20200601.0', + '20200601.0.0': '20200601.0.0', + '1.2.3': '1.2.3', + '1.2.3-alpha': '1.2.3-alpha', + '1.2.3-beta.1': '1.2.3-beta.1', + }; + + for (const [version, expectedVersion] of Object.entries(tests)) { + const url = `https://github.com/.../codeql-bundle-${version}/...`; + + try { + const parsedVersion = setupTools.getCodeQLURLVersion(url); + t.deepEqual(parsedVersion, expectedVersion); + } catch (e) { + t.fail(e.message); } + } }); diff --git a/src/setup-tools.ts b/src/setup-tools.ts index 2ed64c21a..1f878ec17 100644 --- a/src/setup-tools.ts +++ b/src/setup-tools.ts @@ -4,70 +4,70 @@ import * as path from 'path'; import * as semver from 'semver'; export class CodeQLSetup { - public dist: string; - public tools: string; - public cmd: string; - public platform: string; + public dist: string; + public tools: string; + public cmd: string; + public platform: string; - constructor(codeqlDist: string) { - this.dist = codeqlDist; - this.tools = path.join(this.dist, 'tools'); - this.cmd = path.join(codeqlDist, 'codeql'); - // TODO check process.arch ? - if (process.platform === 'win32') { - this.platform = 'win64'; - if (this.cmd.endsWith('codeql')) { - this.cmd += ".cmd"; - } - } else if (process.platform === 'linux') { - this.platform = 'linux64'; - } else if (process.platform === 'darwin') { - this.platform = 'osx64'; - } else { - throw new Error("Unsupported plaform: " + process.platform); - } + constructor(codeqlDist: string) { + this.dist = codeqlDist; + this.tools = path.join(this.dist, 'tools'); + this.cmd = path.join(codeqlDist, 'codeql'); + // TODO check process.arch ? + if (process.platform === 'win32') { + this.platform = 'win64'; + if (this.cmd.endsWith('codeql')) { + this.cmd += ".cmd"; + } + } else if (process.platform === 'linux') { + this.platform = 'linux64'; + } else if (process.platform === 'darwin') { + this.platform = 'osx64'; + } else { + throw new Error("Unsupported plaform: " + process.platform); } + } } export async function setupCodeQL(): Promise { - try { - const codeqlURL = core.getInput('tools', { required: true }); - const codeqlURLVersion = getCodeQLURLVersion(codeqlURL); + try { + const codeqlURL = core.getInput('tools', { required: true }); + const codeqlURLVersion = getCodeQLURLVersion(codeqlURL); - let codeqlFolder = toolcache.find('CodeQL', codeqlURLVersion); - if (codeqlFolder) { - core.debug(`CodeQL found in cache ${codeqlFolder}`); - } else { - const codeqlPath = await toolcache.downloadTool(codeqlURL); - const codeqlExtracted = await toolcache.extractTar(codeqlPath); - codeqlFolder = await toolcache.cacheDir(codeqlExtracted, 'CodeQL', codeqlURLVersion); - } - return new CodeQLSetup(path.join(codeqlFolder, 'codeql')); - - } catch (e) { - core.error(e); - throw new Error("Unable to download and extract CodeQL CLI"); + let codeqlFolder = toolcache.find('CodeQL', codeqlURLVersion); + if (codeqlFolder) { + core.debug(`CodeQL found in cache ${codeqlFolder}`); + } else { + const codeqlPath = await toolcache.downloadTool(codeqlURL); + const codeqlExtracted = await toolcache.extractTar(codeqlPath); + codeqlFolder = await toolcache.cacheDir(codeqlExtracted, 'CodeQL', codeqlURLVersion); } + return new CodeQLSetup(path.join(codeqlFolder, 'codeql')); + + } catch (e) { + core.error(e); + throw new Error("Unable to download and extract CodeQL CLI"); + } } export function getCodeQLURLVersion(url: string): string { - const match = url.match(/\/codeql-bundle-(.*)\//); - if (match === null || match.length < 2) { - throw new Error(`Malformed tools url: ${url}. Version could not be inferred`); - } + const match = url.match(/\/codeql-bundle-(.*)\//); + if (match === null || match.length < 2) { + throw new Error(`Malformed tools url: ${url}. Version could not be inferred`); + } - let version = match[1]; + let version = match[1]; - if (!semver.valid(version)) { - core.debug(`Bundle version ${version} is not in SemVer format. Will treat it as pre-release 0.0.0-${version}.`); - version = '0.0.0-' + version; - } + if (!semver.valid(version)) { + core.debug(`Bundle version ${version} is not in SemVer format. Will treat it as pre-release 0.0.0-${version}.`); + version = '0.0.0-' + version; + } - const s = semver.clean(version); - if (!s) { - throw new Error(`Malformed tools url ${url}. Version should be in SemVer format but have ${version} instead`); - } + const s = semver.clean(version); + if (!s) { + throw new Error(`Malformed tools url ${url}. Version should be in SemVer format but have ${version} instead`); + } - return s; + return s; } diff --git a/src/setup-tracer.ts b/src/setup-tracer.ts index a97960682..9cc3b3e6c 100644 --- a/src/setup-tracer.ts +++ b/src/setup-tracer.ts @@ -11,239 +11,239 @@ import * as sharedEnv from './shared-environment'; import * as util from './util'; type TracerConfig = { - spec: string; - env: { [key: string]: string }; + spec: string; + env: { [key: string]: string }; }; const CRITICAL_TRACER_VARS = new Set( - ['SEMMLE_PRELOAD_libtrace', - , 'SEMMLE_RUNNER', - , 'SEMMLE_COPY_EXECUTABLES_ROOT', - , 'SEMMLE_DEPTRACE_SOCKET', - , 'SEMMLE_JAVA_TOOL_OPTIONS' - ]); + ['SEMMLE_PRELOAD_libtrace', + , 'SEMMLE_RUNNER', + , 'SEMMLE_COPY_EXECUTABLES_ROOT', + , 'SEMMLE_DEPTRACE_SOCKET', + , 'SEMMLE_JAVA_TOOL_OPTIONS' + ]); async function tracerConfig( - codeql: setuptools.CodeQLSetup, - database: string, - compilerSpec?: string): Promise { - - const compilerSpecArg = compilerSpec ? ["--compiler-spec=" + compilerSpec] : []; - - let envFile = path.resolve(database, 'working', 'env.tmp'); - await exec.exec(codeql.cmd, ['database', 'trace-command', database, - ...compilerSpecArg, - process.execPath, path.resolve(__dirname, 'tracer-env.js'), envFile] - ); - - const env: { [key: string]: string } = JSON.parse(fs.readFileSync(envFile, 'utf-8')); - - const config = env['ODASA_TRACER_CONFIGURATION']; - const info: TracerConfig = { spec: config, env: {} }; - - // Extract critical tracer variables from the environment - for (let entry of Object.entries(env)) { - const key = entry[0]; - const value = entry[1]; - // skip ODASA_TRACER_CONFIGURATION as it is handled separately - if (key === 'ODASA_TRACER_CONFIGURATION') { - continue; - } - // skip undefined values - if (typeof value === 'undefined') { - continue; - } - // Keep variables that do not exist in current environment. In addition always keep - // critical and CODEQL_ variables - if (typeof process.env[key] === 'undefined' || CRITICAL_TRACER_VARS.has(key) || key.startsWith('CODEQL_')) { - info.env[key] = value; - } + codeql: setuptools.CodeQLSetup, + database: string, + compilerSpec?: string): Promise { + + const compilerSpecArg = compilerSpec ? ["--compiler-spec=" + compilerSpec] : []; + + let envFile = path.resolve(database, 'working', 'env.tmp'); + await exec.exec(codeql.cmd, ['database', 'trace-command', database, + ...compilerSpecArg, + process.execPath, path.resolve(__dirname, 'tracer-env.js'), envFile] + ); + + const env: { [key: string]: string } = JSON.parse(fs.readFileSync(envFile, 'utf-8')); + + const config = env['ODASA_TRACER_CONFIGURATION']; + const info: TracerConfig = { spec: config, env: {} }; + + // Extract critical tracer variables from the environment + for (let entry of Object.entries(env)) { + const key = entry[0]; + const value = entry[1]; + // skip ODASA_TRACER_CONFIGURATION as it is handled separately + if (key === 'ODASA_TRACER_CONFIGURATION') { + continue; + } + // skip undefined values + if (typeof value === 'undefined') { + continue; } - return info; + // Keep variables that do not exist in current environment. In addition always keep + // critical and CODEQL_ variables + if (typeof process.env[key] === 'undefined' || CRITICAL_TRACER_VARS.has(key) || key.startsWith('CODEQL_')) { + info.env[key] = value; + } + } + return info; } function concatTracerConfigs(configs: { [lang: string]: TracerConfig }): TracerConfig { - // A tracer config is a map containing additional environment variables and a tracer 'spec' file. - // A tracer 'spec' file has the following format [log_file, number_of_blocks, blocks_text] - - // Merge the environments - const env: { [key: string]: string; } = {}; - let copyExecutables = false; - let envSize = 0; - for (let v of Object.values(configs)) { - for (let e of Object.entries(v.env)) { - const name = e[0]; - const value = e[1]; - // skip SEMMLE_COPY_EXECUTABLES_ROOT as it is handled separately - if (name === 'SEMMLE_COPY_EXECUTABLES_ROOT') { - copyExecutables = true; - } else if (name in env) { - if (env[name] !== value) { - throw Error('Incompatible values in environment parameter ' + - name + ': ' + env[name] + ' and ' + value); - } - } else { - env[name] = value; - envSize += 1; - } + // A tracer config is a map containing additional environment variables and a tracer 'spec' file. + // A tracer 'spec' file has the following format [log_file, number_of_blocks, blocks_text] + + // Merge the environments + const env: { [key: string]: string; } = {}; + let copyExecutables = false; + let envSize = 0; + for (let v of Object.values(configs)) { + for (let e of Object.entries(v.env)) { + const name = e[0]; + const value = e[1]; + // skip SEMMLE_COPY_EXECUTABLES_ROOT as it is handled separately + if (name === 'SEMMLE_COPY_EXECUTABLES_ROOT') { + copyExecutables = true; + } else if (name in env) { + if (env[name] !== value) { + throw Error('Incompatible values in environment parameter ' + + name + ': ' + env[name] + ' and ' + value); } - } - - // Concatenate spec files into a new spec file - let languages = Object.keys(configs); - const cppIndex = languages.indexOf('cpp'); - // Make sure cpp is the last language, if it's present since it must be concatenated last - if (cppIndex !== -1) { - let lastLang = languages[languages.length - 1]; - languages[languages.length - 1] = languages[cppIndex]; - languages[cppIndex] = lastLang; - } - - let totalLines: string[] = []; - let totalCount = 0; - for (let lang of languages) { - const lines = fs.readFileSync(configs[lang].spec, 'utf8').split(/\r?\n/); - const count = parseInt(lines[1], 10); - totalCount += count; - totalLines.push(...lines.slice(2)); - } - - const tempFolder = util.getRequiredEnvParam('RUNNER_TEMP'); - const newLogFilePath = path.resolve(tempFolder, 'compound-build-tracer.log'); - const spec = path.resolve(tempFolder, 'compound-spec'); - const compoundTempFolder = path.resolve(tempFolder, 'compound-temp'); - const newSpecContent = [newLogFilePath, totalCount.toString(10), ...totalLines]; - - if (copyExecutables) { - env['SEMMLE_COPY_EXECUTABLES_ROOT'] = compoundTempFolder; + } else { + env[name] = value; envSize += 1; + } } - - fs.writeFileSync(spec, newSpecContent.join('\n')); - - // Prepare the content of the compound environment file - let buffer = Buffer.alloc(4); - buffer.writeInt32LE(envSize, 0); - for (let e of Object.entries(env)) { - const key = e[0]; - const value = e[1]; - const lineBuffer = new Buffer(key + '=' + value + '\0', 'utf8'); - const sizeBuffer = Buffer.alloc(4); - sizeBuffer.writeInt32LE(lineBuffer.length, 0); - buffer = Buffer.concat([buffer, sizeBuffer, lineBuffer]); - } - // Write the compound environment - const envPath = spec + '.environment'; - fs.writeFileSync(envPath, buffer); - - return { env, spec }; + } + + // Concatenate spec files into a new spec file + let languages = Object.keys(configs); + const cppIndex = languages.indexOf('cpp'); + // Make sure cpp is the last language, if it's present since it must be concatenated last + if (cppIndex !== -1) { + let lastLang = languages[languages.length - 1]; + languages[languages.length - 1] = languages[cppIndex]; + languages[cppIndex] = lastLang; + } + + let totalLines: string[] = []; + let totalCount = 0; + for (let lang of languages) { + const lines = fs.readFileSync(configs[lang].spec, 'utf8').split(/\r?\n/); + const count = parseInt(lines[1], 10); + totalCount += count; + totalLines.push(...lines.slice(2)); + } + + const tempFolder = util.getRequiredEnvParam('RUNNER_TEMP'); + const newLogFilePath = path.resolve(tempFolder, 'compound-build-tracer.log'); + const spec = path.resolve(tempFolder, 'compound-spec'); + const compoundTempFolder = path.resolve(tempFolder, 'compound-temp'); + const newSpecContent = [newLogFilePath, totalCount.toString(10), ...totalLines]; + + if (copyExecutables) { + env['SEMMLE_COPY_EXECUTABLES_ROOT'] = compoundTempFolder; + envSize += 1; + } + + fs.writeFileSync(spec, newSpecContent.join('\n')); + + // Prepare the content of the compound environment file + let buffer = Buffer.alloc(4); + buffer.writeInt32LE(envSize, 0); + for (let e of Object.entries(env)) { + const key = e[0]; + const value = e[1]; + const lineBuffer = new Buffer(key + '=' + value + '\0', 'utf8'); + const sizeBuffer = Buffer.alloc(4); + sizeBuffer.writeInt32LE(lineBuffer.length, 0); + buffer = Buffer.concat([buffer, sizeBuffer, lineBuffer]); + } + // Write the compound environment + const envPath = spec + '.environment'; + fs.writeFileSync(envPath, buffer); + + return { env, spec }; } async function run() { - try { - if (util.should_abort('init', false) || !await util.reportActionStarting('init')) { - return; - } + try { + if (util.should_abort('init', false) || !await util.reportActionStarting('init')) { + return; + } - // The config file MUST be parsed in the init action - const config = await configUtils.loadConfig(); + // The config file MUST be parsed in the init action + const config = await configUtils.loadConfig(); - core.startGroup('Load language configuration'); + core.startGroup('Load language configuration'); - const languages = await util.getLanguages(); - // If the languages parameter was not given and no languages were - // detected then fail here as this is a workflow configuration error. - if (languages.length === 0) { - core.setFailed("Did not detect any languages to analyze. Please update input in workflow."); - return; - } + const languages = await util.getLanguages(); + // If the languages parameter was not given and no languages were + // detected then fail here as this is a workflow configuration error. + if (languages.length === 0) { + core.setFailed("Did not detect any languages to analyze. Please update input in workflow."); + return; + } - core.endGroup(); + core.endGroup(); - analysisPaths.includeAndExcludeAnalysisPaths(config, languages); + analysisPaths.includeAndExcludeAnalysisPaths(config, languages); - const sourceRoot = path.resolve(); + const sourceRoot = path.resolve(); - core.startGroup('Setup CodeQL tools'); - const codeqlSetup = await setuptools.setupCodeQL(); - await exec.exec(codeqlSetup.cmd, ['version', '--format=json']); - core.endGroup(); + core.startGroup('Setup CodeQL tools'); + const codeqlSetup = await setuptools.setupCodeQL(); + await exec.exec(codeqlSetup.cmd, ['version', '--format=json']); + core.endGroup(); - // Forward Go flags - const goFlags = process.env['GOFLAGS']; - if (goFlags) { - core.exportVariable('GOFLAGS', goFlags); - core.warning("Passing the GOFLAGS env parameter to the init action is deprecated. Please move this to the analyze action."); - } + // Forward Go flags + const goFlags = process.env['GOFLAGS']; + if (goFlags) { + core.exportVariable('GOFLAGS', goFlags); + core.warning("Passing the GOFLAGS env parameter to the init action is deprecated. Please move this to the analyze action."); + } - // Setup CODEQL_RAM flag (todo improve this https://github.com/github/dsp-code-scanning/issues/935) - const codeqlRam = process.env['CODEQL_RAM'] || '6500'; - core.exportVariable('CODEQL_RAM', codeqlRam); - - const databaseFolder = path.resolve(util.getRequiredEnvParam('RUNNER_TEMP'), 'codeql_databases'); - await io.mkdirP(databaseFolder); - - let tracedLanguages: { [key: string]: TracerConfig } = {}; - let scannedLanguages: string[] = []; - - // TODO: replace this code once CodeQL supports multi-language tracing - for (let language of languages) { - const languageDatabase = path.join(databaseFolder, language); - - // Init language database - await exec.exec(codeqlSetup.cmd, ['database', 'init', languageDatabase, '--language=' + language, '--source-root=' + sourceRoot]); - // TODO: add better detection of 'traced languages' instead of using a hard coded list - if (['cpp', 'java', 'csharp'].includes(language)) { - const config: TracerConfig = await tracerConfig(codeqlSetup, languageDatabase); - tracedLanguages[language] = config; - } else { - scannedLanguages.push(language); - } + // Setup CODEQL_RAM flag (todo improve this https://github.com/github/dsp-code-scanning/issues/935) + const codeqlRam = process.env['CODEQL_RAM'] || '6500'; + core.exportVariable('CODEQL_RAM', codeqlRam); + + const databaseFolder = path.resolve(util.getRequiredEnvParam('RUNNER_TEMP'), 'codeql_databases'); + await io.mkdirP(databaseFolder); + + let tracedLanguages: { [key: string]: TracerConfig } = {}; + let scannedLanguages: string[] = []; + + // TODO: replace this code once CodeQL supports multi-language tracing + for (let language of languages) { + const languageDatabase = path.join(databaseFolder, language); + + // Init language database + await exec.exec(codeqlSetup.cmd, ['database', 'init', languageDatabase, '--language=' + language, '--source-root=' + sourceRoot]); + // TODO: add better detection of 'traced languages' instead of using a hard coded list + if (['cpp', 'java', 'csharp'].includes(language)) { + const config: TracerConfig = await tracerConfig(codeqlSetup, languageDatabase); + tracedLanguages[language] = config; + } else { + scannedLanguages.push(language); + } + } + const tracedLanguageKeys = Object.keys(tracedLanguages); + if (tracedLanguageKeys.length > 0) { + const mainTracerConfig = concatTracerConfigs(tracedLanguages); + if (mainTracerConfig.spec) { + for (let entry of Object.entries(mainTracerConfig.env)) { + core.exportVariable(entry[0], entry[1]); } - const tracedLanguageKeys = Object.keys(tracedLanguages); - if (tracedLanguageKeys.length > 0) { - const mainTracerConfig = concatTracerConfigs(tracedLanguages); - if (mainTracerConfig.spec) { - for (let entry of Object.entries(mainTracerConfig.env)) { - core.exportVariable(entry[0], entry[1]); - } - - core.exportVariable('ODASA_TRACER_CONFIGURATION', mainTracerConfig.spec); - if (process.platform === 'darwin') { - core.exportVariable( - 'DYLD_INSERT_LIBRARIES', - path.join(codeqlSetup.tools, 'osx64', 'libtrace.dylib')); - } else if (process.platform === 'win32') { - await exec.exec( - 'powershell', - [path.resolve(__dirname, '..', 'src', 'inject-tracer.ps1'), - path.resolve(codeqlSetup.tools, 'win64', 'tracer.exe')], - { env: { 'ODASA_TRACER_CONFIGURATION': mainTracerConfig.spec } }); - } else { - core.exportVariable('LD_PRELOAD', path.join(codeqlSetup.tools, 'linux64', '${LIB}trace.so')); - } - } + + core.exportVariable('ODASA_TRACER_CONFIGURATION', mainTracerConfig.spec); + if (process.platform === 'darwin') { + core.exportVariable( + 'DYLD_INSERT_LIBRARIES', + path.join(codeqlSetup.tools, 'osx64', 'libtrace.dylib')); + } else if (process.platform === 'win32') { + await exec.exec( + 'powershell', + [path.resolve(__dirname, '..', 'src', 'inject-tracer.ps1'), + path.resolve(codeqlSetup.tools, 'win64', 'tracer.exe')], + { env: { 'ODASA_TRACER_CONFIGURATION': mainTracerConfig.spec } }); + } else { + core.exportVariable('LD_PRELOAD', path.join(codeqlSetup.tools, 'linux64', '${LIB}trace.so')); } + } + } - core.exportVariable(sharedEnv.CODEQL_ACTION_SCANNED_LANGUAGES, scannedLanguages.join(',')); - core.exportVariable(sharedEnv.CODEQL_ACTION_TRACED_LANGUAGES, tracedLanguageKeys.join(',')); + core.exportVariable(sharedEnv.CODEQL_ACTION_SCANNED_LANGUAGES, scannedLanguages.join(',')); + core.exportVariable(sharedEnv.CODEQL_ACTION_TRACED_LANGUAGES, tracedLanguageKeys.join(',')); - // TODO: make this a "private" environment variable of the action - core.exportVariable(sharedEnv.CODEQL_ACTION_DATABASE_DIR, databaseFolder); - core.exportVariable(sharedEnv.CODEQL_ACTION_CMD, codeqlSetup.cmd); + // TODO: make this a "private" environment variable of the action + core.exportVariable(sharedEnv.CODEQL_ACTION_DATABASE_DIR, databaseFolder); + core.exportVariable(sharedEnv.CODEQL_ACTION_CMD, codeqlSetup.cmd); - } catch (error) { - core.setFailed(error.message); - await util.reportActionFailed('init', error.message, error.stack); - return; - } - await util.reportActionSucceeded('init'); - core.exportVariable(sharedEnv.CODEQL_ACTION_INIT_COMPLETED, 'true'); + } catch (error) { + core.setFailed(error.message); + await util.reportActionFailed('init', error.message, error.stack); + return; + } + await util.reportActionSucceeded('init'); + core.exportVariable(sharedEnv.CODEQL_ACTION_INIT_COMPLETED, 'true'); } run().catch(e => { - core.setFailed("init action failed: " + e); - console.log(e); + core.setFailed("init action failed: " + e); + console.log(e); }); diff --git a/src/tracer-env.ts b/src/tracer-env.ts index 687f253ba..ce91b24e5 100644 --- a/src/tracer-env.ts +++ b/src/tracer-env.ts @@ -2,12 +2,11 @@ import * as fs from 'fs'; const env = {}; for (let entry of Object.entries(process.env)) { - const key = entry[0]; - const value = entry[1]; - if (typeof value !== 'undefined' && key !== '_' && !key.startsWith('JAVA_MAIN_CLASS_')) { - env[key] = value; - } + const key = entry[0]; + const value = entry[1]; + if (typeof value !== 'undefined' && key !== '_' && !key.startsWith('JAVA_MAIN_CLASS_')) { + env[key] = value; + } } process.stdout.write(process.argv[2]); fs.writeFileSync(process.argv[2], JSON.stringify(env), 'utf-8'); - diff --git a/src/upload-lib.ts b/src/upload-lib.ts index 07cabccfb..a917f3446 100644 --- a/src/upload-lib.ts +++ b/src/upload-lib.ts @@ -14,212 +14,212 @@ import * as util from './util'; // Takes a list of paths to sarif files and combines them together, // returning the contents of the combined sarif file. export function combineSarifFiles(sarifFiles: string[]): string { - let combinedSarif = { - version: null, - runs: [] as any[] - }; - - for (let sarifFile of sarifFiles) { - let sarifObject = JSON.parse(fs.readFileSync(sarifFile, 'utf8')); - // Check SARIF version - if (combinedSarif.version === null) { - combinedSarif.version = sarifObject.version; - } else if (combinedSarif.version !== sarifObject.version) { - throw "Different SARIF versions encountered: " + combinedSarif.version + " and " + sarifObject.version; - } - - combinedSarif.runs.push(...sarifObject.runs); + let combinedSarif = { + version: null, + runs: [] as any[] + }; + + for (let sarifFile of sarifFiles) { + let sarifObject = JSON.parse(fs.readFileSync(sarifFile, 'utf8')); + // Check SARIF version + if (combinedSarif.version === null) { + combinedSarif.version = sarifObject.version; + } else if (combinedSarif.version !== sarifObject.version) { + throw "Different SARIF versions encountered: " + combinedSarif.version + " and " + sarifObject.version; } - return JSON.stringify(combinedSarif); + combinedSarif.runs.push(...sarifObject.runs); + } + + return JSON.stringify(combinedSarif); } // Upload the given payload. // If the request fails then this will retry a small number of times. async function uploadPayload(payload): Promise { - core.info('Uploading results'); + core.info('Uploading results'); + + // If in test mode we don't want to upload the results + const testMode = process.env['TEST_MODE'] === 'true' || false; + if (testMode) { + return true; + } + + const githubToken = core.getInput('token'); + const ph: auth.BearerCredentialHandler = new auth.BearerCredentialHandler(githubToken); + const client = new http.HttpClient('Code Scanning : Upload SARIF', [ph]); + const url = 'https://api.github.com/repos/' + process.env['GITHUB_REPOSITORY'] + '/code-scanning/analysis'; + + // Make up to 4 attempts to upload, and sleep for these + // number of seconds between each attempt. + // We don't want to backoff too much to avoid wasting action + // minutes, but just waiting a little bit could maybe help. + const backoffPeriods = [1, 5, 15]; + + for (let attempt = 0; attempt <= backoffPeriods.length; attempt++) { + + const res: http.HttpClientResponse = await client.put(url, payload); + core.debug('response status: ' + res.message.statusCode); + + const statusCode = res.message.statusCode; + if (statusCode === 202) { + core.info("Successfully uploaded results"); + return true; + } + + const requestID = res.message.headers["x-github-request-id"]; - // If in test mode we don't want to upload the results - const testMode = process.env['TEST_MODE'] === 'true' || false; - if (testMode) { - return true; + // On any other status code that's not 5xx mark the upload as failed + if (!statusCode || statusCode < 500 || statusCode >= 600) { + core.setFailed('Upload failed (' + requestID + '): (' + statusCode + ') ' + await res.readBody()); + return false; } - const githubToken = core.getInput('token'); - const ph: auth.BearerCredentialHandler = new auth.BearerCredentialHandler(githubToken); - const client = new http.HttpClient('Code Scanning : Upload SARIF', [ph]); - const url = 'https://api.github.com/repos/' + process.env['GITHUB_REPOSITORY'] + '/code-scanning/analysis'; - - // Make up to 4 attempts to upload, and sleep for these - // number of seconds between each attempt. - // We don't want to backoff too much to avoid wasting action - // minutes, but just waiting a little bit could maybe help. - const backoffPeriods = [1, 5, 15]; - - for (let attempt = 0; attempt <= backoffPeriods.length; attempt++) { - - const res: http.HttpClientResponse = await client.put(url, payload); - core.debug('response status: ' + res.message.statusCode); - - const statusCode = res.message.statusCode; - if (statusCode === 202) { - core.info("Successfully uploaded results"); - return true; - } - - const requestID = res.message.headers["x-github-request-id"]; - - // On any other status code that's not 5xx mark the upload as failed - if (!statusCode || statusCode < 500 || statusCode >= 600) { - core.setFailed('Upload failed (' + requestID + '): (' + statusCode + ') ' + await res.readBody()); - return false; - } - - // On a 5xx status code we may retry the request - if (attempt < backoffPeriods.length) { - // Log the failure as a warning but don't mark the action as failed yet - core.warning('Upload attempt (' + (attempt + 1) + ' of ' + (backoffPeriods.length + 1) + - ') failed (' + requestID + '). Retrying in ' + backoffPeriods[attempt] + - ' seconds: (' + statusCode + ') ' + await res.readBody()); - // Sleep for the backoff period - await new Promise(r => setTimeout(r, backoffPeriods[attempt] * 1000)); - continue; - - } else { - // If the upload fails with 5xx then we assume it is a temporary problem - // and not an error that the user has caused or can fix. - // We avoid marking the job as failed to avoid breaking CI workflows. - core.error('Upload failed (' + requestID + '): (' + statusCode + ') ' + await res.readBody()); - return false; - } + // On a 5xx status code we may retry the request + if (attempt < backoffPeriods.length) { + // Log the failure as a warning but don't mark the action as failed yet + core.warning('Upload attempt (' + (attempt + 1) + ' of ' + (backoffPeriods.length + 1) + + ') failed (' + requestID + '). Retrying in ' + backoffPeriods[attempt] + + ' seconds: (' + statusCode + ') ' + await res.readBody()); + // Sleep for the backoff period + await new Promise(r => setTimeout(r, backoffPeriods[attempt] * 1000)); + continue; + + } else { + // If the upload fails with 5xx then we assume it is a temporary problem + // and not an error that the user has caused or can fix. + // We avoid marking the job as failed to avoid breaking CI workflows. + core.error('Upload failed (' + requestID + '): (' + statusCode + ') ' + await res.readBody()); + return false; } + } - return false; + return false; } // Uploads a single sarif file or a directory of sarif files // depending on what the path happens to refer to. // Returns true iff the upload occurred and succeeded export async function upload(input: string): Promise { - if (fs.lstatSync(input).isDirectory()) { - const sarifFiles = fs.readdirSync(input) - .filter(f => f.endsWith(".sarif")) - .map(f => path.resolve(input, f)); - if (sarifFiles.length === 0) { - core.setFailed("No SARIF files found to upload in \"" + input + "\"."); - return false; - } - return await uploadFiles(sarifFiles); - } else { - return await uploadFiles([input]); + if (fs.lstatSync(input).isDirectory()) { + const sarifFiles = fs.readdirSync(input) + .filter(f => f.endsWith(".sarif")) + .map(f => path.resolve(input, f)); + if (sarifFiles.length === 0) { + core.setFailed("No SARIF files found to upload in \"" + input + "\"."); + return false; } + return await uploadFiles(sarifFiles); + } else { + return await uploadFiles([input]); + } } // Counts the number of results in the given SARIF file export function countResultsInSarif(sarif: string): number { - let numResults = 0; - for (const run of JSON.parse(sarif).runs) { - numResults += run.results.length; - } - return numResults; + let numResults = 0; + for (const run of JSON.parse(sarif).runs) { + numResults += run.results.length; + } + return numResults; } // Validates that the given file path refers to a valid SARIF file. // Returns a non-empty list of error message if the file is invalid, // otherwise returns the empty list if the file is valid. export function validateSarifFileSchema(sarifFilePath: string): boolean { - const sarif = JSON.parse(fs.readFileSync(sarifFilePath, 'utf8')); - const schema = JSON.parse(fs.readFileSync(__dirname + '/../src/sarif_v2.1.0_schema.json', 'utf8')); - - const result = new jsonschema.Validator().validate(sarif, schema); - if (result.valid) { - return true; - } else { - // Set the failure message to the stacks of all the errors. - // This should be of a manageable size and may even give enough to fix the error. - const errorMessages = result.errors.map(e => "- " + e.stack); - core.setFailed("Unable to upload \"" + sarifFilePath + "\" as it is not valid SARIF:\n" + errorMessages.join("\n")); - - // Also output the more verbose error messages in groups as these may be very large. - for (const error of result.errors) { - core.startGroup("Error details: " + error.stack); - core.info(JSON.stringify(error, null, 2)); - core.endGroup(); - } - - return false; + const sarif = JSON.parse(fs.readFileSync(sarifFilePath, 'utf8')); + const schema = JSON.parse(fs.readFileSync(__dirname + '/../src/sarif_v2.1.0_schema.json', 'utf8')); + + const result = new jsonschema.Validator().validate(sarif, schema); + if (result.valid) { + return true; + } else { + // Set the failure message to the stacks of all the errors. + // This should be of a manageable size and may even give enough to fix the error. + const errorMessages = result.errors.map(e => "- " + e.stack); + core.setFailed("Unable to upload \"" + sarifFilePath + "\" as it is not valid SARIF:\n" + errorMessages.join("\n")); + + // Also output the more verbose error messages in groups as these may be very large. + for (const error of result.errors) { + core.startGroup("Error details: " + error.stack); + core.info(JSON.stringify(error, null, 2)); + core.endGroup(); } + + return false; + } } // Uploads the given set of sarif files. // Returns true iff the upload occurred and succeeded async function uploadFiles(sarifFiles: string[]): Promise { - core.startGroup("Uploading results"); - core.info("Uploading sarif files: " + JSON.stringify(sarifFiles)); + core.startGroup("Uploading results"); + core.info("Uploading sarif files: " + JSON.stringify(sarifFiles)); - const sentinelEnvVar = "CODEQL_UPLOAD_SARIF"; - if (process.env[sentinelEnvVar]) { - core.error("Aborting upload: only one run of the codeql/analyze or codeql/upload-sarif actions is allowed per job"); - return false; - } - core.exportVariable(sentinelEnvVar, sentinelEnvVar); - - // Validate that the files we were asked to upload are all valid SARIF files - for (const file of sarifFiles) { - if (!validateSarifFileSchema(file)) { - return false; - } - } - - const commitOid = await util.getCommitOid(); - const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID'); - const ref = util.getRef(); - const analysisKey = await util.getAnalysisKey(); - const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW'); - const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT]; - - let sarifPayload = combineSarifFiles(sarifFiles); - sarifPayload = fingerprints.addFingerprints(sarifPayload); - - const zipped_sarif = zlib.gzipSync(sarifPayload).toString('base64'); - let checkoutPath = core.getInput('checkout_path'); - let checkoutURI = fileUrl(checkoutPath); - const workflowRunID = parseInt(workflowRunIDStr, 10); - - if (Number.isNaN(workflowRunID)) { - core.setFailed('GITHUB_RUN_ID must define a non NaN workflow run ID'); - return false; - } + const sentinelEnvVar = "CODEQL_UPLOAD_SARIF"; + if (process.env[sentinelEnvVar]) { + core.error("Aborting upload: only one run of the codeql/analyze or codeql/upload-sarif actions is allowed per job"); + return false; + } + core.exportVariable(sentinelEnvVar, sentinelEnvVar); - let matrix: string | undefined = core.getInput('matrix'); - if (matrix === "null" || matrix === "") { - matrix = undefined; + // Validate that the files we were asked to upload are all valid SARIF files + for (const file of sarifFiles) { + if (!validateSarifFileSchema(file)) { + return false; } + } - const toolNames = util.getToolNames(sarifPayload); + const commitOid = await util.getCommitOid(); + const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID'); + const ref = util.getRef(); + const analysisKey = await util.getAnalysisKey(); + const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW'); + const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT]; - const payload = JSON.stringify({ - "commit_oid": commitOid, - "ref": ref, - "analysis_key": analysisKey, - "analysis_name": analysisName, - "sarif": zipped_sarif, - "workflow_run_id": workflowRunID, - "checkout_uri": checkoutURI, - "environment": matrix, - "started_at": startedAt, - "tool_names": toolNames, - }); + let sarifPayload = combineSarifFiles(sarifFiles); + sarifPayload = fingerprints.addFingerprints(sarifPayload); - // Log some useful debug info about the info - core.debug("Raw upload size: " + sarifPayload.length + " bytes"); - core.debug("Base64 zipped upload size: " + zipped_sarif.length + " bytes"); - core.debug("Number of results in upload: " + countResultsInSarif(sarifPayload)); + const zipped_sarif = zlib.gzipSync(sarifPayload).toString('base64'); + let checkoutPath = core.getInput('checkout_path'); + let checkoutURI = fileUrl(checkoutPath); + const workflowRunID = parseInt(workflowRunIDStr, 10); - // Make the upload - const succeeded = await uploadPayload(payload); - - core.endGroup(); - - return succeeded; + if (Number.isNaN(workflowRunID)) { + core.setFailed('GITHUB_RUN_ID must define a non NaN workflow run ID'); + return false; + } + + let matrix: string | undefined = core.getInput('matrix'); + if (matrix === "null" || matrix === "") { + matrix = undefined; + } + + const toolNames = util.getToolNames(sarifPayload); + + const payload = JSON.stringify({ + "commit_oid": commitOid, + "ref": ref, + "analysis_key": analysisKey, + "analysis_name": analysisName, + "sarif": zipped_sarif, + "workflow_run_id": workflowRunID, + "checkout_uri": checkoutURI, + "environment": matrix, + "started_at": startedAt, + "tool_names": toolNames, + }); + + // Log some useful debug info about the info + core.debug("Raw upload size: " + sarifPayload.length + " bytes"); + core.debug("Base64 zipped upload size: " + zipped_sarif.length + " bytes"); + core.debug("Number of results in upload: " + countResultsInSarif(sarifPayload)); + + // Make the upload + const succeeded = await uploadPayload(payload); + + core.endGroup(); + + return succeeded; } diff --git a/src/upload-sarif.ts b/src/upload-sarif.ts index 418769c27..8d3aada6d 100644 --- a/src/upload-sarif.ts +++ b/src/upload-sarif.ts @@ -4,24 +4,24 @@ import * as upload_lib from './upload-lib'; import * as util from './util'; async function run() { - if (util.should_abort('upload-sarif', false) || !await util.reportActionStarting('upload-sarif')) { - return; - } + if (util.should_abort('upload-sarif', false) || !await util.reportActionStarting('upload-sarif')) { + return; + } - try { - if (await upload_lib.upload(core.getInput('sarif_file'))) { - await util.reportActionSucceeded('upload-sarif'); - } else { - await util.reportActionFailed('upload-sarif', 'upload'); - } - } catch (error) { - core.setFailed(error.message); - await util.reportActionFailed('upload-sarif', error.message, error.stack); - return; + try { + if (await upload_lib.upload(core.getInput('sarif_file'))) { + await util.reportActionSucceeded('upload-sarif'); + } else { + await util.reportActionFailed('upload-sarif', 'upload'); } + } catch (error) { + core.setFailed(error.message); + await util.reportActionFailed('upload-sarif', error.message, error.stack); + return; + } } run().catch(e => { - core.setFailed("codeql/upload-sarif action failed: " + e); - console.log(e); + core.setFailed("codeql/upload-sarif action failed: " + e); + console.log(e); }); diff --git a/src/util.ts b/src/util.ts index eb62441a1..a32bdac9b 100644 --- a/src/util.ts +++ b/src/util.ts @@ -19,81 +19,81 @@ import * as sharedEnv from './shared-environment'; */ export function should_abort(actionName: string, requireInitActionHasRun: boolean): boolean { - // Check that required aspects of the environment are present - const ref = process.env['GITHUB_REF']; - if (ref === undefined) { - core.setFailed('GITHUB_REF must be set.'); - return true; - } + // Check that required aspects of the environment are present + const ref = process.env['GITHUB_REF']; + if (ref === undefined) { + core.setFailed('GITHUB_REF must be set.'); + return true; + } - // If the init action is required, then check the it completed successfully. - if (requireInitActionHasRun && process.env[sharedEnv.CODEQL_ACTION_INIT_COMPLETED] === undefined) { - core.setFailed('The CodeQL ' + actionName + ' action cannot be used unless the CodeQL init action is run first. Aborting.'); - return true; - } + // If the init action is required, then check the it completed successfully. + if (requireInitActionHasRun && process.env[sharedEnv.CODEQL_ACTION_INIT_COMPLETED] === undefined) { + core.setFailed('The CodeQL ' + actionName + ' action cannot be used unless the CodeQL init action is run first. Aborting.'); + return true; + } - return false; + return false; } /** * Get an environment parameter, but throw an error if it is not set. */ export function getRequiredEnvParam(paramName: string): string { - const value = process.env[paramName]; - if (value === undefined) { - throw new Error(paramName + ' environment variable must be set'); - } - core.debug(paramName + '=' + value); - return value; + const value = process.env[paramName]; + if (value === undefined) { + throw new Error(paramName + ' environment variable must be set'); + } + core.debug(paramName + '=' + value); + return value; } /** * Gets the set of languages in the current repository */ async function getLanguagesInRepo(): Promise { - // Translate between GitHub's API names for languages and ours - const codeqlLanguages = { - 'C': 'cpp', - 'C++': 'cpp', - 'C#': 'csharp', - 'Go': 'go', - 'Java': 'java', - 'JavaScript': 'javascript', - 'TypeScript': 'javascript', - 'Python': 'python', - }; - let repo_nwo = process.env['GITHUB_REPOSITORY']?.split("/"); - if (repo_nwo) { - let owner = repo_nwo[0]; - let repo = repo_nwo[1]; - - core.debug(`GitHub repo ${owner} ${repo}`); - let ok = new octokit.Octokit({ - auth: core.getInput('token'), - userAgent: "CodeQL Action", - log: consoleLogLevel({ level: "debug" }) - }); - const response = await ok.request("GET /repos/:owner/:repo/languages", ({ - owner, - repo - })); - - core.debug("Languages API response: " + JSON.stringify(response)); - - // The GitHub API is going to return languages in order of popularity, - // When we pick a language to autobuild we want to pick the most popular traced language - // Since sets in javascript maintain insertion order, using a set here and then splatting it - // into an array gives us an array of languages ordered by popularity - let languages: Set = new Set(); - for (let lang in response.data) { - if (lang in codeqlLanguages) { - languages.add(codeqlLanguages[lang]); - } - } - return [...languages]; - } else { - return []; + // Translate between GitHub's API names for languages and ours + const codeqlLanguages = { + 'C': 'cpp', + 'C++': 'cpp', + 'C#': 'csharp', + 'Go': 'go', + 'Java': 'java', + 'JavaScript': 'javascript', + 'TypeScript': 'javascript', + 'Python': 'python', + }; + let repo_nwo = process.env['GITHUB_REPOSITORY']?.split("/"); + if (repo_nwo) { + let owner = repo_nwo[0]; + let repo = repo_nwo[1]; + + core.debug(`GitHub repo ${owner} ${repo}`); + let ok = new octokit.Octokit({ + auth: core.getInput('token'), + userAgent: "CodeQL Action", + log: consoleLogLevel({ level: "debug" }) + }); + const response = await ok.request("GET /repos/:owner/:repo/languages", ({ + owner, + repo + })); + + core.debug("Languages API response: " + JSON.stringify(response)); + + // The GitHub API is going to return languages in order of popularity, + // When we pick a language to autobuild we want to pick the most popular traced language + // Since sets in javascript maintain insertion order, using a set here and then splatting it + // into an array gives us an array of languages ordered by popularity + let languages: Set = new Set(); + for (let lang in response.data) { + if (lang in codeqlLanguages) { + languages.add(codeqlLanguages[lang]); + } } + return [...languages]; + } else { + return []; + } } /** @@ -110,71 +110,71 @@ async function getLanguagesInRepo(): Promise { */ export async function getLanguages(): Promise { - // Obtain from CODEQL_ACTION_LANGUAGES if set - const langsVar = process.env[sharedEnv.CODEQL_ACTION_LANGUAGES]; - if (langsVar) { - return langsVar.split(',') - .map(x => x.trim()) - .filter(x => x.length > 0); - } - // Obtain from action input 'languages' if set - let languages = core.getInput('languages', { required: false }) - .split(',') - .map(x => x.trim()) - .filter(x => x.length > 0); - core.info("Languages from configuration: " + JSON.stringify(languages)); - - if (languages.length === 0) { - // Obtain languages as all languages in the repo that can be analysed - languages = await getLanguagesInRepo(); - core.info("Automatically detected languages: " + JSON.stringify(languages)); - } - - core.exportVariable(sharedEnv.CODEQL_ACTION_LANGUAGES, languages.join(',')); - - return languages; + // Obtain from CODEQL_ACTION_LANGUAGES if set + const langsVar = process.env[sharedEnv.CODEQL_ACTION_LANGUAGES]; + if (langsVar) { + return langsVar.split(',') + .map(x => x.trim()) + .filter(x => x.length > 0); + } + // Obtain from action input 'languages' if set + let languages = core.getInput('languages', { required: false }) + .split(',') + .map(x => x.trim()) + .filter(x => x.length > 0); + core.info("Languages from configuration: " + JSON.stringify(languages)); + + if (languages.length === 0) { + // Obtain languages as all languages in the repo that can be analysed + languages = await getLanguagesInRepo(); + core.info("Automatically detected languages: " + JSON.stringify(languages)); + } + + core.exportVariable(sharedEnv.CODEQL_ACTION_LANGUAGES, languages.join(',')); + + return languages; } /** * Gets the SHA of the commit that is currently checked out. */ export async function getCommitOid(): Promise { - let commitOid = ''; - await exec.exec('git', ['rev-parse', 'HEAD'], { - silent: true, - listeners: { - stdout: (data) => { commitOid += data.toString(); }, - stderr: (data) => { process.stderr.write(data); } - } - }); - return commitOid.trim(); + let commitOid = ''; + await exec.exec('git', ['rev-parse', 'HEAD'], { + silent: true, + listeners: { + stdout: (data) => { commitOid += data.toString(); }, + stderr: (data) => { process.stderr.write(data); } + } + }); + return commitOid.trim(); } /** * Get the path of the currently executing workflow. */ async function getWorkflowPath(): Promise { - const repo_nwo = getRequiredEnvParam('GITHUB_REPOSITORY').split("/"); - const owner = repo_nwo[0]; - const repo = repo_nwo[1]; - const run_id = getRequiredEnvParam('GITHUB_RUN_ID'); - - const ok = new octokit.Octokit({ - auth: core.getInput('token'), - userAgent: "CodeQL Action", - log: consoleLogLevel({ level: 'debug' }) - }); - - const runsResponse = await ok.request('GET /repos/:owner/:repo/actions/runs/:run_id', { - owner, - repo, - run_id - }); - const workflowUrl = runsResponse.data.workflow_url; - - const workflowResponse = await ok.request('GET ' + workflowUrl); - - return workflowResponse.data.path; + const repo_nwo = getRequiredEnvParam('GITHUB_REPOSITORY').split("/"); + const owner = repo_nwo[0]; + const repo = repo_nwo[1]; + const run_id = getRequiredEnvParam('GITHUB_RUN_ID'); + + const ok = new octokit.Octokit({ + auth: core.getInput('token'), + userAgent: "CodeQL Action", + log: consoleLogLevel({ level: 'debug' }) + }); + + const runsResponse = await ok.request('GET /repos/:owner/:repo/actions/runs/:run_id', { + owner, + repo, + run_id + }); + const workflowUrl = runsResponse.data.workflow_url; + + const workflowResponse = await ok.request('GET ' + workflowUrl); + + return workflowResponse.data.path; } /** @@ -185,54 +185,54 @@ async function getWorkflowPath(): Promise { * the github API, but after that the result will be cached. */ export async function getAnalysisKey(): Promise { - let analysisKey = process.env[sharedEnv.CODEQL_ACTION_ANALYSIS_KEY]; - if (analysisKey !== undefined) { - return analysisKey; - } + let analysisKey = process.env[sharedEnv.CODEQL_ACTION_ANALYSIS_KEY]; + if (analysisKey !== undefined) { + return analysisKey; + } - const workflowPath = await getWorkflowPath(); - const jobName = getRequiredEnvParam('GITHUB_JOB'); + const workflowPath = await getWorkflowPath(); + const jobName = getRequiredEnvParam('GITHUB_JOB'); - analysisKey = workflowPath + ':' + jobName; - core.exportVariable(sharedEnv.CODEQL_ACTION_ANALYSIS_KEY, analysisKey); - return analysisKey; + analysisKey = workflowPath + ':' + jobName; + core.exportVariable(sharedEnv.CODEQL_ACTION_ANALYSIS_KEY, analysisKey); + return analysisKey; } /** * Get the ref currently being analyzed. */ export function getRef(): string { - // Will be in the form "refs/heads/master" on a push event - // or in the form "refs/pull/N/merge" on a pull_request event - const ref = getRequiredEnvParam('GITHUB_REF'); - - // For pull request refs we want to convert from the 'merge' ref - // to the 'head' ref, as that is what we want to analyse. - // There should have been some code earlier in the workflow to do - // the checkout, but we have no way of verifying that here. - const pull_ref_regex = /refs\/pull\/(\d+)\/merge/; - if (pull_ref_regex.test(ref)) { - return ref.replace(pull_ref_regex, 'refs/pull/$1/head'); - } else { - return ref; - } + // Will be in the form "refs/heads/master" on a push event + // or in the form "refs/pull/N/merge" on a pull_request event + const ref = getRequiredEnvParam('GITHUB_REF'); + + // For pull request refs we want to convert from the 'merge' ref + // to the 'head' ref, as that is what we want to analyse. + // There should have been some code earlier in the workflow to do + // the checkout, but we have no way of verifying that here. + const pull_ref_regex = /refs\/pull\/(\d+)\/merge/; + if (pull_ref_regex.test(ref)) { + return ref.replace(pull_ref_regex, 'refs/pull/$1/head'); + } else { + return ref; + } } interface StatusReport { - "workflow_run_id": number; - "workflow_name": string; - "job_name": string; - "matrix_vars"?: string; - "languages": string; - "commit_oid": string; - "ref": string; - "action_name": string; - "action_oid": string; - "started_at": string; - "completed_at"?: string; - "status": string; - "cause"?: string; - "exception"?: string; + "workflow_run_id": number; + "workflow_name": string; + "job_name": string; + "matrix_vars"?: string; + "languages": string; + "commit_oid": string; + "ref": string; + "action_name": string; + "action_oid": string; + "started_at": string; + "completed_at"?: string; + "status": string; + "cause"?: string; + "exception"?: string; } /** @@ -244,54 +244,54 @@ interface StatusReport { * @param exception Exception (only supply if status is 'failure') */ async function createStatusReport( - actionName: string, - status: string, - cause?: string, - exception?: string): - Promise { - - const commitOid = process.env['GITHUB_SHA'] || ''; - const ref = getRef(); - const workflowRunIDStr = process.env['GITHUB_RUN_ID']; - let workflowRunID = -1; - if (workflowRunIDStr) { - workflowRunID = parseInt(workflowRunIDStr, 10); - } - const workflowName = process.env['GITHUB_WORKFLOW'] || ''; - const jobName = process.env['GITHUB_JOB'] || ''; - const languages = (await getLanguages()).sort().join(','); - const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT] || new Date().toISOString(); - core.exportVariable(sharedEnv.CODEQL_ACTION_STARTED_AT, startedAt); - - let statusReport: StatusReport = { - workflow_run_id: workflowRunID, - workflow_name: workflowName, - job_name: jobName, - languages: languages, - commit_oid: commitOid, - ref: ref, - action_name: actionName, - action_oid: "unknown", // TODO decide if it's possible to fill this in - started_at: startedAt, - status: status - }; - - // Add optional parameters - if (cause) { - statusReport.cause = cause; - } - if (exception) { - statusReport.exception = exception; - } - if (status === 'success' || status === 'failure') { - statusReport.completed_at = new Date().toISOString(); - } - let matrix: string | undefined = core.getInput('matrix'); - if (matrix) { - statusReport.matrix_vars = matrix; - } - - return statusReport; + actionName: string, + status: string, + cause?: string, + exception?: string): + Promise { + + const commitOid = process.env['GITHUB_SHA'] || ''; + const ref = getRef(); + const workflowRunIDStr = process.env['GITHUB_RUN_ID']; + let workflowRunID = -1; + if (workflowRunIDStr) { + workflowRunID = parseInt(workflowRunIDStr, 10); + } + const workflowName = process.env['GITHUB_WORKFLOW'] || ''; + const jobName = process.env['GITHUB_JOB'] || ''; + const languages = (await getLanguages()).sort().join(','); + const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT] || new Date().toISOString(); + core.exportVariable(sharedEnv.CODEQL_ACTION_STARTED_AT, startedAt); + + let statusReport: StatusReport = { + workflow_run_id: workflowRunID, + workflow_name: workflowName, + job_name: jobName, + languages: languages, + commit_oid: commitOid, + ref: ref, + action_name: actionName, + action_oid: "unknown", // TODO decide if it's possible to fill this in + started_at: startedAt, + status: status + }; + + // Add optional parameters + if (cause) { + statusReport.cause = cause; + } + if (exception) { + statusReport.exception = exception; + } + if (status === 'success' || status === 'failure') { + statusReport.completed_at = new Date().toISOString(); + } + let matrix: string | undefined = core.getInput('matrix'); + if (matrix) { + statusReport.matrix_vars = matrix; + } + + return statusReport; } /** @@ -302,18 +302,18 @@ async function createStatusReport( * received. */ async function sendStatusReport(statusReport: StatusReport): Promise { - const statusReportJSON = JSON.stringify(statusReport); + const statusReportJSON = JSON.stringify(statusReport); - core.debug('Sending status report: ' + statusReportJSON); + core.debug('Sending status report: ' + statusReportJSON); - const githubToken = core.getInput('token'); - const ph: auth.BearerCredentialHandler = new auth.BearerCredentialHandler(githubToken); - const client = new http.HttpClient('Code Scanning : Status Report', [ph]); - const url = 'https://api.github.com/repos/' + process.env['GITHUB_REPOSITORY'] - + '/code-scanning/analysis/status'; - const res: http.HttpClientResponse = await client.put(url, statusReportJSON); + const githubToken = core.getInput('token'); + const ph: auth.BearerCredentialHandler = new auth.BearerCredentialHandler(githubToken); + const client = new http.HttpClient('Code Scanning : Status Report', [ph]); + const url = 'https://api.github.com/repos/' + process.env['GITHUB_REPOSITORY'] + + '/code-scanning/analysis/status'; + const res: http.HttpClientResponse = await client.put(url, statusReportJSON); - return res.message?.statusCode; + return res.message?.statusCode; } /** @@ -325,24 +325,24 @@ async function sendStatusReport(statusReport: StatusReport): Promise { - const statusCode = await sendStatusReport(await createStatusReport(action, 'starting')); - - // If the status report request fails with a 403 or a 404, then this is a deliberate - // message from the endpoint that the SARIF upload can be expected to fail too, - // so the action should fail to avoid wasting actions minutes. - // - // Other failure responses (or lack thereof) could be transitory and should not - // cause the action to fail. - if (statusCode === 403) { - core.setFailed('The repo on which this action is running is not opted-in to CodeQL code scanning.'); - return false; - } - if (statusCode === 404) { - core.setFailed('Not authorized to used the CodeQL code scanning feature on this repo.'); - return false; - } + const statusCode = await sendStatusReport(await createStatusReport(action, 'starting')); + + // If the status report request fails with a 403 or a 404, then this is a deliberate + // message from the endpoint that the SARIF upload can be expected to fail too, + // so the action should fail to avoid wasting actions minutes. + // + // Other failure responses (or lack thereof) could be transitory and should not + // cause the action to fail. + if (statusCode === 403) { + core.setFailed('The repo on which this action is running is not opted-in to CodeQL code scanning.'); + return false; + } + if (statusCode === 404) { + core.setFailed('Not authorized to used the CodeQL code scanning feature on this repo.'); + return false; + } - return true; + return true; } /** @@ -352,7 +352,7 @@ export async function reportActionStarting(action: string): Promise { * this is likely to give a more useful duration when inspecting events. */ export async function reportActionFailed(action: string, cause?: string, exception?: string) { - await sendStatusReport(await createStatusReport(action, 'failure', cause, exception)); + await sendStatusReport(await createStatusReport(action, 'failure', cause, exception)); } /** @@ -362,7 +362,7 @@ export async function reportActionFailed(action: string, cause?: string, excepti * this is likely to give a more useful duration when inspecting events. */ export async function reportActionSucceeded(action: string) { - await sendStatusReport(await createStatusReport(action, 'success')); + await sendStatusReport(await createStatusReport(action, 'success')); } /** @@ -371,27 +371,27 @@ export async function reportActionSucceeded(action: string) { * Returns an array of unique string tool names. */ export function getToolNames(sarifContents: string): string[] { - const sarif = JSON.parse(sarifContents); - const toolNames = {}; - - for (const run of sarif.runs || []) { - const tool = run.tool || {}; - const driver = tool.driver || {}; - if (typeof driver.name === "string" && driver.name.length > 0) { - toolNames[driver.name] = true; - } + const sarif = JSON.parse(sarifContents); + const toolNames = {}; + + for (const run of sarif.runs || []) { + const tool = run.tool || {}; + const driver = tool.driver || {}; + if (typeof driver.name === "string" && driver.name.length > 0) { + toolNames[driver.name] = true; } + } - return Object.keys(toolNames); + return Object.keys(toolNames); } // Creates a random temporary directory, runs the given body, and then deletes the directory. // Mostly intended for use within tests. export async function withTmpDir(body: (tmpDir: string) => Promise): Promise { - const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'codeql-action-')); - const result = await body(tmpDir); - fs.rmdirSync(tmpDir, { recursive: true }); - return result; + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'codeql-action-')); + const result = await body(tmpDir); + fs.rmdirSync(tmpDir, { recursive: true }); + return result; } /** @@ -401,20 +401,20 @@ export async function withTmpDir(body: (tmpDir: string) => Promise): Promi * @returns string */ export function getMemoryFlag(): string { - let memoryToUseMegaBytes: number; - const memoryToUseString = core.getInput("ram"); - if (memoryToUseString) { - memoryToUseMegaBytes = Number(memoryToUseString); - if (Number.isNaN(memoryToUseMegaBytes) || memoryToUseMegaBytes <= 0) { - throw new Error("Invalid RAM setting \"" + memoryToUseString + "\", specified."); - } - } else { - const totalMemoryBytes = os.totalmem(); - const totalMemoryMegaBytes = totalMemoryBytes / (1024 * 1024); - const systemReservedMemoryMegaBytes = 256; - memoryToUseMegaBytes = totalMemoryMegaBytes - systemReservedMemoryMegaBytes; + let memoryToUseMegaBytes: number; + const memoryToUseString = core.getInput("ram"); + if (memoryToUseString) { + memoryToUseMegaBytes = Number(memoryToUseString); + if (Number.isNaN(memoryToUseMegaBytes) || memoryToUseMegaBytes <= 0) { + throw new Error("Invalid RAM setting \"" + memoryToUseString + "\", specified."); } - return "--ram=" + Math.floor(memoryToUseMegaBytes); + } else { + const totalMemoryBytes = os.totalmem(); + const totalMemoryMegaBytes = totalMemoryBytes / (1024 * 1024); + const systemReservedMemoryMegaBytes = 256; + memoryToUseMegaBytes = totalMemoryMegaBytes - systemReservedMemoryMegaBytes; + } + return "--ram=" + Math.floor(memoryToUseMegaBytes); } /** @@ -424,21 +424,21 @@ export function getMemoryFlag(): string { * @returns string */ export function getThreadsFlag(): string { - let numThreads = 1; - const numThreadsString = core.getInput("threads"); - if (numThreadsString) { - numThreads = Number(numThreadsString); - if (Number.isNaN(numThreads)) { - throw new Error(`Invalid threads setting "${numThreadsString}", specified.`); - } - const maxThreads = os.cpus().length; - if (numThreads > maxThreads) { - numThreads = maxThreads; - } - const minThreads = -maxThreads; - if (numThreads < minThreads) { - numThreads = minThreads; - } + let numThreads = 1; + const numThreadsString = core.getInput("threads"); + if (numThreadsString) { + numThreads = Number(numThreadsString); + if (Number.isNaN(numThreads)) { + throw new Error(`Invalid threads setting "${numThreadsString}", specified.`); + } + const maxThreads = os.cpus().length; + if (numThreads > maxThreads) { + numThreads = maxThreads; + } + const minThreads = -maxThreads; + if (numThreads < minThreads) { + numThreads = minThreads; } - return `--threads=${numThreads}`; + } + return `--threads=${numThreads}`; }