Skip to content

Commit dbc2001

Browse files
authored
Merge pull request diffblue#504 from diffblue/jd/enhancement/prettify_di_java_types
Turns DI raw type declaration into one you'd see in Java code [SEC-556]
2 parents 547dcfb + 037f97e commit dbc2001

File tree

5 files changed

+15
-10
lines changed

5 files changed

+15
-10
lines changed

src/java-class-info/entry_point.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ entry_pointt::entry_pointt(
2828

2929
for(const code_typet::parametert &parameter : signature_info.parameters())
3030
{
31-
method.parameters.emplace_back(utilst::fetch_type_name(parameter.type()));
31+
method.parameters.emplace_back(
32+
utilst::get_java_type_name(parameter.type()));
3233
}
3334

34-
method.return_type = utilst::fetch_type_name(signature_info.return_type());
35+
method.return_type = utilst::get_java_type_name(signature_info.return_type());
3536

3637
std::string method_name;
3738
method.name = id2string(entry_point_method.name);

src/java-class-info/entry_point_detection.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ void entry_point_detectiont::find_entry_points(
214214
signature_info.parameters().end(),
215215
std::back_inserter(parameter_types),
216216
[](parsed_param param)
217-
{ return utilst::fetch_type_name(param.type()); });
217+
{ return utilst::get_java_type_name(param.type()); });
218218

219219
if(!match_types(method_patterns.arguments, parameter_types))
220220
continue;
221221

222222
std::string return_type =
223-
utilst::fetch_type_name(signature_info.return_type());
223+
utilst::get_java_type_name(signature_info.return_type());
224224
if(!return_type.empty())
225225
{
226226
std::vector<std::string> ret_vec = {return_type};

src/java-class-info/java_class_info.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <util/parse_options.h>
2020
#include <util/ui_message.h>
2121
#include <utility>
22+
#include <utils.h>
2223

2324
class cmdline_optionst final:
2425
public parse_options_baset
@@ -300,11 +301,14 @@ int cmdline_optionst::doit()
300301
for(const java_bytecode_parse_treet::fieldt &field :
301302
parsed_class.fields)
302303
{
304+
typet field_type = java_type_from_string(
305+
field.signature.has_value() ? field.signature.value()
306+
: field.descriptor,
307+
id2string(parsed_class.name));
308+
303309
if(has_annotation_in_list(field.annotations, autowire_annotation))
304310
bean.fields.emplace_back(
305-
field.name,
306-
field.signature.has_value() ? field.signature.value()
307-
: field.descriptor);
311+
field.name, utilst::get_java_type_name(field_type));
308312
}
309313

310314
beans.push_back(std::move(bean));

src/java-class-info/utils.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/// Reconstruct the type declaration to match normal Java code.
1212
/// \param type: type to recursively reconstruct name from.
1313
/// \return human-friendly type name
14-
std::string utilst::fetch_type_name(const typet &type)
14+
std::string utilst::get_java_type_name(const typet &type)
1515
{
1616
if(type.id() == ID_pointer)
1717
{
@@ -25,7 +25,7 @@ std::string utilst::fetch_type_name(const typet &type)
2525
for(const reference_typet &type_arguments :
2626
to_java_generic_type(type).generic_type_arguments())
2727
{
28-
type_argument_names.push_back(fetch_type_name(type_arguments));
28+
type_argument_names.push_back(get_java_type_name(type_arguments));
2929
}
3030

3131
if(!type_argument_names.empty())

src/java-class-info/utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ typedef code_typet::parametert parsed_param;
1212
class utilst
1313
{
1414
public:
15-
static std::string fetch_type_name(const typet &type);
15+
static std::string get_java_type_name(const typet &type);
1616
};
1717

1818
#endif //SECURITY_SCANNER_UTILS_H

0 commit comments

Comments
 (0)