Skip to content

Commit ea06418

Browse files
authored
Merge pull request #43 from returntocorp/brandon/add-memory-usage
feat!: add memory usage
2 parents f35dbff + 3a36a3a commit ea06418

6 files changed

+194
-59
lines changed

semgrep_output_v1.atd

+4
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ type core_timing
316316
(* Needs to be separate to include rules read but not run on any target *)
317317
rules: rule_id list;
318318
?rules_parse_time: float option; (* not used in spacegrep *)
319+
320+
max_memory_bytes : int;
319321
}
320322

321323
(* later: could refactor [target_time] and [rule_times] to be equal
@@ -642,6 +644,8 @@ type cli_timing <ocaml attr="deriving show"> = {
642644
profiling_times: (string * float) list <json repr="object"> <python repr="dict">;
643645
targets: cli_target_times list;
644646
total_bytes: int;
647+
648+
?max_memory_bytes : int option;
645649
}
646650

647651
(* LATER: should just use rule_id *)

semgrep_output_v1.jsonschema

+5-3
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@
232232
},
233233
"core_timing": {
234234
"type": "object",
235-
"required": [ "targets", "rules" ],
235+
"required": [ "targets", "rules", "max_memory_bytes" ],
236236
"properties": {
237237
"targets": {
238238
"type": "array",
@@ -242,7 +242,8 @@
242242
"type": "array",
243243
"items": { "$ref": "#/definitions/rule_id" }
244244
},
245-
"rules_parse_time": { "type": "number" }
245+
"rules_parse_time": { "type": "number" },
246+
"max_memory_bytes": { "type": "integer" }
246247
}
247248
},
248249
"target_time": {
@@ -568,7 +569,8 @@
568569
"type": "array",
569570
"items": { "$ref": "#/definitions/cli_target_times" }
570571
},
571-
"total_bytes": { "type": "integer" }
572+
"total_bytes": { "type": "integer" },
573+
"max_memory_bytes": { "type": "integer" }
572574
}
573575
},
574576
"rule_id_dict": {

semgrep_output_v1.py

+7
Original file line numberDiff line numberDiff line change
@@ -2080,6 +2080,7 @@ class CoreTiming:
20802080

20812081
targets: List[TargetTime]
20822082
rules: List[RuleId]
2083+
max_memory_bytes: int
20832084
rules_parse_time: Optional[float] = None
20842085

20852086
@classmethod
@@ -2088,6 +2089,7 @@ def from_json(cls, x: Any) -> 'CoreTiming':
20882089
return cls(
20892090
targets=_atd_read_list(TargetTime.from_json)(x['targets']) if 'targets' in x else _atd_missing_json_field('CoreTiming', 'targets'),
20902091
rules=_atd_read_list(RuleId.from_json)(x['rules']) if 'rules' in x else _atd_missing_json_field('CoreTiming', 'rules'),
2092+
max_memory_bytes=_atd_read_int(x['max_memory_bytes']) if 'max_memory_bytes' in x else _atd_missing_json_field('CoreTiming', 'max_memory_bytes'),
20912093
rules_parse_time=_atd_read_float(x['rules_parse_time']) if 'rules_parse_time' in x else None,
20922094
)
20932095
else:
@@ -2097,6 +2099,7 @@ def to_json(self) -> Any:
20972099
res: Dict[str, Any] = {}
20982100
res['targets'] = _atd_write_list((lambda x: x.to_json()))(self.targets)
20992101
res['rules'] = _atd_write_list((lambda x: x.to_json()))(self.rules)
2102+
res['max_memory_bytes'] = _atd_write_int(self.max_memory_bytes)
21002103
if self.rules_parse_time is not None:
21012104
res['rules_parse_time'] = _atd_write_float(self.rules_parse_time)
21022105
return res
@@ -2649,6 +2652,7 @@ class CliTiming:
26492652
profiling_times: Dict[str, float]
26502653
targets: List[CliTargetTimes]
26512654
total_bytes: int
2655+
max_memory_bytes: Optional[int] = None
26522656

26532657
@classmethod
26542658
def from_json(cls, x: Any) -> 'CliTiming':
@@ -2659,6 +2663,7 @@ def from_json(cls, x: Any) -> 'CliTiming':
26592663
profiling_times=_atd_read_assoc_object_into_dict(_atd_read_float)(x['profiling_times']) if 'profiling_times' in x else _atd_missing_json_field('CliTiming', 'profiling_times'),
26602664
targets=_atd_read_list(CliTargetTimes.from_json)(x['targets']) if 'targets' in x else _atd_missing_json_field('CliTiming', 'targets'),
26612665
total_bytes=_atd_read_int(x['total_bytes']) if 'total_bytes' in x else _atd_missing_json_field('CliTiming', 'total_bytes'),
2666+
max_memory_bytes=_atd_read_int(x['max_memory_bytes']) if 'max_memory_bytes' in x else None,
26622667
)
26632668
else:
26642669
_atd_bad_json('CliTiming', x)
@@ -2670,6 +2675,8 @@ def to_json(self) -> Any:
26702675
res['profiling_times'] = _atd_write_assoc_dict_to_object(_atd_write_float)(self.profiling_times)
26712676
res['targets'] = _atd_write_list((lambda x: x.to_json()))(self.targets)
26722677
res['total_bytes'] = _atd_write_int(self.total_bytes)
2678+
if self.max_memory_bytes is not None:
2679+
res['max_memory_bytes'] = _atd_write_int(self.max_memory_bytes)
26732680
return res
26742681

