@appland/appmap 3.106.0 → 3.107.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/built/cmds/inventory/analyzers/collectAppMapSize.js +19 -0
- package/built/cmds/inventory/analyzers/collectAppMapSize.js.map +1 -0
- package/built/cmds/inventory/analyzers/collectFindings.js +2 -1
- package/built/cmds/inventory/analyzers/collectFindings.js.map +1 -1
- package/built/cmds/inventory/analyzers/collectFunctionOccurances.js +20 -0
- package/built/cmds/inventory/analyzers/collectFunctionOccurances.js.map +1 -0
- package/built/cmds/inventory/analyzers/collectMetadata.js +1 -2
- package/built/cmds/inventory/analyzers/collectMetadata.js.map +1 -1
- package/built/cmds/inventory/buildReport.js +34 -3
- package/built/cmds/inventory/buildReport.js.map +1 -1
- package/built/cmds/inventory/inventory.js +21 -2
- package/built/cmds/inventory/inventory.js.map +1 -1
- package/built/cmds/inventory-report/SummaryReport.js +3 -0
- package/built/cmds/inventory-report/SummaryReport.js.map +1 -0
- package/built/cmds/inventory-report/SummaryReporter.js +18 -4
- package/built/cmds/inventory-report/SummaryReporter.js.map +1 -1
- package/built/cmds/inventory-report/WelcomeReport.js +3 -0
- package/built/cmds/inventory-report/WelcomeReport.js.map +1 -0
- package/built/cmds/inventory-report/WelcomeReporter.js +35 -1
- package/built/cmds/inventory-report/WelcomeReporter.js.map +1 -1
- package/built/cmds/stats/{directory/statsForMap.js → accumulateEvents.js} +3 -40
- package/built/cmds/stats/accumulateEvents.js.map +1 -0
- package/built/cmds/stats/stats.js +2 -2
- package/built/cmds/stats/stats.js.map +1 -1
- package/built/cmds/stats/{directory/statsForDirectory.js → statsForDirectory.js} +3 -3
- package/built/cmds/stats/statsForDirectory.js.map +1 -0
- package/built/cmds/stats/statsForMap.js +43 -0
- package/built/cmds/stats/statsForMap.js.map +1 -0
- package/built/lib/emitUsage.js +31 -15
- package/built/lib/emitUsage.js.map +1 -1
- package/package.json +1 -1
- package/resources/inventory-report/summary/summary.hbs +7 -8
- package/resources/inventory-report/welcome/welcome.hbs +82 -6
- package/built/cmds/stats/directory/statsForDirectory.js.map +0 -1
- package/built/cmds/stats/directory/statsForMap.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
# [@appland/appmap-v3.107.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.106.0...@appland/appmap-v3.107.0) (2023-11-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* emitUsage reports metadata as an object ([d07e795](https://github.com/getappmap/appmap-js/commit/d07e795ccb084024d4abe1e724c3147c46f2b7e1))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Apply wording update suggestions from code review ([5be8529](https://github.com/getappmap/appmap-js/commit/5be852954cb5b1e9a6cb16e2728aa3f27aa32bb5))
|
|
12
|
+
* Include AppMap config in run-stats report ([4ffe1a4](https://github.com/getappmap/appmap-js/commit/4ffe1a47cf2ffbe9b36caac3e9eae1cb8ac3a60b))
|
|
13
|
+
* Report large appmaps and frequent functions ([ccf7b6c](https://github.com/getappmap/appmap-js/commit/ccf7b6c40e9ffad9ceeaa57393d9e0c3890136c7))
|
|
14
|
+
* Report large appmaps and frequent functions ([b576e64](https://github.com/getappmap/appmap-js/commit/b576e649d7c48a78ab086d1201817ca84fb6937f))
|
|
15
|
+
* Report large appmaps and frequent functions ([5b31a58](https://github.com/getappmap/appmap-js/commit/5b31a583872f1cb884e7b6243d498d692a8d59d0))
|
|
16
|
+
* Show a rule summary rather than finding summary ([ccf88bb](https://github.com/getappmap/appmap-js/commit/ccf88bbad9b3b23baeddda9b79078fde5268247d))
|
|
17
|
+
|
|
1
18
|
# [@appland/appmap-v3.106.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.105.0...@appland/appmap-v3.106.0) (2023-10-31)
|
|
2
19
|
|
|
3
20
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const console_1 = require("console");
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
function collectAppMapSize(appmapSizeInBytes) {
|
|
6
|
+
return async (appmap) => {
|
|
7
|
+
let stats;
|
|
8
|
+
try {
|
|
9
|
+
stats = await (0, promises_1.stat)(appmap);
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
(0, console_1.warn)(`Error reading stats for ${appmap}: ${e}`);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
appmapSizeInBytes[appmap] = stats.size;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.default = collectAppMapSize;
|
|
19
|
+
//# sourceMappingURL=collectAppMapSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectAppMapSize.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectAppMapSize.ts"],"names":[],"mappings":";;AAAA,qCAA+B;AAE/B,0CAAmC;AAEnC,SAAwB,iBAAiB,CAAC,iBAAyC;IACjF,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,IAAI,KAAY,CAAC;QACjB,IAAI;YACF,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,MAAM,CAAC,CAAC;SAC5B;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,cAAI,EAAC,2BAA2B,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO;SACR;QAED,iBAAiB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAZD,oCAYC"}
|
|
@@ -14,7 +14,8 @@ function collectFindings(findings) {
|
|
|
14
14
|
const mDate = modifiedDate(finding);
|
|
15
15
|
if (mDate)
|
|
16
16
|
findings.push({
|
|
17
|
-
appmap,
|
|
17
|
+
appmap: appmap.slice(0, -'.appmap.json'.length),
|
|
18
|
+
ruleId: finding.ruleId,
|
|
18
19
|
impactDomain: finding.impactDomain,
|
|
19
20
|
modifiedDate: new Date(mDate),
|
|
20
21
|
hash_v2: finding.hash_v2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectFindings.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectFindings.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAG7C,SAAwB,eAAe,CAAC,QAA0B;IAChE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAoB,EAAE,CAC1D,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAE1D,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,uBAAa,EAAC,MAAM,EAAE,sBAAsB,CAAC,CAAgB,CAAC;QACzF,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,KAAK;gBACP,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM;
|
|
1
|
+
{"version":3,"file":"collectFindings.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectFindings.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAG7C,SAAwB,eAAe,CAAC,QAA0B;IAChE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAoB,EAAE,CAC1D,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAE1D,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,uBAAa,EAAC,MAAM,EAAE,sBAAsB,CAAC,CAAgB,CAAC;QACzF,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,KAAK;gBACP,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;oBAC/C,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB,CAAC,CAAC;SACN;IACH,CAAC,CAAC;AACJ,CAAC;AApBD,kCAoBC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const accumulateEvents_1 = require("../../stats/accumulateEvents");
|
|
4
|
+
function collectFunctionOccurances(functionOccurrances) {
|
|
5
|
+
return async (appmap) => {
|
|
6
|
+
const eventInfos = await (0, accumulateEvents_1.accumulateEvents)(appmap);
|
|
7
|
+
for (const eventInfo of eventInfos) {
|
|
8
|
+
if (!functionOccurrances[eventInfo.function]) {
|
|
9
|
+
functionOccurrances[eventInfo.function] = eventInfo;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
const existing = functionOccurrances[eventInfo.function];
|
|
13
|
+
existing.count += eventInfo.count;
|
|
14
|
+
existing.size += eventInfo.size;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.default = collectFunctionOccurances;
|
|
20
|
+
//# sourceMappingURL=collectFunctionOccurances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectFunctionOccurances.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectFunctionOccurances.ts"],"names":[],"mappings":";;AAAA,mEAA2E;AAE3E,SAAwB,yBAAyB,CAAC,mBAA8C;IAC9F,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAgB,EAAC,MAAM,CAAC,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC5C,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;aACrD;iBAAM;gBACL,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACzD,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;gBAClC,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC;aACjC;SACF;IACH,CAAC,CAAC;AACJ,CAAC;AAbD,4CAaC"}
|
|
@@ -7,9 +7,8 @@ const readIndexFile_1 = __importDefault(require("../readIndexFile"));
|
|
|
7
7
|
function collectMetadata(appmapCountByRecorderName) {
|
|
8
8
|
return async (appmap) => {
|
|
9
9
|
var _a;
|
|
10
|
+
// Existance of metadata.json is assured by buildReport
|
|
10
11
|
const metadata = await (0, readIndexFile_1.default)(appmap, 'metadata.json');
|
|
11
|
-
if (!metadata)
|
|
12
|
-
return;
|
|
13
12
|
const recorderName = ((_a = metadata.recorder) === null || _a === void 0 ? void 0 : _a.name) || 'unknown';
|
|
14
13
|
if (!appmapCountByRecorderName[recorderName])
|
|
15
14
|
appmapCountByRecorderName[recorderName] = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectMetadata.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectMetadata.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAE7C,SAAwB,eAAe,CAAC,yBAAiD;IACvF,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;;QAC9B,MAAM,QAAQ,GAAa,MAAM,IAAA,uBAAa,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxE,
|
|
1
|
+
{"version":3,"file":"collectMetadata.js","sourceRoot":"","sources":["../../../../src/cmds/inventory/analyzers/collectMetadata.ts"],"names":[],"mappings":";;;;;AACA,qEAA6C;AAE7C,SAAwB,eAAe,CAAC,yBAAiD;IACvF,OAAO,KAAK,EAAE,MAAc,EAAE,EAAE;;QAC9B,uDAAuD;QACvD,MAAM,QAAQ,GAAa,MAAM,IAAA,uBAAa,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,IAAI,KAAI,SAAS,CAAC;QAC1D,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;YAAE,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;;YACrF,yBAAyB,CAAC,YAAY,CAAC,GAAG,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC;AARD,kCAQC"}
|
|
@@ -13,11 +13,13 @@ const collectPackageDependencies_1 = require("./analyzers/collectPackageDependen
|
|
|
13
13
|
const collectSQLTables_1 = require("./analyzers/collectSQLTables");
|
|
14
14
|
const collectLabels_1 = require("./analyzers/collectLabels");
|
|
15
15
|
const collectRoutes_1 = __importDefault(require("./analyzers/collectRoutes"));
|
|
16
|
+
const collectAppMapSize_1 = __importDefault(require("./analyzers/collectAppMapSize"));
|
|
17
|
+
const collectFunctionOccurances_1 = __importDefault(require("./analyzers/collectFunctionOccurances"));
|
|
16
18
|
const path_1 = require("path");
|
|
17
19
|
const console_1 = require("console");
|
|
18
20
|
const readIndexFile_1 = __importDefault(require("./readIndexFile"));
|
|
19
21
|
const collectFindings_1 = __importDefault(require("./analyzers/collectFindings"));
|
|
20
|
-
async function buildReport(appmapDir, appmaps,
|
|
22
|
+
async function buildReport(appmapDir, appmaps, options) {
|
|
21
23
|
const appmapCountByRecorderName = {};
|
|
22
24
|
const appmapCountByHTTPServerRequestCount = {};
|
|
23
25
|
const appmapCountBySQLQueryCount = {};
|
|
@@ -28,15 +30,17 @@ async function buildReport(appmapDir, appmaps, resourceTokens) {
|
|
|
28
30
|
const routeCountByResource = {};
|
|
29
31
|
const routeCountByContentType = {};
|
|
30
32
|
const findings = [];
|
|
33
|
+
const appmapSize = {};
|
|
31
34
|
const analyzers = [
|
|
32
35
|
(0, collectMetadata_1.default)(appmapCountByRecorderName),
|
|
33
36
|
(0, collectHTTPServerRequests_1.default)(appmapCountByHTTPServerRequestCount),
|
|
34
37
|
(0, collectSQLQueries_1.default)(appmapCountBySQLQueryCount),
|
|
35
|
-
(0, collectHTTPClientRequests_1.default)(clientRouteCountByResource, resourceTokens),
|
|
38
|
+
(0, collectHTTPClientRequests_1.default)(clientRouteCountByResource, options.resourceTokens),
|
|
36
39
|
(0, collectPackageDependencies_1.collectPackageDependencies)(uniquePackageDependencies),
|
|
37
40
|
(0, collectSQLTables_1.collectSQLTables)(sqlTables),
|
|
38
41
|
(0, collectLabels_1.collectLabels)(labels),
|
|
39
42
|
(0, collectFindings_1.default)(findings),
|
|
43
|
+
(0, collectAppMapSize_1.default)(appmapSize),
|
|
40
44
|
];
|
|
41
45
|
for (const appmap of appmaps) {
|
|
42
46
|
const metadata = await (0, readIndexFile_1.default)(appmap, 'metadata.json');
|
|
@@ -64,8 +68,33 @@ async function buildReport(appmapDir, appmaps, resourceTokens) {
|
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
}
|
|
71
|
+
const largeAppMaps = {};
|
|
72
|
+
{
|
|
73
|
+
const appmaps = Object.keys(appmapSize);
|
|
74
|
+
appmaps.sort((a, b) => appmapSize[b] - appmapSize[a]);
|
|
75
|
+
appmaps.slice(0, options.largeAppMapLimit).reduce((acc, appmap) => {
|
|
76
|
+
acc[appmap] = appmapSize[appmap];
|
|
77
|
+
return acc;
|
|
78
|
+
}, largeAppMaps);
|
|
79
|
+
}
|
|
80
|
+
const frequentFunctions = {};
|
|
81
|
+
{
|
|
82
|
+
const functionOccurrances = {};
|
|
83
|
+
{
|
|
84
|
+
const analyzer = (0, collectFunctionOccurances_1.default)(functionOccurrances);
|
|
85
|
+
for (const appmap of Object.keys(largeAppMaps)) {
|
|
86
|
+
await analyzer(appmap);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const functions = Object.keys(functionOccurrances);
|
|
90
|
+
functions.sort((a, b) => functionOccurrances[b].count - functionOccurrances[a].count);
|
|
91
|
+
functions.slice(0, options.frequentFunctionLimit).reduce((acc, fn) => {
|
|
92
|
+
acc[fn] = functionOccurrances[fn];
|
|
93
|
+
return acc;
|
|
94
|
+
}, frequentFunctions);
|
|
95
|
+
}
|
|
67
96
|
const openapiFile = (0, path_1.join)(appmapDir, 'openapi.yml');
|
|
68
|
-
await (0, collectRoutes_1.default)(openapiFile, resourceTokens, routeCountByResource, routeCountByContentType);
|
|
97
|
+
await (0, collectRoutes_1.default)(openapiFile, options.resourceTokens, routeCountByResource, routeCountByContentType);
|
|
69
98
|
return {
|
|
70
99
|
appmapCountByRecorderName,
|
|
71
100
|
appmapCountByHTTPServerRequestCount,
|
|
@@ -80,6 +109,8 @@ async function buildReport(appmapDir, appmaps, resourceTokens) {
|
|
|
80
109
|
].sort(),
|
|
81
110
|
packageDependencies: uniquePackageDependencies.dependencies,
|
|
82
111
|
findings: uniqueFindings,
|
|
112
|
+
largeAppMaps,
|
|
113
|
+
frequentFunctions,
|
|
83
114
|
};
|
|
84
115
|
}
|
|
85
116
|
exports.buildReport = buildReport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory/buildReport.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAE5C,kFAA0D;AAC1D,sGAA8E;AAC9E,sFAA8D;AAC9D,sGAA8E;AAC9E,uFAAoF;AACpF,mEAAgE;AAChE,6DAA0D;AAC1D,8EAAsD;AACtD,+BAA4B;AAC5B,qCAA+B;AAC/B,oEAA4C;AAC5C,kFAA0D;
|
|
1
|
+
{"version":3,"file":"buildReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory/buildReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,12 +35,27 @@ const builder = (args) => {
|
|
|
35
35
|
type: 'number',
|
|
36
36
|
default: 2,
|
|
37
37
|
});
|
|
38
|
+
args.option('resource-tokens', {
|
|
39
|
+
describe: `number of path tokens to include in the 'by resource' output`,
|
|
40
|
+
type: 'number',
|
|
41
|
+
default: 2,
|
|
42
|
+
});
|
|
43
|
+
args.option('large-appmaps', {
|
|
44
|
+
describe: `number of largest AppMaps to report`,
|
|
45
|
+
type: 'number',
|
|
46
|
+
default: 20,
|
|
47
|
+
});
|
|
48
|
+
args.option('frequent-functions', {
|
|
49
|
+
describe: `number of most frequently occurring functions to report (this is an estimate based on inspecting the large AppMaps)`,
|
|
50
|
+
type: 'number',
|
|
51
|
+
default: 50,
|
|
52
|
+
});
|
|
38
53
|
return args.strict();
|
|
39
54
|
};
|
|
40
55
|
exports.builder = builder;
|
|
41
56
|
const handler = async (argv) => {
|
|
42
57
|
(0, utils_1.verbose)(argv.verbose);
|
|
43
|
-
const { outputFile, directory, resourceTokens,
|
|
58
|
+
const { outputFile, directory, resourceTokens, frequentFunctions: frequentFunctionLimit, largeAppmaps: largeAppMapLimit, } = argv;
|
|
44
59
|
(0, assert_1.default)(resourceTokens);
|
|
45
60
|
(0, assert_1.default)(typeof resourceTokens === 'number');
|
|
46
61
|
(0, assert_1.default)(resourceTokens > 0);
|
|
@@ -60,7 +75,11 @@ const handler = async (argv) => {
|
|
|
60
75
|
return;
|
|
61
76
|
}
|
|
62
77
|
(0, console_1.warn)(`Building inventory data from ${appmaps.length} AppMaps in ${appmapDir}`);
|
|
63
|
-
const report = await (0, buildReport_1.buildReport)(appmapDir, appmaps,
|
|
78
|
+
const report = await (0, buildReport_1.buildReport)(appmapDir, appmaps, {
|
|
79
|
+
resourceTokens: resourceTokens + 1 /* The url '/' is actually 2 tokens, so add 1 to the user input */,
|
|
80
|
+
frequentFunctionLimit,
|
|
81
|
+
largeAppMapLimit,
|
|
82
|
+
});
|
|
64
83
|
const reportJSONStr = JSON.stringify(report, null, 2);
|
|
65
84
|
if (outputFile) {
|
|
66
85
|
await (0, promises_1.writeFile)(outputFile, reportJSONStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../src/cmds/inventory/inventory.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+BAA4B;AAC5B,0CAAwC;AACxC,2BAAgC;AAEhC,6EAA0E;AAC1E,uCAAiD;AACjD,qCAA+B;AAC/B,oDAA4B;AAC5B,+DAA4D;AAC5D,+CAA4C;AAE/B,QAAA,OAAO,GAAG,yBAAyB,CAAC;AACpC,QAAA,QAAQ,GAAG,iEAAiE,CAAC;AAEnF,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,uGAAuG;QACjH,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QACvB,QAAQ,EAAE,2BAA2B;QACrC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QACxB,QAAQ,EAAE,8CAA8C;KACzD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;QAC7B,QAAQ,EAAE,8DAA8D;QACxE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../src/cmds/inventory/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SummaryReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/SummaryReport.ts"],"names":[],"mappings":""}
|
|
@@ -12,9 +12,19 @@ const readIndexFile_1 = __importDefault(require("../inventory/readIndexFile"));
|
|
|
12
12
|
const loadReportTemplate_1 = __importDefault(require("../../report/loadReportTemplate"));
|
|
13
13
|
const urlHelpers_1 = __importDefault(require("../../report/urlHelpers"));
|
|
14
14
|
const helpers_1 = __importDefault(require("../../report/helpers"));
|
|
15
|
+
const handlebars_1 = require("handlebars");
|
|
15
16
|
async function buildReportData(inventoryReport, findingLimit) {
|
|
16
|
-
const
|
|
17
|
-
|
|
17
|
+
const distinctRuleIds = new Set();
|
|
18
|
+
const findingRules = inventoryReport.findings.reduce((acc, f) => {
|
|
19
|
+
if (f.impactDomain && !distinctRuleIds.has(f.ruleId)) {
|
|
20
|
+
distinctRuleIds.add(f.ruleId);
|
|
21
|
+
acc.push({ ruleId: f.ruleId, impactDomain: f.impactDomain });
|
|
22
|
+
}
|
|
23
|
+
return acc;
|
|
24
|
+
}, new Array());
|
|
25
|
+
findingRules.sort((a, b) => a.ruleId.localeCompare(b.ruleId));
|
|
26
|
+
const findingRuleCountByImpactDomain = findingRules.reduce((acc, rule) => {
|
|
27
|
+
const { impactDomain: domain } = rule;
|
|
18
28
|
if (domain) {
|
|
19
29
|
if (!acc[domain])
|
|
20
30
|
acc[domain] = 1;
|
|
@@ -48,8 +58,9 @@ async function buildReportData(inventoryReport, findingLimit) {
|
|
|
48
58
|
newFindings.push({ appmap, finding });
|
|
49
59
|
}
|
|
50
60
|
return {
|
|
61
|
+
findingRules,
|
|
62
|
+
findingRuleCountByImpactDomain,
|
|
51
63
|
findingCount,
|
|
52
|
-
findingCountByImpactDomain,
|
|
53
64
|
findings: newFindings,
|
|
54
65
|
};
|
|
55
66
|
}
|
|
@@ -66,6 +77,9 @@ class SummaryReporter {
|
|
|
66
77
|
return template.generateMarkdown(report);
|
|
67
78
|
}
|
|
68
79
|
static helpers() {
|
|
80
|
+
const rule_url = (rule) => {
|
|
81
|
+
return new handlebars_1.SafeString(`[${rule}](https://appmap.io/docs/reference/rules/${rule})`);
|
|
82
|
+
};
|
|
69
83
|
const time_ago = (...dates) => {
|
|
70
84
|
const firstDate = dates.find(Boolean);
|
|
71
85
|
if (!firstDate)
|
|
@@ -90,7 +104,7 @@ class SummaryReporter {
|
|
|
90
104
|
return `${interval} minutes`;
|
|
91
105
|
return `${Math.floor(seconds)} seconds`;
|
|
92
106
|
};
|
|
93
|
-
return { time_ago };
|
|
107
|
+
return { rule_url, time_ago };
|
|
94
108
|
}
|
|
95
109
|
}
|
|
96
110
|
exports.default = SummaryReporter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummaryReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/SummaryReporter.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4B;AAC5B,oDAA4B;AAI5B,yCAAyD;AACzD,gEAA6D;AAC7D,iEAAoF;AACpF,+EAAuD;AACvD,yFAAiE;AACjE,yEAAiD;AACjD,mEAA2C;
|
|
1
|
+
{"version":3,"file":"SummaryReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/SummaryReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WelcomeReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/WelcomeReport.ts"],"names":[],"mappings":""}
|
|
@@ -10,6 +10,7 @@ const ReportTemplate_1 = require("../../report/ReportTemplate");
|
|
|
10
10
|
const loadReportTemplate_1 = __importDefault(require("../../report/loadReportTemplate"));
|
|
11
11
|
const urlHelpers_1 = __importDefault(require("../../report/urlHelpers"));
|
|
12
12
|
const helpers_1 = __importDefault(require("../../report/helpers"));
|
|
13
|
+
const readIndexFile_1 = __importDefault(require("../inventory/readIndexFile"));
|
|
13
14
|
class WelcomeReporter {
|
|
14
15
|
constructor(appmapURL, sourceURL) {
|
|
15
16
|
this.appmapURL = appmapURL;
|
|
@@ -19,10 +20,40 @@ class WelcomeReporter {
|
|
|
19
20
|
(0, assert_1.default)(Reporter_1.TemplateDirectory);
|
|
20
21
|
const templateText = await (0, loadReportTemplate_1.default)((0, path_1.join)(Reporter_1.TemplateDirectory, 'welcome', 'welcome.hbs'));
|
|
21
22
|
const template = new ReportTemplate_1.ReportTemplate(templateText, Object.assign(Object.assign(Object.assign({}, helpers_1.default), (0, urlHelpers_1.default)({ appmapURL: this.appmapURL, sourceURL: this.sourceURL })), WelcomeReporter.helpers()));
|
|
22
|
-
const
|
|
23
|
+
const largeAppMapsGreaterThan1MB = Object.entries(reportData.largeAppMaps)
|
|
24
|
+
.filter((entry) => entry[1] > 1024 * 1024)
|
|
25
|
+
.reduce((acc, entry) => ((acc[entry[0]] = entry[1]), acc), {});
|
|
26
|
+
const largeAppMaps = {};
|
|
27
|
+
for (const appmap of Object.keys(largeAppMapsGreaterThan1MB)) {
|
|
28
|
+
const metadata = await (0, readIndexFile_1.default)(appmap, 'metadata.json');
|
|
29
|
+
const name = metadata.name;
|
|
30
|
+
const sourceLocation = metadata.source_location;
|
|
31
|
+
largeAppMaps[appmap] = { name, sourceLocation, size: reportData.largeAppMaps[appmap] };
|
|
32
|
+
}
|
|
33
|
+
const frequentlyOccurringFunctionsMoreThan1000 = Object.entries(reportData.frequentFunctions)
|
|
34
|
+
.filter((entry) => entry[1].count > 1000)
|
|
35
|
+
.reduce((acc, entry) => ((acc[entry[0]] = entry[1]), acc), {});
|
|
36
|
+
const data = Object.assign(Object.assign(Object.assign({}, reportData), { largeAppMaps, frequentFunctions: frequentlyOccurringFunctionsMoreThan1000 }), { appmapConfig });
|
|
23
37
|
return template.generateMarkdown(data);
|
|
24
38
|
}
|
|
25
39
|
static helpers() {
|
|
40
|
+
const agent_reference_name = (language) => {
|
|
41
|
+
if (language === 'javascript')
|
|
42
|
+
return 'agent-js';
|
|
43
|
+
else
|
|
44
|
+
return language;
|
|
45
|
+
};
|
|
46
|
+
const format_mb = (sizeInBytes) => {
|
|
47
|
+
const sizeInMB = Math.round((sizeInBytes / 1024 / 1024) * 100) / 100;
|
|
48
|
+
return `${sizeInMB} MB`;
|
|
49
|
+
};
|
|
50
|
+
const function_name = (functionId) => {
|
|
51
|
+
// Example: function:ruby/Array#pack
|
|
52
|
+
if (!functionId.startsWith('function:'))
|
|
53
|
+
return functionId;
|
|
54
|
+
const parts = functionId.split('/');
|
|
55
|
+
return parts[parts.length - 1];
|
|
56
|
+
};
|
|
26
57
|
const select_values_by_key_range = (data, keyMin, keyMax) => {
|
|
27
58
|
if (typeof keyMax === 'object')
|
|
28
59
|
keyMax = undefined;
|
|
@@ -44,6 +75,9 @@ class WelcomeReporter {
|
|
|
44
75
|
});
|
|
45
76
|
};
|
|
46
77
|
return {
|
|
78
|
+
agent_reference_name,
|
|
79
|
+
format_mb,
|
|
80
|
+
function_name,
|
|
47
81
|
packages_matching_configuration,
|
|
48
82
|
select_values_by_key_range,
|
|
49
83
|
sum_values_by_key_range,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WelcomeReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/WelcomeReporter.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4B;AAC5B,oDAA4B;AAG5B,
|
|
1
|
+
{"version":3,"file":"WelcomeReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/WelcomeReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,35 +26,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.accumulateEvents = void 0;
|
|
30
30
|
const fs = __importStar(require("fs"));
|
|
31
31
|
const models_1 = require("@appland/models");
|
|
32
32
|
const JSONStream_1 = __importDefault(require("JSONStream"));
|
|
33
|
-
const KILOBYTE = 1000;
|
|
34
|
-
const MEGABYTE = KILOBYTE * 1000;
|
|
35
|
-
const GIGABYTE = MEGABYTE * 1000;
|
|
36
33
|
const sizeof = (obj) => JSON.stringify(obj).length;
|
|
37
|
-
function displaySize(size) {
|
|
38
|
-
let divisor;
|
|
39
|
-
let suffix;
|
|
40
|
-
if (size > GIGABYTE) {
|
|
41
|
-
divisor = GIGABYTE;
|
|
42
|
-
suffix = 'GB';
|
|
43
|
-
}
|
|
44
|
-
else if (size > MEGABYTE) {
|
|
45
|
-
divisor = MEGABYTE;
|
|
46
|
-
suffix = 'MB';
|
|
47
|
-
}
|
|
48
|
-
else if (size > KILOBYTE) {
|
|
49
|
-
divisor = KILOBYTE;
|
|
50
|
-
suffix = 'KB';
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
divisor = 1;
|
|
54
|
-
suffix = 'bytes';
|
|
55
|
-
}
|
|
56
|
-
return `${(size / divisor).toFixed(1)} ${suffix}`;
|
|
57
|
-
}
|
|
58
34
|
async function parseClassMap(mapPath) {
|
|
59
35
|
let classMap;
|
|
60
36
|
return new Promise((resolve) => {
|
|
@@ -109,18 +85,5 @@ async function accumulateEvents(mapPath) {
|
|
|
109
85
|
}));
|
|
110
86
|
});
|
|
111
87
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (format === 'json') {
|
|
115
|
-
console.log(JSON.stringify(eventsStats, null, 2));
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
eventsStats.forEach((callData, index) => {
|
|
119
|
-
const { function: fn, count, size } = callData;
|
|
120
|
-
console.log([`${index + 1}. ${fn}`, `count: ${count}`, `estimated size: ${displaySize(size)}`, ''].join('\n '));
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
return eventsStats;
|
|
124
|
-
}
|
|
125
|
-
exports.statsForMap = statsForMap;
|
|
126
|
-
//# sourceMappingURL=statsForMap.js.map
|
|
88
|
+
exports.accumulateEvents = accumulateEvents;
|
|
89
|
+
//# sourceMappingURL=accumulateEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accumulateEvents.js","sourceRoot":"","sources":["../../../src/cmds/stats/accumulateEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ exports.handler = exports.builder = exports.describe = exports.command = void 0;
|
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
-
const statsForDirectory_1 = require("./
|
|
11
|
-
const statsForMap_1 = require("./
|
|
10
|
+
const statsForDirectory_1 = require("./statsForDirectory");
|
|
11
|
+
const statsForMap_1 = require("./statsForMap");
|
|
12
12
|
const locateAppMapDir_1 = require("../../lib/locateAppMapDir");
|
|
13
13
|
const utils_1 = require("../../utils");
|
|
14
14
|
const handleWorkingDirectory_1 = require("../../lib/handleWorkingDirectory");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/cmds/stats/stats.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAgC;AAChC,gDAAwB;
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/cmds/stats/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.statsForDirectory = exports.sizeInMB = void 0;
|
|
30
30
|
const fs = __importStar(require("fs"));
|
|
31
|
-
const userInteraction_1 = __importDefault(require("
|
|
32
|
-
const telemetry_1 = __importDefault(require("
|
|
33
|
-
const utils_1 = require("
|
|
31
|
+
const userInteraction_1 = __importDefault(require("../userInteraction"));
|
|
32
|
+
const telemetry_1 = __importDefault(require("../../telemetry"));
|
|
33
|
+
const utils_1 = require("../../utils");
|
|
34
34
|
const models_1 = require("@appland/models");
|
|
35
35
|
const chalk_1 = __importDefault(require("chalk"));
|
|
36
36
|
const path_1 = require("path");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statsForDirectory.js","sourceRoot":"","sources":["../../../src/cmds/stats/statsForDirectory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.statsForMap = void 0;
|
|
4
|
+
const accumulateEvents_1 = require("./accumulateEvents");
|
|
5
|
+
const KILOBYTE = 1000;
|
|
6
|
+
const MEGABYTE = KILOBYTE * 1000;
|
|
7
|
+
const GIGABYTE = MEGABYTE * 1000;
|
|
8
|
+
function displaySize(size) {
|
|
9
|
+
let divisor;
|
|
10
|
+
let suffix;
|
|
11
|
+
if (size > GIGABYTE) {
|
|
12
|
+
divisor = GIGABYTE;
|
|
13
|
+
suffix = 'GB';
|
|
14
|
+
}
|
|
15
|
+
else if (size > MEGABYTE) {
|
|
16
|
+
divisor = MEGABYTE;
|
|
17
|
+
suffix = 'MB';
|
|
18
|
+
}
|
|
19
|
+
else if (size > KILOBYTE) {
|
|
20
|
+
divisor = KILOBYTE;
|
|
21
|
+
suffix = 'KB';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
divisor = 1;
|
|
25
|
+
suffix = 'bytes';
|
|
26
|
+
}
|
|
27
|
+
return `${(size / divisor).toFixed(1)} ${suffix}`;
|
|
28
|
+
}
|
|
29
|
+
async function statsForMap(format, limit, mapPath) {
|
|
30
|
+
const eventsStats = (await (0, accumulateEvents_1.accumulateEvents)(mapPath)).slice(0, limit);
|
|
31
|
+
if (format === 'json') {
|
|
32
|
+
console.log(JSON.stringify(eventsStats, null, 2));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
eventsStats.forEach((callData, index) => {
|
|
36
|
+
const { function: fn, count, size } = callData;
|
|
37
|
+
console.log([`${index + 1}. ${fn}`, `count: ${count}`, `estimated size: ${displaySize(size)}`, ''].join('\n '));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return eventsStats;
|
|
41
|
+
}
|
|
42
|
+
exports.statsForMap = statsForMap;
|
|
43
|
+
//# sourceMappingURL=statsForMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statsForMap.js","sourceRoot":"","sources":["../../../src/cmds/stats/statsForMap.ts"],"names":[],"mappings":";;;AAAA,yDAAiE;AAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AACjC,MAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEjC,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IAEnB,IAAI,IAAI,GAAG,QAAQ,EAAE;QACnB,OAAO,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,IAAI,CAAC;KACf;SAAM,IAAI,IAAI,GAAG,QAAQ,EAAE;QAC1B,OAAO,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,IAAI,CAAC;KACf;SAAM,IAAI,IAAI,GAAG,QAAQ,EAAE;QAC1B,OAAO,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,IAAI,CAAC;KACf;SAAM;QACL,OAAO,GAAG,CAAC,CAAC;QACZ,MAAM,GAAG,OAAO,CAAC;KAClB;IAED,OAAO,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AACpD,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,KAAa,EACb,OAAe;IAEf,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEtE,IAAI,MAAM,KAAK,MAAM,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACnD;SAAM;QACL,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAC/C,OAAO,CAAC,GAAG,CACT,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,UAAU,KAAK,EAAE,EAAE,mBAAmB,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CACzF,UAAU,CACX,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AArBD,kCAqBC"}
|
package/built/lib/emitUsage.js
CHANGED
|
@@ -7,29 +7,45 @@ const telemetry_1 = require("../telemetry");
|
|
|
7
7
|
const repositoryInfo_1 = __importDefault(require("./repositoryInfo"));
|
|
8
8
|
const promises_1 = require("node:fs/promises");
|
|
9
9
|
const node_path_1 = require("node:path");
|
|
10
|
+
const loadAppMapConfig_1 = __importDefault(require("./loadAppMapConfig"));
|
|
11
|
+
const node_console_1 = require("node:console");
|
|
10
12
|
async function buildMetadata(appmapDir, metadata) {
|
|
11
13
|
const repository = await telemetry_1.Git.repository(appmapDir);
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
const result = {
|
|
15
|
+
name: metadata.name,
|
|
16
|
+
app: metadata.app,
|
|
17
|
+
language: metadata.language,
|
|
18
|
+
client: metadata.client,
|
|
19
|
+
frameworks: metadata.frameworks,
|
|
20
|
+
recorder: metadata.recorder,
|
|
21
|
+
};
|
|
22
|
+
if (repository) {
|
|
23
|
+
const branch = await telemetry_1.Git.branch(appmapDir);
|
|
24
|
+
const commit = await telemetry_1.Git.commit(appmapDir);
|
|
25
|
+
const git = {
|
|
26
|
+
repository: (0, repositoryInfo_1.default)(repository),
|
|
27
|
+
}; // Technically, branch and commit are required
|
|
28
|
+
if (branch)
|
|
29
|
+
git.branch = branch;
|
|
30
|
+
if (commit)
|
|
31
|
+
git.commit = commit;
|
|
32
|
+
result.git = git;
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
26
35
|
}
|
|
27
36
|
async function emitUsage(appmapDir, numEvents, numAppMaps, sampleMetadata) {
|
|
37
|
+
let metadata;
|
|
38
|
+
if (sampleMetadata)
|
|
39
|
+
metadata = await buildMetadata(appmapDir, sampleMetadata);
|
|
40
|
+
const appmapConfig = await (0, loadAppMapConfig_1.default)();
|
|
41
|
+
if (!appmapConfig)
|
|
42
|
+
(0, node_console_1.warn)(`Unable to load appmap.yml config file`);
|
|
28
43
|
const dto = {
|
|
29
44
|
events: numEvents,
|
|
30
45
|
appmaps: numAppMaps,
|
|
31
|
-
metadata
|
|
46
|
+
metadata,
|
|
32
47
|
ci: process.env.CI !== undefined,
|
|
48
|
+
appmapConfig,
|
|
33
49
|
};
|
|
34
50
|
try {
|
|
35
51
|
const stats = await (0, promises_1.stat)('.appmap');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitUsage.js","sourceRoot":"","sources":["../../src/lib/emitUsage.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"emitUsage.js","sourceRoot":"","sources":["../../src/lib/emitUsage.ts"],"names":[],"mappings":";;;;;AACA,4CAAmC;AAEnC,sEAA2C;AAC3C,+CAA0D;AAC1D,yCAAiC;AACjC,0EAAkD;AAClD,+CAAoC;AAEpC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,QAAkB;IAChE,MAAM,UAAU,GAAG,MAAM,eAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAa;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;IAEF,IAAI,UAAU,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,eAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,eAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG;YACV,UAAU,EAAE,IAAA,wBAAW,EAAC,UAAU,CAAC;SACpB,CAAC,CAAC,8CAA8C;QACjE,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAEhC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAEc,KAAK,UAAU,SAAS,CACrC,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,cAAyB;IAEzB,IAAI,QAA8B,CAAC;IACnC,IAAI,cAAc;QAAE,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAgB,GAAE,CAAC;IAC9C,IAAI,CAAC,YAAY;QAAE,IAAA,mBAAI,EAAC,uCAAuC,CAAC,CAAC;IAEjE,MAAM,GAAG,GAAmB;QAC1B,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,UAAU;QACnB,QAAQ;QACR,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS;QAChC,YAAY;KACK,CAAC;IAEpB,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,SAAS,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;YACvB,MAAM,iBAAiB,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,IAAA,gBAAK,EAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/E,MAAM,IAAA,oBAAS,EAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,OAAO,aAAa,CAAC;SACtB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5D,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;SACjD;KACF;AACH,CAAC;AAnCD,4BAmCC"}
|
package/package.json
CHANGED
|
@@ -45,18 +45,17 @@ AppMap runtime code review scans the AppMaps for security flaws, performance
|
|
|
45
45
|
problems, and code anti-patterns. When you use AppMap runtime code review on a pull request,
|
|
46
46
|
only the new problems and resolved problems are shown in the report.
|
|
47
47
|
|
|
48
|
-
{{#if
|
|
48
|
+
{{#if findingRules.length}}
|
|
49
49
|
### Overview of problems and flaws
|
|
50
50
|
|
|
51
|
-
AppMap detected {{
|
|
52
|
-
Here's
|
|
51
|
+
AppMap detected {{ length findingRules }} types of problems and flaws in the runtime code review of your project.
|
|
52
|
+
Here's a list of the types of problems that have been found:
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
{{#each
|
|
57
|
-
|
|
54
|
+
| Rule | Impact Domain |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
{{#each findingRules }}
|
|
57
|
+
| {{ rule_url ruleId }} | {{impactDomain}} |
|
|
58
58
|
{{/each}}
|
|
59
|
-
```
|
|
60
59
|
|
|
61
60
|
### Recently introduced code flaws and problems
|
|
62
61
|
|
|
@@ -7,12 +7,12 @@ you run your tests.
|
|
|
7
7
|
|
|
8
8
|
<hr/>
|
|
9
9
|
|
|
10
|
+
The following sections contain detailed information about the AppMap integration with your project.
|
|
11
|
+
|
|
10
12
|
<details>
|
|
11
13
|
<summary>
|
|
12
|
-
View details
|
|
13
|
-
</summary>
|
|
14
|
-
|
|
15
14
|
<h3><a id="data-sources">AppMap data sources</a></h3>
|
|
15
|
+
</summary>
|
|
16
16
|
|
|
17
17
|
In GitHub Actions and other CI systems, AppMaps are created by recording
|
|
18
18
|
test cases. Here's how the AppMaps in this project were created:
|
|
@@ -33,7 +33,12 @@ pie showData
|
|
|
33
33
|
```
|
|
34
34
|
{{/if}}
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
</details>
|
|
37
|
+
|
|
38
|
+
<details>
|
|
39
|
+
<summary>
|
|
40
|
+
<h3><a id="code-profile">Code recording settings</a></h3>
|
|
41
|
+
</summary>
|
|
37
42
|
|
|
38
43
|
Your _appmap.yml_ configuration file specifies all the code that you want AppMap to instrument and record.
|
|
39
44
|
By default, sub-modules of any requested code are recorded as well. In this project, the packages specified
|
|
@@ -47,7 +52,12 @@ following packages and modules:
|
|
|
47
52
|
|
|
48
53
|
{{#each (packages_matching_configuration packages appmapConfig.packages) }}`{{ @this }}` {{/each}}
|
|
49
54
|
|
|
55
|
+
</details>
|
|
56
|
+
|
|
57
|
+
<details>
|
|
58
|
+
<summary>
|
|
50
59
|
<h3><a id="ws-api-profile">Web service API profile</a></h3>
|
|
60
|
+
</summary>
|
|
51
61
|
|
|
52
62
|
When you record AppMaps that include HTTP server requests, AppMap automatically generates OpenAPI definitions
|
|
53
63
|
based on the observed data.
|
|
@@ -99,7 +109,12 @@ the better the AppMap data will be for generating OpenAPI definitions and compar
|
|
|
99
109
|
changes in each pull request.
|
|
100
110
|
{{/if}}
|
|
101
111
|
|
|
112
|
+
</details>
|
|
113
|
+
|
|
114
|
+
<details>
|
|
115
|
+
<summary>
|
|
102
116
|
<h3><a id="sql-profile">SQL profile</a></h3>
|
|
117
|
+
</summary>
|
|
103
118
|
|
|
104
119
|
When your code makes a SQL query, AppMap records the SQL query in detail. It even parses the queries
|
|
105
120
|
to figure out which tables your app is using, and how it's using them.
|
|
@@ -142,9 +157,70 @@ and you don't see SQL queries here, you can add some test cases that interact wi
|
|
|
142
157
|
the better the AppMap data will be for analyzing the SQL changes in each pull request.
|
|
143
158
|
{{/if}}
|
|
144
159
|
|
|
160
|
+
</details>
|
|
161
|
+
|
|
162
|
+
<details>
|
|
163
|
+
<summary>
|
|
164
|
+
<h3><a id="large-appmaps">Large AppMaps</a></h3>
|
|
165
|
+
</summary>
|
|
166
|
+
|
|
167
|
+
Some tests can produce large AppMaps, because they exercise longer or highly repeated code paths.
|
|
168
|
+
AppMap runtime code review is optimized for AppMaps that
|
|
169
|
+
are less than 10 MB in size. You may want to consider disabling AppMap for tests that produce
|
|
170
|
+
large AppMaps, since they can slow down your CI job and they are hard to analyze. Also, note that
|
|
171
|
+
AppMaps greater than 50 MB in size will not be analyzed at all.
|
|
172
|
+
|
|
173
|
+
You can disable recording of a test case by adding a code comment or annotation to the test case file.
|
|
174
|
+
Learn how by visiting the
|
|
175
|
+
[reference documentation for `appmap-{{ appmapConfig.language }}`](https://appmap.io/docs/reference/appmap-{{ agent_reference_name appmapConfig.language }}.html).
|
|
176
|
+
|
|
177
|
+
{{#if (length largeAppMaps)}}
|
|
178
|
+
Here are the largest AppMaps that are greater than 1 MB:
|
|
179
|
+
|
|
180
|
+
| Size | Location | Test name | AppMap path |
|
|
181
|
+
| --- | --- | --- | --- |
|
|
182
|
+
{{#each largeAppMaps}}
|
|
183
|
+
| {{ format_mb size }} | {{ sourceLocation }} | {{ name }} | {{ @key}} |
|
|
184
|
+
{{/each}}
|
|
185
|
+
{{else}}
|
|
186
|
+
This project doesn't have any AppMaps that are greater than 1 MB in size.
|
|
187
|
+
{{/if}}
|
|
188
|
+
|
|
189
|
+
</details>
|
|
190
|
+
|
|
191
|
+
<details>
|
|
192
|
+
<summary>
|
|
193
|
+
<h3><a id="frequent-functions">Frequently recorded functions</a></h3>
|
|
194
|
+
</summary>
|
|
195
|
+
|
|
196
|
+
The AppMap configuration file _appmap.yml_ specifies which functions to record.
|
|
197
|
+
Some functions may be called very frequently, adding little to the understandability of the code
|
|
198
|
+
while adding a lot of overhead to the AppMap recording process.
|
|
199
|
+
|
|
200
|
+
Note that some functions are automatically added to the recording by
|
|
201
|
+
the AppMap agent. For example, the AppMap agent automatically records functions that are
|
|
202
|
+
relevant to detecting security flaws and performance problems. If you disable recording of these
|
|
203
|
+
functions, then some problems may become undetectable.
|
|
204
|
+
|
|
205
|
+
You can disable recording of a class or function by updating the _appmap.yml_ configuration file.
|
|
206
|
+
Learn how by visiting the
|
|
207
|
+
[reference documentation for `appmap-{{ appmapConfig.language }}`](https://appmap.io/docs/reference/appmap-{{ agent_reference_name appmapConfig.language }}.html).
|
|
208
|
+
|
|
209
|
+
{{#if (length frequentFunctions)}}
|
|
210
|
+
Here are some of the most frequently recorded functions in this project:
|
|
211
|
+
|
|
212
|
+
| Number of occurrences | Function name | Source location |
|
|
213
|
+
| --- | --- | --- |
|
|
214
|
+
{{#each frequentFunctions}}
|
|
215
|
+
| {{ count }} | {{ function_name @key }} | {{ location }} |
|
|
216
|
+
{{/each}}
|
|
217
|
+
{{else}}
|
|
218
|
+
This project doesn't have any recorded functions that occur more than 1000 times.
|
|
219
|
+
{{/if}}
|
|
220
|
+
|
|
221
|
+
</details>
|
|
222
|
+
|
|
145
223
|
### Learn more
|
|
146
224
|
|
|
147
225
|
To learn more about AppMap, visit
|
|
148
226
|
[appmap.io/docs](https://appmap.io/docs).
|
|
149
|
-
|
|
150
|
-
</details>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statsForDirectory.js","sourceRoot":"","sources":["../../../../src/cmds/stats/directory/statsForDirectory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statsForMap.js","sourceRoot":"","sources":["../../../../src/cmds/stats/directory/statsForMap.ts"],"names":[],"mappings":"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"}
|