Testability Pattern Catalogs for SAST
This repository includes catalogs of SAST testability patterns for the OWASP Testability Patterns project. Testability Patterns (TPs) are problematic code instructions that affect the capability of code analysis tools for security testing. Due to TPs, SAST tools may not detect an existing vulnerability, or conversely, report a false alarm.
Quick Start
For more detailed documentation, see the testability pattern framework documentation.
Overview
Language |
# Patterns |
# Instances |
Link |
JavaScript |
105 |
157 |
JS |
PhP |
84 |
145 |
PHP |
Java |
143 |
218 |
JAVA |
List of Patterns
To view the complete list of testability patterns, click on the respective catalogue to expand.
JavaScript
|ID|Pattern Name|Version|Link|
|:--|:--|:--|:--|
|1|unset_element_array|v1.0|[JS/1_unset_element_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/1_unset_element_array)|
|2|uri|v0.draft|[JS/2_uri](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/2_uri)|
|3|evaluated_call_time|v0.draft|[JS/3_evaluated_call_time](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/3_evaluated_call_time)|
|4|function_apply|v0.draft|[JS/4_function_apply](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/4_function_apply)|
|5|variadic|v1.0|[JS/5_variadic](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/5_variadic)|
|6|callback_function|v0.draft|[JS/6_callback_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/6_callback_function)|
|7|array_unshift|v0.draft|[JS/7_array_unshift](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/7_array_unshift)|
|8|send_unpack|v0.draft|[JS/8_send_unpack](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/8_send_unpack)|
|9|late_static_binding|v0.draft|[JS/9_late_static_binding](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/9_late_static_binding)|
|10|spread_properties|v0.draft|[JS/10_spread_properties](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/10_spread_properties)|
|11|closure_scope_chain|v0.draft|[JS/11_closure_scope_chain](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/11_closure_scope_chain)|
|12|nan|v0.draft|[JS/12_nan](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/12_nan)|
|13|function_declared_immediately_executed|v1.0|[JS/13_function_declared_immediately_executed](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/13_function_declared_immediately_executed)|
|14|template_literals|v0.draft|[JS/14_template_literals](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/14_template_literals)|
|15|reflect_delete|v1.0|[JS/15_reflect_delete](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/15_reflect_delete)|
|16|nullish_coaleshing_operator|v0.draft|[JS/16_nullish_coaleshing_operator](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/16_nullish_coaleshing_operator)|
|17|too_function_calls|v0.draft|[JS/17_too_function_calls](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/17_too_function_calls)|
|18|arguments|v0.draft|[JS/18_arguments](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/18_arguments)|
|19|nested_function|v0.draft|[JS/19_nested_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/19_nested_function)|
|20|too_function_calls|v0.draft|[JS/20_too_function_calls](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/20_too_function_calls)|
|21|new_target|v0.draft|[JS/21_new_target](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/21_new_target)|
|22|reduce|v0.draft|[JS/22_reduce](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/22_reduce)|
|23|foreach_in_nested|v0.draft|[JS/23_foreach_in_nested](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/23_foreach_in_nested)|
|24|finite|v0.draft|[JS/24_finite](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/24_finite)|
|25|weak_map|v1.0|[JS/25_weak_map](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/25_weak_map)|
|26|computed_properties|v0.draft|[JS/26_computed_properties](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/26_computed_properties)|
|27|cast_string_array|v0.draft|[JS/27_cast_string_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/27_cast_string_array)|
|28|closures|v1.0|[JS/28_closures](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/28_closures)|
|29|recursion|v0.draft|[JS/29_recursion](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/29_recursion)|
|30|generator_delegation|v1.0|[JS/30_generator_delegation](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/30_generator_delegation)|
|31|generatorfunction_constructor|v1.0|[JS/31_generatorfunction_constructor](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/31_generatorfunction_constructor)|
|32|array_shift|v1.0|[JS/32_array_shift](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/32_array_shift)|
|33|array_length|v0.draft|[JS/33_array_length](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/33_array_length)|
|34|bind|v1.0|[JS/34_bind](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/34_bind)|
|35|async_methods|v1.0|[JS/35_async_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/35_async_methods)|
|36|returned_function|v0.draft|[JS/36_returned_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/36_returned_function)|
|37|generators|v1.0|[JS/37_generators](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/37_generators)|
|38|while_break|v1.0|[JS/38_while_break](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/38_while_break)|
|39|function_get_arguments|v1.0|[JS/39_function_get_arguments](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/39_function_get_arguments)|
|40|function_name_conflict|v0.draft|[JS/40_function_name_conflict](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/40_function_name_conflict)|
|41|symbol|v0.draft|[JS/41_symbol](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/41_symbol)|
|42|anonymous_object|v1.0|[JS/42_anonymous_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/42_anonymous_object)|
|43|window_global|v0.draft|[JS/43_window_global](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/43_window_global)|
|44|array_map|v0.draft|[JS/44_array_map](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/44_array_map)|
|45|escape_unescape(deprecated)|v0.draft|[JS/45_escape_unescape(deprecated)](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/45_escape_unescape(deprecated))|
|46|continue|v0.draft|[JS/46_continue](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/46_continue)|
|47|check_type|v0.draft|[JS/47_check_type](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/47_check_type)|
|48|compare_variables|v0.draft|[JS/48_compare_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/48_compare_variables)|
|49|arrow_function|v0.draft|[JS/49_arrow_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/49_arrow_function)|
|50|conditional_assign|v0.draft|[JS/50_conditional_assign](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/50_conditional_assign)|
|51|global_variable|v0.draft|[JS/51_global_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/51_global_variable)|
|52|super_property|v0.draft|[JS/52_super_property](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/52_super_property)|
|53|simple_set|v0.draft|[JS/53_simple_set](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/53_simple_set)|
|54|define_property|v1.0|[JS/54_define_property](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/54_define_property)|
|55|inheritance|v1.0|[JS/55_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/55_inheritance)|
|56|weak_ref|v1.0|[JS/56_weak_ref](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/56_weak_ref)|
|57|object_seal|v0.draft|[JS/57_object_seal](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/57_object_seal)|
|58|object_freeze|v0.draft|[JS/58_object_freeze](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/58_object_freeze)|
|59|simple_object|v0.draft|[JS/59_simple_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/59_simple_object)|
|60|object_create|v0.draft|[JS/60_object_create](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/60_object_create)|
|61|delete_properties|v1.0|[JS/61_delete_properties](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/61_delete_properties)|
|62|static_variable|v1.0|[JS/62_static_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/62_static_variable)|
|63|tostring|v0.draft|[JS/63_tostring](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/63_tostring)|
|64|assign_object|v1.0|[JS/64_assign_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/64_assign_object)|
|65|proto|v1.0|[JS/65_proto](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/65_proto)|
|66|static_method_and_properties|v0.draft|[JS/66_static_method_and_properties](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/66_static_method_and_properties)|
|67|symbol_to_string_tag|v1.0|[JS/67_symbol_to_string_tag](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/67_symbol_to_string_tag)|
|68|promise|v0.draft|[JS/68_promise](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/68_promise)|
|69|set_and_get|v0.draft|[JS/69_set_and_get](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/69_set_and_get)|
|70|reflect_get|v1.0|[JS/70_reflect_get](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/70_reflect_get)|
|71|named_class|v1.0|[JS/71_named_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/71_named_class)|
|72|errors|v0.draft|[JS/72_errors](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/72_errors)|
|73|weak_set|v0.draft|[JS/73_weak_set](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/73_weak_set)|
|74|object_argument|v0.draft|[JS/74_object_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/74_object_argument)|
|75|functions_in_object|v0.draft|[JS/75_functions_in_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/75_functions_in_object)|
|76|reference_argument|v1.0|[JS/76_reference_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/76_reference_argument)|
|77|object_clone|v1.0|[JS/77_object_clone](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/77_object_clone)|
|78|asynchronous_event_handler|v0.draft|[JS/78_asynchronous_event_handler](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/78_asynchronous_event_handler)|
|79|inline_function|v0.draft|[JS/79_inline_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/79_inline_function)|
|80|json|v0.draft|[JS/80_json](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/80_json)|
|81|text_encoder|v0.draft|[JS/81_text_encoder](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/81_text_encoder)|
|82|location_assign_with_search|v0.draft|[JS/82_location_assign_with_search](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/82_location_assign_with_search)|
|83|getattribute|v1.0|[JS/83_getattribute](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/83_getattribute)|
|84|try_catch|v1.0|[JS/84_try_catch](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/84_try_catch)|
|85|block_scope|v0.draft|[JS/85_block_scope](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/85_block_scope)|
|86|type_juggling|v0.draft|[JS/86_type_juggling](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/86_type_juggling)|
|87|modules|v1.0|[JS/87_modules](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/87_modules)|
|88|with_deprecated|v0.draft|[JS/88_with_deprecated](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/88_with_deprecated)|
|89|proxy|v1.0|[JS/89_proxy](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/89_proxy)|
|90|simple_array|v0.draft|[JS/90_simple_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/90_simple_array)|
|91|destructuring|v0.draft|[JS/91_destructuring](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/91_destructuring)|
|92|set_to_array|v1.0|[JS/92_set_to_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/92_set_to_array)|
|93|for_of|v0.draft|[JS/93_for_of](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/93_for_of)|
|94|matrix|v0.draft|[JS/94_matrix](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/94_matrix)|
|95|arithmetic_operation_array_index|v0.draft|[JS/95_arithmetic_operation_array_index](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/95_arithmetic_operation_array_index)|
|96|object_literals|v0.draft|[JS/96_object_literals](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/96_object_literals)|
|97|vulnerable_key_dictionary|v1.0|[JS/97_vulnerable_key_dictionary](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/97_vulnerable_key_dictionary)|
|98|throw_exception|v1.0|[JS/98_throw_exception](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/98_throw_exception)|
|99|get_ajax|v0.draft|[JS/99_get_ajax](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/99_get_ajax)|
|100|replace_substring|v0.draft|[JS/100_replace_substring](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/100_replace_substring)|
|101|innerhtml_outerhtml|v0.draft|[JS/101_innerhtml_outerhtml](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/101_innerhtml_outerhtml)|
|102|event_dispatch|v1.0|[JS/102_event_dispatch](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/102_event_dispatch)|
|103|event_handler_registration|v1.0|[JS/103_event_handler_registration](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/103_event_handler_registration)|
|104|event_handler_removal|v1.0|[JS/104_event_handler_removal](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/104_event_handler_removal)|
|105|this_statement|v1.0|[JS/105_this_statement](https://github.com/testable-eu/sast-testability-patterns/tree/master/JS/105_this_statement)|
PHP
|ID|Pattern Name|Version|Link|
|:--|:--|:--|:--|
|1|static_variables|v1.0|[PHP/1_static_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/1_static_variables)|
|2|global_variables|v1.0|[PHP/2_global_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/2_global_variables)|
|3|global_array|v0.draft|[PHP/3_global_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/3_global_array)|
|4|conditional_assignment|v0.draft|[PHP/4_conditional_assignment](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/4_conditional_assignment)|
|5|combined_operator|v0.draft|[PHP/5_combined_operator](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/5_combined_operator)|
|6|coalesce|v0.draft|[PHP/6_coalesce](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/6_coalesce)|
|7|string_arithmetic_operations|v0.draft|[PHP/7_string_arithmetic_operations](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/7_string_arithmetic_operations)|
|8|simple_reference|v0.draft|[PHP/8_simple_reference](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/8_simple_reference)|
|9|reference_argument|v0.draft|[PHP/9_reference_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/9_reference_argument)|
|10|return_by_reference|v0.draft|[PHP/10_return_by_reference](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/10_return_by_reference)|
|11|foreach_with_reference|v0.draft|[PHP/11_foreach_with_reference](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/11_foreach_with_reference)|
|12|make_ref|v0.draft|[PHP/12_make_ref](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/12_make_ref)|
|13|assign_static_prop_ref|v0.draft|[PHP/13_assign_static_prop_ref](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/13_assign_static_prop_ref)|
|14|object_assigned_by_reference|v0.draft|[PHP/14_object_assigned_by_reference](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/14_object_assigned_by_reference)|
|15|nested_function|v0.draft|[PHP/15_nested_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/15_nested_function)|
|16|variadic_functions|v0.draft|[PHP/16_variadic_functions](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/16_variadic_functions)|
|17|get_arguments|v0.draft|[PHP/17_get_arguments](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/17_get_arguments)|
|18|send_unpack|v0.draft|[PHP/18_send_unpack](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/18_send_unpack)|
|19|closures|v0.draft|[PHP/19_closures](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/19_closures)|
|20|use_with_closures|v0.draft|[PHP/20_use_with_closures](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/20_use_with_closures)|
|21|simple_object|v0.draft|[PHP/21_simple_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/21_simple_object)|
|22|assign_object|v0.draft|[PHP/22_assign_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/22_assign_object)|
|23|object_argument|v0.draft|[PHP/23_object_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/23_object_argument)|
|24|new_self|v0.draft|[PHP/24_new_self](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/24_new_self)|
|25|clone|v0.draft|[PHP/25_clone](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/25_clone)|
|26|late_static_binding|v0.draft|[PHP/26_late_static_binding](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/26_late_static_binding)|
|27|get_called_class|v1.0|[PHP/27_get_called_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/27_get_called_class)|
|28|static_methods|v0.draft|[PHP/28_static_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/28_static_methods)|
|29|static_properties|v0.draft|[PHP/29_static_properties](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/29_static_properties)|
|30|anonymous_classes|v0.draft|[PHP/30_anonymous_classes](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/30_anonymous_classes)|
|31|static_method_variable|v1.0|[PHP/31_static_method_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/31_static_method_variable)|
|32|set_overloading|v0.draft|[PHP/32_set_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/32_set_overloading)|
|33|get_overloading|v1.0|[PHP/33_get_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/33_get_overloading)|
|34|isset_overloading|v1.0|[PHP/34_isset_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/34_isset_overloading)|
|35|unset_overloading|v0.draft|[PHP/35_unset_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/35_unset_overloading)|
|36|call_overloading|v1.0|[PHP/36_call_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/36_call_overloading)|
|37|callstatic_overloading|v1.0|[PHP/37_callstatic_overloading](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/37_callstatic_overloading)|
|38|invoke|v0.draft|[PHP/38_invoke](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/38_invoke)|
|39|serialize_unserialize|v0.draft|[PHP/39_serialize_unserialize](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/39_serialize_unserialize)|
|40|trait|v0.draft|[PHP/40_trait](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/40_trait)|
|41|self_methods|v0.draft|[PHP/41_self_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/41_self_methods)|
|42|destructor|v0.draft|[PHP/42_destructor](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/42_destructor)|
|43|tostring_echo_object|v0.draft|[PHP/43_tostring_echo_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/43_tostring_echo_object)|
|44|verify_return_type|v0.draft|[PHP/44_verify_return_type](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/44_verify_return_type)|
|45|static_method_from_variable|v0.draft|[PHP/45_static_method_from_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/45_static_method_from_variable)|
|46|object_to_array|v0.draft|[PHP/46_object_to_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/46_object_to_array)|
|47|overriding|v0.draft|[PHP/47_overriding](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/47_overriding)|
|48|construct_with_inheritance|v0.draft|[PHP/48_construct_with_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/48_construct_with_inheritance)|
|49|static_instance|v0.draft|[PHP/49_static_instance](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/49_static_instance)|
|50|throw_exception|v0.draft|[PHP/50_throw_exception](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/50_throw_exception)|
|51|catch_exceptions|v0.draft|[PHP/51_catch_exceptions](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/51_catch_exceptions)|
|52|try_catch_finally|v0.draft|[PHP/52_try_catch_finally](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/52_try_catch_finally)|
|53|track_error|v0.draft|[PHP/53_track_error](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/53_track_error)|
|54|generators|v0.draft|[PHP/54_generators](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/54_generators)|
|55|goto|v0.draft|[PHP/55_goto](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/55_goto)|
|56|exit|v0.draft|[PHP/56_exit](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/56_exit)|
|57|js_redirect|v0.draft|[PHP/57_js_redirect](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/57_js_redirect)|
|58|simple_array|v0.draft|[PHP/58_simple_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/58_simple_array)|
|59|foreach_with_array|v0.draft|[PHP/59_foreach_with_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/59_foreach_with_array)|
|60|array_walk|v1.0|[PHP/60_array_walk](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/60_array_walk)|
|61|array_map|v1.0|[PHP/61_array_map](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/61_array_map)|
|62|parse_str_built_in_function|v0.draft|[PHP/62_parse_str_built_in_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/62_parse_str_built_in_function)|
|63|substring_replace_built_in_function|v0.draft|[PHP/63_substring_replace_built_in_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/63_substring_replace_built_in_function)|
|64|preg_match|v0.draft|[PHP/64_preg_match](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/64_preg_match)|
|65|system|v0.draft|[PHP/65_system](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/65_system)|
|66|superglobals|v0.draft|[PHP/66_superglobals](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/66_superglobals)|
|67|odbc|v0.draft|[PHP/67_odbc](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/67_odbc)|
|68|compact|v1.0|[PHP/68_compact](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/68_compact)|
|69|create_function|v1.0|[PHP/69_create_function](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/69_create_function)|
|70|extract|v1.0|[PHP/70_extract](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/70_extract)|
|71|array_functions|v1.0|[PHP/71_array_functions](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/71_array_functions)|
|72|procedural_queries|v0.draft|[PHP/72_procedural_queries](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/72_procedural_queries)|
|73|wrong_sanitizer|v0.draft|[PHP/73_wrong_sanitizer](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/73_wrong_sanitizer)|
|74|dirname|v1.0|[PHP/74_dirname](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/74_dirname)|
|75|buffer|v0.draft|[PHP/75_buffer](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/75_buffer)|
|76|function_variable|v0.draft|[PHP/76_function_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/76_function_variable)|
|77|object_callable|v0.draft|[PHP/77_object_callable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/77_object_callable)|
|78|autoloading_classes|v0.draft|[PHP/78_autoloading_classes](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/78_autoloading_classes)|
|79|dynamic_include|v0.draft|[PHP/79_dynamic_include](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/79_dynamic_include)|
|80|callback_functions|v0.draft|[PHP/80_callback_functions](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/80_callback_functions)|
|81|new_from_variable|v0.draft|[PHP/81_new_from_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/81_new_from_variable)|
|82|methods_variable|v0.draft|[PHP/82_methods_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/82_methods_variable)|
|83|array_variable_key|v0.draft|[PHP/83_array_variable_key](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/83_array_variable_key)|
|84|variable_variables|v0.draft|[PHP/84_variable_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/PHP/84_variable_variables)|
Java
|ID|Pattern Name|Version|Link|
|:--|:--|:--|:--|
|1|throwable|v1.0|[JAVA/1_throwable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/1_throwable)|
|2|skip_stream|v0.draft|[JAVA/2_skip_stream](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/2_skip_stream)|
|3|copy_array|v0.draft|[JAVA/3_copy_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/3_copy_array)|
|4|list_of|v0.draft|[JAVA/4_list_of](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/4_list_of)|
|5|reflection|v0.draft|[JAVA/5_reflection](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/5_reflection)|
|6|callable|v1.0|[JAVA/6_callable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/6_callable)|
|7|function_currying|v1.0|[JAVA/7_function_currying](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/7_function_currying)|
|8|tomap_2dimarr|v1.0|[JAVA/8_tomap_2dimarr](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/8_tomap_2dimarr)|
|9|beans_getvalue|v1.0|[JAVA/9_beans_getvalue](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/9_beans_getvalue)|
|10|cast|v1.0|[JAVA/10_cast](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/10_cast)|
|11|bytearrayinputstream|v1.0|[JAVA/11_bytearrayinputstream](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/11_bytearrayinputstream)|
|12|chararrayreader|v1.0|[JAVA/12_chararrayreader](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/12_chararrayreader)|
|13|runfinalization|v1.0|[JAVA/13_runfinalization](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/13_runfinalization)|
|14|new_character|v0.draft|[JAVA/14_new_character](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/14_new_character)|
|15|binding|v0.draft|[JAVA/15_binding](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/15_binding)|
|16|type_inference|v1.0|[JAVA/16_type_inference](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/16_type_inference)|
|17|collections_ncopies|v1.0|[JAVA/17_collections_ncopies](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/17_collections_ncopies)|
|18|socketpermission|v1.0|[JAVA/18_socketpermission](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/18_socketpermission)|
|19|stringjoiner_add|v1.0|[JAVA/19_stringjoiner_add](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/19_stringjoiner_add)|
|20|inner_class_declaration|v1.0|[JAVA/20_inner_class_declaration](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/20_inner_class_declaration)|
|21|string_valueof_override_to_string|v1.0|[JAVA/21_string_valueof_override_to_string](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/21_string_valueof_override_to_string)|
|22|addition_assignment_operator|v1.0|[JAVA/22_addition_assignment_operator](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/22_addition_assignment_operator)|
|23|array|v0.draft|[JAVA/23_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/23_array)|
|24|arraylist|v0.draft|[JAVA/24_arraylist](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/24_arraylist)|
|25|assign_class_to_interface|v1.0|[JAVA/25_assign_class_to_interface](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/25_assign_class_to_interface)|
|26|assign_object1_to_object2|v1.0|[JAVA/26_assign_object1_to_object2](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/26_assign_object1_to_object2)|
|27|asynchronous|v1.0|[JAVA/27_asynchronous](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/27_asynchronous)|
|28|bifunction|v0.draft|[JAVA/28_bifunction](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/28_bifunction)|
|29|bounded_wildcard|v0.draft|[JAVA/29_bounded_wildcard](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/29_bounded_wildcard)|
|30|childclass_as_argument|v0.draft|[JAVA/30_childclass_as_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/30_childclass_as_argument)|
|31|class_implement_interface|v0.draft|[JAVA/31_class_implement_interface](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/31_class_implement_interface)|
|32|cloneable|v1.0|[JAVA/32_cloneable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/32_cloneable)|
|33|closeable|v0.draft|[JAVA/33_closeable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/33_closeable)|
|34|collectors|v0.draft|[JAVA/34_collectors](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/34_collectors)|
|35|conditional_operator|v0.draft|[JAVA/35_conditional_operator](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/35_conditional_operator)|
|36|cookies|v0.draft|[JAVA/36_cookies](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/36_cookies)|
|37|decode_uri|v0.draft|[JAVA/37_decode_uri](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/37_decode_uri)|
|38|deep_copy_constructor_object|v0.draft|[JAVA/38_deep_copy_constructor_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/38_deep_copy_constructor_object)|
|39|final_collection|v0.draft|[JAVA/39_final_collection](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/39_final_collection)|
|40|final_variables|v0.draft|[JAVA/40_final_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/40_final_variables)|
|41|finalize|v0.draft|[JAVA/41_finalize](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/41_finalize)|
|42|finally|v0.draft|[JAVA/42_finally](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/42_finally)|
|43|foreach|v0.draft|[JAVA/43_foreach](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/43_foreach)|
|44|functional_interface|v0.draft|[JAVA/44_functional_interface](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/44_functional_interface)|
|45|futuretask|v0.draft|[JAVA/45_futuretask](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/45_futuretask)|
|46|inheritance|v0.draft|[JAVA/46_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/46_inheritance)|
|47|inheritance_from_abstract_static_class|v0.draft|[JAVA/47_inheritance_from_abstract_static_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/47_inheritance_from_abstract_static_class)|
|48|inherited_object_as_argument|v0.draft|[JAVA/48_inherited_object_as_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/48_inherited_object_as_argument)|
|49|inner_class|v0.draft|[JAVA/49_inner_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/49_inner_class)|
|50|inner_class_extends_outer_class|v0.draft|[JAVA/50_inner_class_extends_outer_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/50_inner_class_extends_outer_class)|
|51|inter_class_communication|v0.draft|[JAVA/51_inter_class_communication](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/51_inter_class_communication)|
|52|inter_packages_communication|v0.draft|[JAVA/52_inter_packages_communication](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/52_inter_packages_communication)|
|53|labels|v0.draft|[JAVA/53_labels](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/53_labels)|
|54|lambda_expression_inside_other_method|v0.draft|[JAVA/54_lambda_expression_inside_other_method](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/54_lambda_expression_inside_other_method)|
|55|combined_operations|v0.draft|[JAVA/55_combined_operations](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/55_combined_operations)|
|56|list_string_to_list_object|v0.draft|[JAVA/56_list_string_to_list_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/56_list_string_to_list_object)|
|57|local_method_of_local_class|v0.draft|[JAVA/57_local_method_of_local_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/57_local_method_of_local_class)|
|58|map|v0.draft|[JAVA/58_map](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/58_map)|
|59|method_keyword|v0.draft|[JAVA/59_method_keyword](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/59_method_keyword)|
|60|method_reference|v0.draft|[JAVA/60_method_reference](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/60_method_reference)|
|61|method_within_method|v0.draft|[JAVA/61_method_within_method](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/61_method_within_method)|
|62|multiple_files|v0.draft|[JAVA/62_multiple_files](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/62_multiple_files)|
|63|nested_blocks|v0.draft|[JAVA/63_nested_blocks](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/63_nested_blocks)|
|64|nested_methods|v0.draft|[JAVA/64_nested_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/64_nested_methods)|
|65|object_shallow_copy|v0.draft|[JAVA/65_object_shallow_copy](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/65_object_shallow_copy)|
|66|operations_over_index|v0.draft|[JAVA/66_operations_over_index](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/66_operations_over_index)|
|67|parent_class_as_method_argument|v0.draft|[JAVA/67_parent_class_as_method_argument](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/67_parent_class_as_method_argument)|
|68|pass_by_value|v0.draft|[JAVA/68_pass_by_value](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/68_pass_by_value)|
|69|pass_variable_between_java_files|v0.draft|[JAVA/69_pass_variable_between_java_files](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/69_pass_variable_between_java_files)|
|70|raw_types|v0.draft|[JAVA/70_raw_types](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/70_raw_types)|
|71|recursion|v0.draft|[JAVA/71_recursion](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/71_recursion)|
|72|recursive_class|v0.draft|[JAVA/72_recursive_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/72_recursive_class)|
|73|runnable|v0.draft|[JAVA/73_runnable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/73_runnable)|
|74|runtime_polymorphism|v0.draft|[JAVA/74_runtime_polymorphism](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/74_runtime_polymorphism)|
|75|scriptengine_javascript_redirect|v0.draft|[JAVA/75_scriptengine_javascript_redirect](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/75_scriptengine_javascript_redirect)|
|76|session|v1.0|[JAVA/76_session](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/76_session)|
|77|set|v0.draft|[JAVA/77_set](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/77_set)|
|78|servlet_pass_parameter|v0.draft|[JAVA/78_servlet_pass_parameter](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/78_servlet_pass_parameter)|
|79|simple_inheritance|v0.draft|[JAVA/79_simple_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/79_simple_inheritance)|
|80|simple_object|v0.draft|[JAVA/80_simple_object](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/80_simple_object)|
|81|simple_raw_type|v0.draft|[JAVA/81_simple_raw_type](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/81_simple_raw_type)|
|82|singleton|v0.draft|[JAVA/82_singleton](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/82_singleton)|
|83|sink_in_anonymous_class|v0.draft|[JAVA/83_sink_in_anonymous_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/83_sink_in_anonymous_class)|
|84|sink_in_constructor|v0.draft|[JAVA/84_sink_in_constructor](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/84_sink_in_constructor)|
|85|sink_in_interface_method|v0.draft|[JAVA/85_sink_in_interface_method](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/85_sink_in_interface_method)|
|86|softref|v0.draft|[JAVA/86_softref](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/86_softref)|
|87|static_variables|v0.draft|[JAVA/87_static_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/87_static_variables)|
|88|stream|v0.draft|[JAVA/88_stream](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/88_stream)|
|89|string|v0.draft|[JAVA/89_string](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/89_string)|
|90|string_charat|v0.draft|[JAVA/90_string_charat](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/90_string_charat)|
|91|string_to_object_convert|v0.draft|[JAVA/91_string_to_object_convert](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/91_string_to_object_convert)|
|92|queue_interface|v0.draft|[JAVA/92_queue_interface](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/92_queue_interface)|
|93|stringarray_to_object_array|v0.draft|[JAVA/93_stringarray_to_object_array](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/93_stringarray_to_object_array)|
|94|stringreader|v0.draft|[JAVA/94_stringreader](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/94_stringreader)|
|95|stringwriter|v0.draft|[JAVA/95_stringwriter](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/95_stringwriter)|
|96|switch|v0.draft|[JAVA/96_switch](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/96_switch)|
|97|threadpool|v0.draft|[JAVA/97_threadpool](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/97_threadpool)|
|98|unbounded_wildcard|v0.draft|[JAVA/98_unbounded_wildcard](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/98_unbounded_wildcard)|
|99|variadic_methods|v0.draft|[JAVA/99_variadic_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/99_variadic_methods)|
|100|waiter_and_notifier|v0.draft|[JAVA/100_waiter_and_notifier](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/100_waiter_and_notifier)|
|101|weakref|v0.draft|[JAVA/101_weakref](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/101_weakref)|
|102|collection_taint_propagation|v0.draft|[JAVA/102_collection_taint_propagation](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/102_collection_taint_propagation)|
|103|arrays_aslist|v0.draft|[JAVA/103_arrays_aslist](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/103_arrays_aslist)|
|104|collections_class|v0.draft|[JAVA/104_collections_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/104_collections_class)|
|105|pattern_splitasstream|v0.draft|[JAVA/105_pattern_splitasstream](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/105_pattern_splitasstream)|
|106|list_copyof|v1.0|[JAVA/106_list_copyof](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/106_list_copyof)|
|107|linkedhashset|v0.draft|[JAVA/107_linkedhashset](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/107_linkedhashset)|
|108|getbytes|v0.draft|[JAVA/108_getbytes](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/108_getbytes)|
|109|matcher_replaceall|v0.draft|[JAVA/109_matcher_replaceall](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/109_matcher_replaceall)|
|110|tochararray|v0.draft|[JAVA/110_tochararray](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/110_tochararray)|
|111|linkedhashmap|v0.draft|[JAVA/111_linkedhashmap](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/111_linkedhashmap)|
|112|getdeclaredfields|v0.draft|[JAVA/112_getdeclaredfields](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/112_getdeclaredfields)|
|113|method_chaining|v0.draft|[JAVA/113_method_chaining](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/113_method_chaining)|
|114|vector_setsize|v0.draft|[JAVA/114_vector_setsize](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/114_vector_setsize)|
|115|new_interface|v0.draft|[JAVA/115_new_interface](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/115_new_interface)|
|116|nested_classes|v0.draft|[JAVA/116_nested_classes](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/116_nested_classes)|
|117|modify_method_arguments|v0.draft|[JAVA/117_modify_method_arguments](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/117_modify_method_arguments)|
|118|re-inheritance_of_fields|v0.draft|[JAVA/118_re-inheritance_of_fields](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/118_re-inheritance_of_fields)|
|119|multilayer_inheritance|v0.draft|[JAVA/119_multilayer_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/119_multilayer_inheritance)|
|120|transient_variables|v0.draft|[JAVA/120_transient_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/120_transient_variables)|
|121|forwad_reference_to_a_clas_variable|v0.draft|[JAVA/121_forwad_reference_to_a_clas_variable](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/121_forwad_reference_to_a_clas_variable)|
|122|static_variable_inheritance|v0.draft|[JAVA/122_static_variable_inheritance](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/122_static_variable_inheritance)|
|123|variables_hiding|v0.draft|[JAVA/123_variables_hiding](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/123_variables_hiding)|
|124|inheritance_of_private_class_members|v0.draft|[JAVA/124_inheritance_of_private_class_members](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/124_inheritance_of_private_class_members)|
|125|static_variables|v0.draft|[JAVA/125_static_variables](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/125_static_variables)|
|126|chained_assignment|v0.draft|[JAVA/126_chained_assignment](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/126_chained_assignment)|
|127|generic_methods|v0.draft|[JAVA/127_generic_methods](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/127_generic_methods)|
|128|method_ref|v0.draft|[JAVA/128_method_ref](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/128_method_ref)|
|129|super_invoke_method|v0.draft|[JAVA/129_super_invoke_method](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/129_super_invoke_method)|
|130|conditional_assignment|v0.draft|[JAVA/130_conditional_assignment](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/130_conditional_assignment)|
|131|inherited_access|v0.draft|[JAVA/131_inherited_access](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/131_inherited_access)|
|132|scope|v0.draft|[JAVA/132_scope](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/132_scope)|
|133|switch_in_constructor|v0.draft|[JAVA/133_switch_in_constructor](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/133_switch_in_constructor)|
|134|dead_code_behavior|v0.draft|[JAVA/134_dead_code_behavior](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/134_dead_code_behavior)|
|135|lambda_access_static|v0.draft|[JAVA/135_lambda_access_static](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/135_lambda_access_static)|
|136|init_inner_class|v0.draft|[JAVA/136_init_inner_class](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/136_init_inner_class)|
|137|switch_string|v0.draft|[JAVA/137_switch_string](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/137_switch_string)|
|138|eval_order|v0.draft|[JAVA/138_eval_order](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/138_eval_order)|
|139|method_erasure|v0.draft|[JAVA/139_method_erasure](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/139_method_erasure)|
|140|super_expression|v0.draft|[JAVA/140_super_expression](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/140_super_expression)|
|141|this_keyword|v0.draft|[JAVA/141_this_keyword](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/141_this_keyword)|
|142|deep_nesting|v0.draft|[JAVA/142_deep_nesting](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/142_deep_nesting)|
|143|late_addition|v0.draft|[JAVA/143_late_addition](https://github.com/testable-eu/sast-testability-patterns/tree/master/JAVA/143_late_addition)|
Contributions
We are delighted to know that you would like to contribute to this repository. Please follow our contribution guideline before you submit a PR.
For any questions, suggestions, feedback or concerns. please raise an issue in the repository. We welcome suggestions and feedback from the community.
Important: When opening a new issue, please follow our provided issue templates, if possible. For example, if you want to add a new testability pattern, please choose the New Testability Pattern Proposal
template.
News
Follow us on Twitter on @Testable_EU or check out TESTABLE website available at https://testable.eu/.
Publications
@article{altestability,
title={Testability Tarpits: the Impact of Code Patterns on the Security Testing of Web Applications},
author={Al Kassar, Feras and Clerici, Giulia and Compagna, Luca and Yamaguchi, Fabian and Balzarotti, Davide},
booktitle = {NDSS},
year = {2022},
}
To see the complete list of relevant publications, please visit https://testable.eu/publications/.
License
This project is licensed under Apache License Version 2.0
. See LICENSE for more information.
Acknowledgements
This project received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 101019206.
Funded by the European Union