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'))
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'))
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'))
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'))
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'))
#javalang experimentation # print(code_extracted.strip()) # tokens = javalang.tokenizer.tokenize(code_extracted.strip()) # token_list = list(tokens) # print(token_list) # for token in token_list: # print(type(token)) # parser = javalang.parser.Parser(javalang.tokenizer.tokenize('String url = "hi"')) # print(parser.parse_expression()) #end of experimentation #Step 3 #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