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 3 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 tốn huấn luyện n-gram [7] .26 Hình 3.11 Sơ đồ thuật toá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 tố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 tố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 30 Hình 3.13 mơ tả thuật tốn phát lỗi Thơng tin đầu vào gồm có danh sách [6] biểu diễn ngữ nghĩa từ tố trích xuất từ tệp mã nguồn, thơng tin lưu trữ mơ hình n-gram chủ đề (ví dụ: số chủ đề, tỷ lệ chủ đề, …), danh sách cặp giá trị, bảng từ điển n-gram, tiền tố Chương trình thực bước tính tốn mở rộng từ tố liên quan, tính điểm liên quan, kiểm tra phù hợp ngữ cảnh, biến đổi từ dạng ngữ nghĩa sang từ vựng, in hình 3.3.4.1 Sơ đồ thuật tốn mở rộng từ tố liên quan Hình 3.14 Sơ đồ thuật tốn mở rộng từ tố liên quan [7] Hình 3.14 biểu diễn thuật toán mở rộng từ tố liên quan Đầu vào thuật toán chuỗi sử dụng để truy vấn (chuỗi biểu diễn dạng mảng, phần tử mảng tương ứng với phần tử chuỗi) Thuật tốn gồm hai bước sau:  Bước 1: Trích xuất tập liên quan chuỗi truy vấn 31  Bước 2: Duyệt tập liên quan thu bước kiểm tra tồn tiền tố Nếu tập liên quan tồn tiền tố lấy tất tập tập liên quan tính trọng số 3.3.4.2 Sơ đồ thuật tốn tính điểm liên quan Hình 3.15 Sơ đồ thuật tốn tính điểm liên quan [7] Hình 3.15 mơ tả thuật tốn tính điểm liên quan Đầu vào thuật tốn gồm có trọng số từ tố liên quan, trọng số cặp giá trị trọng số dựa mơ hình n-gram chủ đề Chương trình thực tính tổng trọng số lưu trữ vào danh sách Sắp xếp lại phần tử danh sách theo thứ tự giảm dần tổng trọng số Sau đó, lấy 20 phần tử danh sách sau xếp 32 đưa vào danh sách Danh sách gọi danh sách xếp hạng đầu vào cho thuật toán kiểm tra phù hợp ngữ cảnh 3.3.4.3 Sơ đồ thuật tốn kiểm tra phù hợp ngữ cảnh Hình 3.16 Sơ đồ thuật toán kiểm tra phù hợp ngữ cảnh [7] Hình 3.16 sơ đồ thuật tốn kiểm tra phù hợp ngữ cảnh Danh sách phần tử xếp hạng bảng từ điển n-gram đầu vào thuật tốn Chương trình thực duyệt phần tử danh sách phần tử xếp hạng kiểm tra phần tử có phải biến hay khơng Nếu khơng phải chuyển sang duyệt phần tử Ngược lại, tiếp tục kiểm tra phần tử có phù hợp với ngữ cảnh hay khơng Nếu phù hợp ngữ cảnh phần tử xem xét lưu trữ vào danh sách danh sách đầu vào cho thuật toán biến đổi từ dạng ngữ nghĩa sang từ vựng 3.3.4.4 Sơ đồ thuật toán biến đổi từ dạng ngữ nghĩa sang từ vựng 33 Hình 3.17 Sơ đồ thuật toán biến đổi từ dạng ngữ nghĩa sang từ vựng [7] Hình 3.17 biểu diễn sơ đồ thuật toán biến đổi từ dạng ngữ nghĩa sang từ vựng Đầu vào thuật toán bao gồm hai danh sách, danh sách phần tử phù hợp ngữ cảnh danh sách biến với kiểu liệu tương ứng tệp xem xét phát lỗi Chương trình tiến hành duyệt phần tử danh sách phần tử phù hợp ngữ cảnh đưa danh sách tất biến phù hợp Sau đó, chương trình kiểm tra phạm vi biến, biến phù hợp lưu trữ vào danh sách phát lỗi Cuối cùng, danh sách phát lỗi khác rỗng chương trình in hình 4CHƯƠNG THỰC NGHIỆM Luận văn tiến hành vài thực nghiệm để nghiên cứu xác áp dụng SLAMC phát lỗi cho ngơn ngữ PHP với cấu hình khác so sánh 34 với mơ hình n-gram từ vựng 4.1 Môi trường thực nghiệm 4.1.1 Môi trường Các thực nghiệm tiến hành máy tính HP EliteBook 8460p, 4GB RAM, chíp Intel core I5 sử dụng hệ điều hành ubuntu 15.04 ubuntu 15.10 64 bits Để so sánh, thu thập tập liệu dự án PHP thực bước giống Trong trình thực thực nghiệm ta loại bỏ tất tệp có lỗi chưa đầy đủ để không làm ảnh hưởng đến trình huấn luyện liệu tính độ xác Tên dự án PHP, phiên bản, số tệp mã nguồn dự án liệt kê bảng 4.1 Bảng 4.1 Các dự án PHP sử dụng thực nghiệm STT Tên dự án Phiên Số tệp 4.0 5.3 5.4 2.0.6 62 76 5010 PHP PHP 5.3 PHP 5.4 Yii2 vendor Nguồn http://php.net http://php.net http://php.net http://www.yiiframework.com/ download/ Symfony 2.0 7161 http://symfony.com/download/ Laravel 5.0 5234 http://laravel.com/docs/master 4.1.2 Chương trình mơ sử dụng cho thực nghiệm Chương trình mơ xây dựng sử dụng ngôn ngữ Java công cụ Eclipse Do tham khảo mã nguồn áp dụng SLAMC phát lỗi cho ngôn ngữ Java [7] nên phải xây dựng mô đun chuyển đổi mã nguồn PHP sang cú pháp trừu tượng, duyệt cú pháp trừu tượng để lấy thông tin cần thiết (các biến, hàm, …) giúp cho việc biểu diễn[7] theo bảng nguyên tắc xây dựng [7] tính tốn khác (xây dựng tập từ vựng, bảng từ điển ngram, …), phát lỗi Một số mô đun kế thừa sửa đổi để phù hợp sử dụng phát lỗi cho ngôn ngữ PHP huấn luyện n-gram chủ đề, huấn luyện cặp giá trị Các mơ đun tiện ích khác xây dựng tiền tố, tính điểm liên quan, … sử dụng lại 4.2 phát lỗi 4.2.1 Mục tiêu Luận văn thực kiểm định với liệu mẫu phục vụ cho việc huấn luyện dự đốn nhằm xác định tính đắn chương trình mơ Sau chương trình mơ hồn thành tính tốn, luận văn đưa đánh giá dựa kết thu 35 4.2.2 Thiết kế thực nghiệm Để thử nghiệm việc phát lỗi, luận văn sử dụng mã nguồn dự án Laravel Symfony cho mục đích huấn luyện Hai dự án hai dự án có số tệp mã nguồn lớn dự án mà luận văn sử dụng cho thực nghiệm Tổng số tệp mã nguồn hai dự án 12395 tệp Các thực nghiệm sử dụng đoạn mã đầy đủ hình 4.1 4.2 cho mục đích phát dịng có khả xuất lỗi Hì nh 4.1 Đoạn mã sử dụng cho thực nghiệm (1) Hình 4.1 biểu diễn đoạn mã đầy đủ sử dụng cho thực nghiệm phát lỗi Đoạn mã gồm có khai báo class, hai khai báo thuộc tính, kiểu liệu định nghĩa (int), hai biến toàn cục ($a, $b) hai khai báo hàm: hàm compare hàm contruct 36 Hình 4.2 Đoạn mã sử dụng cho thực nghiệm (2) Hình 4.2 biểu diễn đoạn mã đầy đủ sử dụng cho thực nghiệm phát lỗi Đoạn mã gồm có khai báo class, hai khai báo thuộc tính, kiểu liệu định nghĩa (int), hai biến toàn cục ($firstnum, $secondnum) hai khai báo hàm: hàm compare hàm contruct Các thông tin khai báo đoạn mã tương tự đoạn mã hình 4.1 37 4.2.3 Kết Danh sách in cảnh báo khả lỗi hình 4.3 4.4 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ASSIGN(=) IF END ELSE END F_ACCESS(null, ) F_ACCESS(null, ) IF END F_ACCESS(null, ) F_ACCESS(null, ) 10 END No error Warning level 1! at : No error numHit = -count = >hitRatio = 0.2 testingFile = A8.php beginEndLoopStr:[] beginEndLoopIdx:[] Hình 4.3 Kết phát lỗi cho thực nghiệm (1) 38 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ASSIGN(=) IF END ELSE END F_ACCESS(null, ) F_ACCESS(null, ) IF END F_ACCESS(null, ) F_ACCESS(null, ) 10 END No error Warning level 1! at : No error numHit = -count = >hitRatio = 0.2 testingFile = A8.php beginEndLoopStr:[] beginEndLoopIdx:[] Hình 4.4 Kết phát lỗi cho thực nghiệm (2) Thông qua hai thực nghiệm phát lỗi đơn giản trên, ta thấy chương trình mơ đưa gợi ý xác phù hợp với ngữ cảnh phạm vi xét với hai tệp chương trình giống cú pháp khác tên khai báo biến đưa thông báo khả lỗi Hai thực nghiệm in phát lỗi hình dịng thứ 22 màu cam, nhằm đưa nhìn trực quan phát lỗi 39 4.2.4 So sánh với hai IDE dùng rộng rãi cho PHP Netbean IDE có cảnh báo gạch chân dịng cảnh báo hình bên Hình 4.5 Cảnh báo Netbean IDE Với đoạn mã Netbean không đưa cảnh báo Hình 4.6 Kết Netbean IDE khơng phát lỗi Trong nguy lỗi với biến $listData xảy biến chưa đuợc khởi gán giá trị khác null gọi sử dụng để tạo view mơ hình MVC Yii1 Với Phpstorm không đưa cảnh báo liên quan đến lỗi này: Hình 4.7 Kết cảnh báo Phpstorm IDE Như có cảnh báo lỗi biến $listData highlight ngữ cảnh khơng có cảnh báo xuất 40 Cịn với chương trình sử dụng huấn luyện phát lỗi SLAMC Hình 4.8 Kết chương trình chạy thử Eclipse IDE Đây chụp hình cửa sổ console chạy chương trình chương trình đưa cảnh báo tên file WeakPointTypeController.php thể Hình 4.9 Kết so sánh chạy chương trình với dự án mã nguồn PHP khác Mã nguồn Số tệp Số hàm Thời gian (s) Tỉ lệ lỗi Project in Yii1 507 1257 14,675 0,3631 Project in Yii2 474 373 9,741 0,3830 Project in Symfony 2.x 2530 15106 603,641 0,2230 Nhận xét sơ bộ: ◦ Với tập mã nguồn tương đương số lượng có lượng hàm tăng thời gian huấn luyện tăng tỉ lệ cảnh báo lỗi xấp xỉ không khác biệt nhiều ◦ Với codebase lớn hẳn ví dụ tăng gấp lần số tệp lượng hàm tăng 10 lần thời gian huấn luyện tăng lên 40 lần tỉ lệ cảnh báo lỗi lại giảm xuống ◦ Trong codebases huấn luyện project viết symfony lớn 41 project viết tốt Hai project lại luận văn nhóm lập trình viết Việt Nam Vậy kết luận với so sánh là:  Chất lượng codebase đóng vai trị quan trọng việc huấn luyện cho thuật tốn  Thuật tốn huấn luyện lúc với nhiều codebase kiểm tra độ tương thích mã nguồn viết phiên khác framework 42 5CHƯƠNG KẾT LUẬN Mơ hình n-gram từ vựng quy tắc mẫu mã lặp lại tốt cho phát lỗi, nhiên n-gram từ vựng cung cấp ngữ cảnh cục không ghi lại quy tắc mức trừu tượng cao ngữ nghĩa hay vai trị từ tố Trong ngữ nghĩa, vai trị từ tố ngữ cảnh tồn cục hữu ích để dự đốn Với lý nêu SLAMC kết hợp n-gram ngữ nghĩa, quy tắc mức trừu tượng, ngữ cảnh toàn cục cặp giá trị từ tố để đưa dự đốn có độ xác tốt đáng kể so với mơ hình n-gram từ vựng áp dụng cho dự án NET Java Tìm hiểu chứng minh SLAMC có độ xác phát lỗi tốt ngram từ vựng áp dụng cho dự án viết ngôn ngữ khác (PHP, python, ruby rail, C++ C) thật vấn đề nên quan tâm Chính vậy, luận văn lựa chọn ngôn ngữ cụ thể PHP để thực so sánh xây dựng chương trình mơ việc phát lỗi Các kết đạt hướng phát triển tương lai trình bày chi tiết mục 5.1 Kết đạt Việc áp dụng SLAMC phát lỗi cho ngôn ngữ PHP bước đầu thu tín hiệu lạc quan Chương trình mơ cài đặt với mơ đun chuyển đổi mã nguồn sang cú pháp trừu tượng, duyệt cú pháp trừu tượng, huấn luyện phát lỗi Luận văn xây dựng bảng nguyên tắc xây dựng [6] nhằm biểu diễn [6] từ tố tệp mã nguồn PHP (mục 3.1.1) Bên cạnh đó, luận văn định nghĩa lại việc lưu trữ phạm vi từ tố Một từ tố thuộc vào khối định khối có mối quan hệ cha (mục 3.1.2) Một chương trình mơ phát lỗi áp dụng SLAMC cho ngôn ngữ PHP hồn thành Chương trình đưa nhắc nhở dịng có khả lỗi tùy thuộc vào việc phân hoạch mức độ dự báo cho phù hợp với dự án thực tế Cuối cùng, việc so sánh độ xác phát lỗi ngôn ngữ PHP áp dụng SLAMC n-gram từ vựng hoàn tất Hiện chương trình sử dụng việc gợi ý mã phát lỗi PHP khơng hỗ trợ hồn chỉnh cho tất framework PHP đại dùng rộng rãi Mỗi framework làm việc với IDE cụ thể cần phải cài đặt plugin riêng chí khơng có plugin hỗ trợ Việc sử dụng thuật toán SLAMC để phát mã lỗi gợi ý huấn luyện với framework đại mở hội sử dụng chung plugin cho gợi ý mã PHP chạy với tất Chúng cung cấp công cụ tương lai để so sánh kiểm tra chéo tương đồng framework 43 5.2 Hướng phát triển tương lai Các kết thu SLAMC có khả phát lỗi với độ tuơng đối khả quan cho ngơn ngữ PHP Bên cạnh đó, vấn đề nâng cấp khả phát lỗi phụ thuộc nhiều vào codebase Nếu huấn luyện codebase không xuất mẫu mã xét phát lỗi chương trình khơng đưa gợi ý xuất lỗi Khi huấn luyện codebase khác kiểm tra chéo có gợi ý hữu dụng cho việc thống phần lớn framework dùng cho PHP Do vậy, tương lai hướng phát triển mong muốn luận văn thực kiểm thử đa dạng phát lỗi, lưu lại trường hợp chương trình khơng đưa danh sách phát lỗi, chỉnh sửa chương trình cho hoạt động hiệu quả, xác 44 TÀI LIỆU THAM KHẢO [1] http://php.net/docs.php [2] https://github.com/Tocea/pdt-standalone-parser [3] http://yiiframework.com/download/ [4] https://symfony.com/download [5] http://laravel.com/docs/5.1 [6] Hanna M Wallach (2006), “Topic modeling: beyond bag-of-words”, In Proceedings of the 23rd international conference on Machine learning, ICML '06, pp.977-984 [7] Tung Thanh Nguyen, Anh Tuan Nguyen, Hoan Anh Nguyen, Tien N Nguyen (2013), “A Statistical Semantic Language Model for Source Code”, In FSE, pp.532–542 [8] S Boyd, C Cortes, M Mohri, and A Radovanovic (2012), “Accuracy at the Top”, In NIPS ... để á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. .. 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, 15:01

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

Tài liệu liên quan