DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT
2.2. Kỹ thuật phân tích và tái cấu trúc mã nguồn để nâng cao hiệu năng của ứng dụng d
2.2.1. PMD và Android lint
PMD [47] là cơng cụ phân tích mã nguồn. PMD tìm những lỗ hổng của chương trình phổ biến về khai báo biến, khối “try catch” rỗng, tạo ra đối tượng khơng cần thiết. Nó hỗ trợ chủ yếu Java và một số ngôn ngữ như JavaScript, XML, XSL. PMD xây dụng một tập các qui tắc (sau đây gọi là luật -rule) và dựa vào tập luật này để đưa ra các kết quả tối ưu. Tập các luật này có thể được thay đổi (thêm sửa xóa) tùy thuộc vào mục đích và kinh nghiệm của lập trình viên. Các luật được sử dụng ở đây:
PMD quét mã nguồn Java và tìm kiếm các vấn đề tiềm năng như: - Possible bugs: rỗng các khối try/catch/finally/switch.
- Mã chết: các biến cục bộ, các tham số và các phương thức private không được sử dụng.
- Mã nguồn chưa được tối ưu: Sử dụng lãng phí String/StringBuffer
- Biểu thức quá phức tạp: các lệnh khơng cần thiết, vịng lặp for có thể thay bằng vịng lặp while.
- Sao chép mã: sao chép (copy/paste) mã nguồn tức là sao chép lỗi.
PMD không sử dụng mã nguồn trực tiếp mà sử dụng một phân tích cú pháp JavaCC tạo ra để phân tích mã nguồn và tạo ra cây AST. PMD tích hợp với rất nhiều các IDE khác nhau: JDeveloper, Eclipse, JEdit, JBuilder, BlueJ, CodeGuide, NetBeans/Sun Java Studio Enterprise/Creator, IntelliJ IDEA, TextPad, Maven, Ant, Gel, JCreator, và Emacs.
Android lint là một công cụ phân tích mã tĩnh kiểm tra các tệp nguồn dự án Android để tìm các lỗi tiềm ẩn và tối ưu hóa cho tính chính xác, bảo mật, hiệu suất, khả năng sử dụng, khả năng truy cập và quốc tế hóa. Android lint được xây dựng tích hợp với các IDE như Eclipse, IntelliJ… Mỗi vấn đề được phát hiện bởi công cụ được báo cáo với một thông báo mô tả và mức độ nghiêm trọng để người lập trình có thể nhanh chóng ưu tiên các cải tiến quan trọng cần được thực hiện. Ngồi ra, kỹ sư lập trình có thể hạ thấp mức độ nghiêm trọng của một vấn đề để bỏ qua các vấn đề không liên quan đến dự án hoặc nâng mức độ nghiêm trọng để làm nổi bật các vấn đề cụ thể. Các lỗi mà Android lint phát hiện gồm: thiếu bản dịch và bản dịch không sử dụng, vấn đề Layout của ứng dụng, tài ngun khơng được sử dụng, kích thước mảng khơng phù hợp (khi mảng được định nghĩa đa chiều), vấn đề biểu tượng ( như thiếu mật độ, biểu tượng trùng lặp, kích thước sai), lỗi Manifest.
API Android Lint cho phép người dùng tạo các luật tùy chỉnh. Ví dụ: nếu là tác giả của dự án thư viện và dự án thư viện có một số yêu cầu sử dụng nhất định, bạn có thể viết các luật bổ sung để kiểm tra xem thư viện có được sử dụng đúng khơng, và sau đó có thể phân phối các luật bổ sung đó cho người dùng thư viện.