26752682
@classmethod

semgrep_output_v1.ts

+6
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export type CoreTiming = {
128128
targets: TargetTime[];
129129
rules: RuleId[];
130130
rules_parse_time?: number;
131+
max_memory_bytes: Int;
131132
}
132133

133134
export type TargetTime = {
@@ -292,6 +293,7 @@ export type CliTiming = {
292293
profiling_times: [string, number][];
293294
targets: CliTargetTimes[];
294295
total_bytes: Int;
296+
max_memory_bytes?: Int;
295297
}
296298

297299
export type RuleIdDict = {
@@ -775,6 +777,7 @@ export function writeCoreTiming(x: CoreTiming, context: any = x): any {
775777
'targets': _atd_write_required_field('CoreTiming', 'targets', _atd_write_array(writeTargetTime), x.targets, x),
776778
'rules': _atd_write_required_field('CoreTiming', 'rules', _atd_write_array(writeRuleId), x.rules, x),
777779
'rules_parse_time': _atd_write_optional_field(_atd_write_float, x.rules_parse_time, x),
780+
'max_memory_bytes': _atd_write_required_field('CoreTiming', 'max_memory_bytes', _atd_write_int, x.max_memory_bytes, x),
778781
};
779782
}
780783

@@ -783,6 +786,7 @@ export function readCoreTiming(x: any, context: any = x): CoreTiming {
783786
targets: _atd_read_required_field('CoreTiming', 'targets', _atd_read_array(readTargetTime), x['targets'], x),
784787
rules: _atd_read_required_field('CoreTiming', 'rules', _atd_read_array(readRuleId), x['rules'], x),
785788
rules_parse_time: _atd_read_optional_field(_atd_read_float, x['rules_parse_time'], x),
789+
max_memory_bytes: _atd_read_required_field('CoreTiming', 'max_memory_bytes', _atd_read_int, x['max_memory_bytes'], x),
786790
};
787791
}
788792

@@ -1238,6 +1242,7 @@ export function writeCliTiming(x: CliTiming, context: any = x): any {
12381242
'profiling_times': _atd_write_required_field('CliTiming', 'profiling_times', _atd_write_assoc_array_to_object(_atd_write_float), x.profiling_times, x),
12391243
'targets': _atd_write_required_field('CliTiming', 'targets', _atd_write_array(writeCliTargetTimes), x.targets, x),
12401244
'total_bytes': _atd_write_required_field('CliTiming', 'total_bytes', _atd_write_int, x.total_bytes, x),
1245+
'max_memory_bytes': _atd_write_optional_field(_atd_write_int, x.max_memory_bytes, x),
12411246
};
12421247
}
12431248

@@ -1248,6 +1253,7 @@ export function readCliTiming(x: any, context: any = x): CliTiming {
12481253
profiling_times: _atd_read_required_field('CliTiming', 'profiling_times', _atd_read_assoc_object_into_array(_atd_read_float), x['profiling_times'], x),
12491254
targets: _atd_read_required_field('CliTiming', 'targets', _atd_read_array(readCliTargetTimes), x['targets'], x),
12501255
total_bytes: _atd_read_required_field('CliTiming', 'total_bytes', _atd_read_int, x['total_bytes'], x),
1256+
max_memory_bytes: _atd_read_optional_field(_atd_read_int, x['max_memory_bytes'], x),
12511257
};
12521258
}
12531259

0 commit comments

Comments
 (0)