Skip to content

Commit c696d88

Browse files
authored
Merge pull request diffblue#568 from diffblue/jd/feature/adding_UI_friendly_method_name
Adds a 'pretty_name' value to error_traces.json
2 parents a03637f + a5e3151 commit c696d88

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

src/taint-instrumenter/instrumentation_driver.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,18 +114,23 @@ static void save_goto_binary_description(
114114

115115
for(const auto loc_id : props.get_sinks())
116116
{
117-
const auto &loc = props.get_location_props()
118-
.at(loc_id)
119-
.get_instruction_id()
120-
->source_location;
121-
122-
if(seen_sinks.insert(
123-
sink_loct{loc.get_file(), loc.get_function(), loc.get_line()}).second)
117+
const auto &location_prop = props.get_location_props().at(loc_id);
118+
const auto &source_loc =
119+
location_prop.get_instruction_id()->source_location;
120+
121+
if(
122+
seen_sinks
123+
.insert(
124+
sink_loct{source_loc.get_file(),
125+
source_loc.get_function(),
126+
source_loc.get_line()})
127+
.second)
124128
{
125129
json_objectt jloc;
126-
jloc["file"] = json_stringt(id2string(loc.get_file()));
127-
jloc["function"] = json_stringt(id2string(loc.get_function()));
128-
jloc["line"] = json_numbert(id2string(loc.get_line()));
130+
jloc["file"] = json_stringt(id2string(source_loc.get_file()));
131+
jloc["function"] = json_stringt(id2string(source_loc.get_function()));
132+
jloc["line"] = json_numbert(id2string(source_loc.get_line()));
133+
jloc["display_name"] = json_stringt(location_prop.get_pretty_name());
129134

130135
jsinks.push_back(jloc);
131136
}

src/taint-instrumenter/instrumentation_props.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,13 @@ taint_instrumentation_propst::taint_instrumentation_propst(
183183
{
184184
sinks.insert(location_props.size());
185185
}
186+
187+
const symbolt *function_symbol =
188+
program.get_symbol_table().lookup(fn_vec.first);
186189
location_props.push_back(
187190
{rid_and_map.first,
188191
fn_vec.first,
192+
id2string(function_symbol->pretty_name),
189193
iit,
190194
assumption,
191195
turn_on,

src/taint-instrumenter/instrumentation_props.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
typedef std::string taint_function_idt;
1818
typedef std::string taint_datatype_idt;
19+
typedef std::string taint_pretty_function_idt;
1920
typedef goto_programt::instructionst::const_iterator taint_instruction_idt;
2021

2122
class argidx_and_tokennamet
@@ -64,12 +65,14 @@ class taint_instrumentation_propst
6465
location_propst(
6566
const taint_rule_idt &_rule_id,
6667
const taint_function_idt &_function_id,
68+
const taint_pretty_function_idt &_pretty_function_name,
6769
const taint_instruction_idt &_instruction_id,
6870
const std::vector<argidx_and_tokennamet> &_assumption,
6971
const std::vector<argidx_and_tokennamet> &_turn_on,
7072
const std::vector<argidx_and_tokennamet> &_turn_off)
7173
: rule_id(_rule_id),
7274
function_id(_function_id),
75+
pretty_function_name(_pretty_function_name),
7376
instruction_id(_instruction_id),
7477
assumption(_assumption),
7578
turn_on(_turn_on),
@@ -85,6 +88,10 @@ class taint_instrumentation_propst
8588
{
8689
return function_id;
8790
}
91+
const taint_pretty_function_idt &get_pretty_name() const
92+
{
93+
return pretty_function_name;
94+
}
8895
const taint_instruction_idt &get_instruction_id() const
8996
{
9097
return instruction_id;
@@ -105,6 +112,7 @@ class taint_instrumentation_propst
105112
private:
106113
taint_rule_idt rule_id;
107114
taint_function_idt function_id;
115+
taint_pretty_function_idt pretty_function_name;
108116
taint_instruction_idt instruction_id;
109117
std::vector<argidx_and_tokennamet> assumption;
110118
std::vector<argidx_and_tokennamet> turn_on;

0 commit comments

Comments
 (0)