예제 #1
0
    def test_Processing_Statement6(self):
        input_code_statement = 'protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException'
        input_word_tokens = get_list_of_words_from_statement(
            input_code_statement)
        actual_output_dict = parse_java_code_line(input_word_tokens)

        self.assertFalse(actual_output_dict.get('left_side_expression'))

        self.assertFalse(actual_output_dict.get('right_side_expression'))

        self.assertEqual(input_code_statement,
                         actual_output_dict.get('statement'))
        self.assertEqual(line_type_dict.get(2),
                         actual_output_dict.get('statement_type'))

        self.assertFalse(actual_output_dict.get('java_data_types'))

        self.assertTrue(actual_output_dict.get('java_return_types'))
        self.assertEqual(['void'], actual_output_dict.get('java_return_types'))

        self.assertTrue(actual_output_dict.get('access_modifiers'))
        self.assertEqual(['protected'],
                         actual_output_dict.get('access_modifiers'))

        self.assertFalse(actual_output_dict.get('inheritance_type'))

        self.assertTrue(actual_output_dict.get('exception_type'))
        self.assertEqual(['throws'], actual_output_dict.get('exception_type'))

        self.assertTrue(actual_output_dict.get('exceptions_and_inheritances'))
        self.assertEqual(['ServletException', 'IOException'],
                         actual_output_dict.get('exceptions_and_inheritances'))

        self.assertFalse(actual_output_dict.get('unknown'))
예제 #2
0
    def test_Processing_Statement5(self):
        input_code_statement = 'super();'
        input_word_tokens = get_list_of_words_from_statement(
            input_code_statement)
        actual_output_dict = parse_java_code_line(input_word_tokens)

        self.assertFalse(actual_output_dict.get('left_side_expression'))

        self.assertFalse(actual_output_dict.get('right_side_expression'))

        self.assertEqual(input_code_statement,
                         actual_output_dict.get('statement'))
        self.assertEqual(line_type_dict.get(3),
                         actual_output_dict.get('statement_type'))

        self.assertFalse(actual_output_dict.get('java_data_types'))

        self.assertFalse(actual_output_dict.get('java_return_types'))

        self.assertFalse(actual_output_dict.get('access_modifiers'))

        self.assertFalse(actual_output_dict.get('inheritance_type'))

        self.assertFalse(actual_output_dict.get('exceptions_and_inheritances'))

        self.assertFalse(actual_output_dict.get('unknown'))
예제 #3
0
    def test_Processing_Statement3(self):
        input_code_statement = 'private static final long serialVersionUID = 1L;'
        input_word_tokens = get_list_of_words_from_statement(
            input_code_statement)
        actual_output_dict = parse_java_code_line(input_word_tokens)

        self.assertTrue(actual_output_dict.get('left_side_expression'))
        self.assertEqual('serialVersionUID',
                         actual_output_dict.get('left_side_expression'))

        self.assertTrue(actual_output_dict.get('right_side_expression'))
        self.assertEqual('1L;',
                         actual_output_dict.get('right_side_expression'))

        self.assertEqual(input_code_statement,
                         actual_output_dict.get('statement'))
        self.assertEqual(line_type_dict.get(1),
                         actual_output_dict.get('statement_type'))

        self.assertTrue(actual_output_dict.get('java_data_types'))
        self.assertEqual(['long'], actual_output_dict.get('java_data_types'))

        self.assertFalse(actual_output_dict.get('java_return_types'))

        self.assertTrue(actual_output_dict.get('access_modifiers'))
        self.assertEqual(['private'],
                         actual_output_dict.get('access_modifiers'))

        self.assertFalse(actual_output_dict.get('inheritance_type'))

        self.assertFalse(actual_output_dict.get('exceptions_and_inheritances'))

        self.assertTrue(actual_output_dict.get('unknown'))
        self.assertEqual(['static', 'final'],
                         actual_output_dict.get('unknown'))
예제 #4
0
    def test_Processing_Statement2(self):
        input_code_statement = 'public class CustomerFlightDetails extends HttpServlet'
        input_word_tokens = get_list_of_words_from_statement(
            input_code_statement)
        actual_output_dict = parse_java_code_line(input_word_tokens)

        self.assertFalse(actual_output_dict.get('right_side_expression'))
        self.assertFalse(actual_output_dict.get('left_side_expression'))
        self.assertEqual(input_code_statement,
                         actual_output_dict.get('statement'))
        self.assertEqual(line_type_dict.get(6),
                         actual_output_dict.get('statement_type'))
        self.assertFalse(actual_output_dict.get('java_data_types'))
        self.assertFalse(actual_output_dict.get('java_return_types'))

        self.assertTrue(actual_output_dict.get('access_modifiers'))
        self.assertEqual(['public'],
                         actual_output_dict.get('access_modifiers'))

        self.assertTrue(actual_output_dict.get('inheritance_type'))
        self.assertEqual(['extends'],
                         actual_output_dict.get('inheritance_type'))

        self.assertTrue(actual_output_dict.get('exceptions_and_inheritances'))
        self.assertEqual(['HttpServlet'],
                         actual_output_dict.get('exceptions_and_inheritances'))

        self.assertFalse(actual_output_dict.get('unknown'))
예제 #5
0
 def test_Processing_Statement1(self):
     input_code_statement = 'String url = "jdbc:mysql://localhost:3306/airline";'
     input_word_tokens = get_list_of_words_from_statement(
         input_code_statement)
     actual_output_dict = parse_java_code_line(input_word_tokens)
     self.assertEqual('"jdbc:mysql://localhost:3306/airline";',
                      actual_output_dict.get('right_side_expression'))
     self.assertEqual('url', actual_output_dict.get('left_side_expression'))
     self.assertEqual(input_code_statement,
                      actual_output_dict.get('statement'))
     self.assertEqual(line_type_dict.get(1),
                      actual_output_dict.get('statement_type'))
     self.assertTrue(actual_output_dict.get('java_data_types'))
     self.assertFalse(actual_output_dict.get('java_return_types'))
     self.assertFalse(actual_output_dict.get('access_modifiers'))
     self.assertFalse(actual_output_dict.get('inheritance_type'))
     self.assertFalse(actual_output_dict.get('exceptions_and_inheritances'))
     self.assertFalse(actual_output_dict.get('unknown'))
예제 #6
0
#Make sense of all the code extracted. Loop through each of the lines code_extracted and tokenize them
code_dict = {}
for key in code_extracted:
    code_dict[key] = get_list_of_words_from_statement(code_extracted.get(key))

#Step 4 - Order the code lines. Ignore line number from now on
code_lines_list = [code_dict.get(key) for key in sorted(code_dict.iterkeys())]

#Step 4 - Run the extracted dictionary on the java parser to identify key java elements
user_input_feature = training_features_dict.get(user_input_dict.get('feature'))
user_provided_line = code_extracted.get(user_input_dict.get("line_number"))
user_provided_line_info = {}
metadata_info = []
print("******Beginning to parse for information******")
for line in code_lines_list:
    parsed_line_dict = parse_java_code_line(line)

    if (parsed_line_dict.get('statement') == user_provided_line):
        user_provided_line_info = parsed_line_dict
    else:
        metadata_info.append(parsed_line_dict)

print("Trained Feature = {}".format(user_input_feature))
print
print("User Provided Line = {}".format(user_provided_line))
print
print("Line Info = {}".format(user_provided_line_info))
print
print("Metadata Info = {}".format(metadata_info))
print