Luận văn thạc sĩ áp dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong phát hiện lỗi cho ngôn ngữ php

52 1 0
Luận văn thạc sĩ  áp dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong phát hiện lỗi cho ngôn ngữ php

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LỜI CẢM ƠN Trong q trình hồn thành luận văn nhận giúp đỡ, chia sẻ dậy tận tình thầy trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội Cũng giúp đỡ bạn bè ngồi trường, đồng nghiệp gia đình Tôi xin gửi lời cảm ơn tới TS Nguyễn Thị Huyền Châu người trực tiếp hướng dẫn, bảo cho tơi kiến thức kinh nghiệm q trình thực luân văn Tôi cố gắng để hồn thành luận văn Trong q trình làm việc khơng tránh khỏi có sơ xuất Tơi xin ghi nhận đóng góp ý kiến từ thầy bạn bè Tôi xin chân thành cảm ơn đóng góp q báu này! LỜI CAM ĐOAN Tơi xin cam đoan kết trình bày luận văn trình tự nghiên cứu giúp đỡ giảng viên hướng dẫn Các nội dung nghiên cứu kết đề tài hoàn toàn trung thực Các trích dẫn từ nguồn tài liệu bên ngồi liệt kê rõ ràng cuối luận văn Hà Nội, 20 tháng 01 năm 2016 Học viên Nguyễn Quang Hiệp MỤC LỤC DANH MỤC BẢNG, HÌNH VẼ DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT BẢNG THUẬT NGỮ ANH VIỆT CHƯƠNG MỞ ĐẦU 1.1 Đặt vấn đề .1 1.2 Mục tiêu phương pháp luận 1.3 Bố cục luận văn .2 CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Tổng quan mơ hình ngơn ngữ 2.1.1 Từ tố chuỗi mã từ vựng .3 2.1.2 Mơ hình n-gram từ vựng cho mã nguồn 2.2 Mơ hình ngơn ngữ ngữ nghĩa thống kê (SLAMC) 2.2.1 Từ tố chuỗi mã ngữ nghĩa 2.2.2 Mơ hình n-gram chủ đề 2.2.3 Kết hợp cặp giá trị 2.3 Phát lỗi CHƯƠNG ÁP DỤNG MƠ HÌNH NGƠN NGỮ NGỮ NGHĨA THỐNG KÊ TRONG PHÁT HIỆN LỖI CHO NGÔN NGỮ PHP 10 3.1 Biến đổi mơ hình SLAMC để ứng dụng cho ngôn ngữ PHP 10 3.1.1 Bảng nguyên tắc xây dựng ngữ nghĩa 10 3.1.2 Phạm vi 13 3.2 Cách thức xây dựng chương trình mơ 14 3.2.1 Cây cú pháp trừu tượng (AST) .14 3.2.2 Duyệt cú pháp trừu tượng 17 3.2.3 Huấn luyện mơ hình n-gram chủ đề kết hợp cặp giá trị 20 3.2.4 phát lỗi 20 3.3 Sơ đồ thuật toán 23 3.3.1 Sơ đồ thuật toán mức tổng quan 24 3.3.2 Sơ đồ thuật toán duyệt cú pháp trừu tượng 25 3.3.3 Các sơ đồ thuật toán huấn luyện .26 3.3.4 Sơ đồ thuật toán phát lỗi 29 CHƯƠNG THỰC NGHIỆM .34 4.1 Môi trường thực nghiệm .34 4.1.1 Môi trường 34 4.1.2 Chương trình mơ sử dụng cho thực nghiệm 34 4.2 phát lỗi 35 4.2.1 Mục tiêu 35 4.2.2 Thiết kế thực nghiệm 35 4.2.3 Kết 38 4.2.4 So sánh với hai IDE dùng rộng rãi cho PHP 40 CHƯƠNG KẾT LUẬN 43 5.1 Kết đạt 43 5.2 Hướng phát triển tương lai 44 TÀI LIỆU THAM KHẢO .45 DANH MỤC BẢNG, HÌNH VẼ Bảng 2.1 Các từ tố mã từ vựng từ đoạn mã Bảng 3.1 Nguyên tắc xây dựng ngữ nghĩa 10 Bảng 3.2 Thông tin khối 14 Bảng 4.1 Các dự án PHP sử dụng thực nghiệm 34 Hình 2.1 Huấn luyện dự đốn mơ hình n-gram chủ đề [7] .7 Hình 3.1 Ví dụ phân chia khối thân hàm .13 Hình 3.2 danh sách lớp cần thiết để thực thi chuyển đổi mã nguồn PHP sang cú pháp trừu tượng 15 Hình 3.3 Gọi pdt-standalone-parser [3] .15 Hình 3.4 trình bày ví dụ chuyển đổi mã nguồn PHP sang cú pháp trừu tượng .16 Hình 3.4 Duyệt hàm .18 Hình 3.5 Tệp hồn chỉnh .19 Hình 3.6 Giả mã thuật tốn dự đốn lỗi chương trình 20 Hình 3.7 phát lỗi cho tệp hồn chỉnh 21 Hình 3.8 Sơ đồ thuật toán áp dụng SLAMC phát lỗi cho ngôn ngữ PHP [7] .24 Hình 3.9 Sơ đồ thuật toán duyệt cú pháp trừu tượng 25 Hình 3.10 Sơ đồ thuật toán huấn luyện n-gram [7] .26 Hình 3.11 Sơ đồ thuật tốn huấn luyện n-gram chủ đề [7] 27 Hình 3.12 Sơ đồ thuật toán huấn luyện cặp giá trị [7] 28 Hình 3.13 Sơ đồ thuật tốn phát lỗi [7] .29 Hình 3.14 Sơ đồ thuật toán mở rộng từ tố liên quan [7] .30 Hình 3.15 Sơ đồ thuật tốn tính điểm liên quan [7] 31 Hình 3.16 Sơ đồ thuật tốn kiểm tra phù hợp ngữ cảnh [7] 32 Hình 3.17 Sơ đồ thuật toán biến đổi từ dạng ngữ nghĩa sang từ vựng [7] .33 Hình 4.1 Đoạn mã sử dụng cho thực nghiệm (1) 36 Hình 4.2 Đoạn mã sử dụng cho thực nghiệm (2) 37 Hình 4.3 Kết phát lỗi cho thực nghiệm (1) 38 Hình 4.4 Kết phát lỗi cho thực nghiệm (2) 39 Hình 4.5 Cảnh báo Netbean IDE 40 Hình 4.6 Kết Netbean IDE không phát lỗi 40 Hình 4.7 Kết cảnh báo Phpstorm IDE 40 Hình 4.8 Kết chương trình chạy thử Eclipse IDE 41 Hình 4.9 Kết so sánh chạy chương trình với dự án .41 DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiệu/Chữ viết tắt API AST GUI I/O PPA SLAMC Nội dung/Giải thích Application Program Interface Abstract Syntax Tree Graphical User Interface Input/Output Partial Program Analysis Statistical Semantic Language Model for Source Code BẢNG THUẬT NGỮ ANH VIỆT Tiếng Anh Token Lexical code token Lexical code sequence Lexical n-gram Lexeme Semantic code token Role Sememe Vocabulary Scope Dependency Semantic code sequence Semantic n-gram File Tiếng Việt Từ tố Từ tố mã từ vựng Chuỗi mã từ vựng N-gram từ vựng Từ vị Từ tố mã ngữ nghĩa Vai trò Ngữ nghĩa Tập từ vựng Phạm vi Tập phụ thuộc Chuỗi mã ngữ nghĩa N-gram ngữ nghĩa Tệp 1CHƯƠNG MỞ ĐẦU 1.1 Đặt vấn đề Trong thuật tốn xử lý ngơn ngữ n-gram thuật toán tốt Nhờ vào khả mơ hình n-gram sử dụng cho việc phát lỗi tự động tìm đoạn mã có khả gây lỗi cao (code completion - code suggestion) Với mơ hình n-gram việc gợi ý dừng lại ngữ cảnh cục đơn vị mã việc gơị ý mã tốt sử dụng thêm yếu tố khác lại đơn vị mã Việc thực hóa với nghiên cứu mơ hình ngơn ngữ ngữ nghĩa thống kê cho mã nguồn (Statistical Semantic Language Model for Source Code SLAMC) giới thiệu SLAMC thêm việc sử dụng thông tin ngữ nghĩa từ tố khái niệm chủ đề xem xét cặp giá trị phần tử (pair – wise) chương trình Hơn yếu tố thực tế chương trình phát triển có chứa nguy xảy lỗi Việc phát lỗi đóng góp lớn vào việc ổn định sử dụng chương trình hiệu giảm thiểu chi phí bảo trì tăng thời gian sử dụng hiệu Các ứng dụng thực tiễn xây dựng SLAMC phát lỗi tự động dị mã có khả gây lỗi chương trình cho ngơn ngữ Java có hiệu cao có đóng góp tốt rút ngắn thời gian nâng cao chất lượng chương trình Với ưu với phát triển mạnh mẽ ngôn ngữ PHP giới nói chung Việt Nam nói riêng luận văn tập trung vào chương trình phát lỗi cho tệp mã nguồn ngơn ngữ PHP Ở thời điểm bắt đầu luận văn PHP có phiên 5.3 5.4 mức beta nên luận văn tập trung làm với PHP phiên 5.3 1.2 Mục tiêu phương pháp luận Luận văn trước tiên xây dựng bảng ngữ nghĩa cho ngơn ngữ PHP sau viết chương trình chuyển đổi tệp mã nguồn PHP thành cú pháp Tiếp luận văn sửa đổi phần module thuật toán SLAMC để đọc cú pháp PHP phục vụ việc huấn luyện cho thuật toán Cuối luận văn xây dựng thuật toán nhỏ để dự đốn lỗi cho chương trình PHP dựa thuật toán đánh trọng số phần gợi ý thuật toán SLAMC Cuối luận văn đánh giá độ xác gợi ý dựa chương trình mơ việc xây dựng chương trình mơ theo bước nêu chạy thử nghiệm số dự án PHP sử dụng framework PHP hay dùng IDE phổ biến cho PHP NETBEAN PHPStorm 1.3 Bố cục luận văn Luận văn trình bày theo bố cục gồm chương kết luận: Chương 1: Mở đầu Giới thiệu khái quát vấn đề nghiên cứu, phương pháp luận bố cục luận văn Chương 2: Cơ sở lý thuyết Trình bày khái niệm, định lý, thuật toán cần hiểu rõ để áp dụng mơ hình ngơn ngữ ngữ nghĩa thống kê phát lỗi cho ngôn ngữ PHP Chương 3: Áp dụng mơ hình ngơn ngữ ngữ nghĩa thống kê phát lỗi cho ngơn ngữ PHP Chương trình bày bước cài đặt SLAMC cho PHP Đầu tiên việc đưa bảng nguyên tắc xây dựng ngữ nghĩa phương pháp lưu trữ phạm vi cho ngôn ngữ PHP Bước cách thức chuyển đổi từ mã nguồn PHP sang cú pháp trừu tượng (AST) Tiếp theo, công việc cần cho phát lỗi duyệt cú pháp, huấn luyện mơ hình n-gram chủ đề, kết hợp cặp giá trị cách thức đưa danh sách gợi ý phù hợp Bước cuối cùng, sơ đồ thuật tốn chương trình mơ đưa với mục đích làm rõ hướng cài đặt chương trình Chương 4: Thực nghiệm chương trình mơ Trong chương trình bày thực nghiệm liên quan đến phát lỗi đánh giá độ xác áp dụng SLAMC cho ngôn ngữ PHP Thứ nhất, xem xét phát lỗi tệp mã nguồn nhằm thấy bước đầu chương trình mơ phán đốn xác đoạn mã có khả gây lỗi Sau chạy thử chương trình với framework PHP sử dụng rộng rãi so sánh Kết luận: Tóm tắt kết thu đánh gía ưu nhược điểm luận văn hướng phát triển tương lai ... áp dụng mơ hình ngơn ngữ ngữ nghĩa thống kê phát lỗi cho ngôn ngữ PHP Chương 3: Áp dụng mơ hình ngơn ngữ ngữ nghĩa thống kê phát lỗi cho ngôn ngữ PHP Chương trình bày bước cài đặt SLAMC cho PHP. .. mức độ vị trí lỗi 10 3CHƯƠNG ÁP DỤNG MƠ HÌNH NGÔN NGỮ NGỮ NGHĨA THỐNG KÊ TRONG PHÁT HIỆN LỖI CHO NGÔN NGỮ PHP Theo nghiên cứu trước, SLAMC áp dụng thành công để gợi ý mã cho ngơn ngữ Java Chính... 2.2.2 Mơ hình n-gram chủ đề 2.2.3 Kết hợp cặp giá trị 2.3 Phát lỗi CHƯƠNG ÁP DỤNG MƠ HÌNH NGƠN NGỮ NGỮ NGHĨA THỐNG KÊ TRONG PHÁT HIỆN LỖI CHO NGÔN NGỮ PHP 10 3.1

Ngày đăng: 28/03/2023, 12:58

Tài liệu cùng người dùng

Tài liệu liên quan