2016-11-28 18 views
9

Tôi đang chuyển từ Eclipse sang Android Studio và tôi thấy rằng tôi vẫn còn nhầm lẫn về các thành phần khác nhau của Android Studio về phát hiện lỗi. Tôi có một dự án với khoảng 20 tệp Java và 30 tệp XML. Gần đây tôi đã chạy một sạch và xây dựng và cóLỗi nào được phát hiện trong "bản dựng" trong Android Studio - vai trò của Gradle

Gradle xây dựng hoàn chỉnh với 5 lỗi (s) trong 13s 397 ms

Hai file XML được chỉ định và trong cả hai trong số họ đã có khoảng trắng ở phía trước phần tử đầu tiên với một lỗi nói ...

khai Xml nên đặt trước tất cả nội dung tài liệu

Vì vậy, tôi sửa chữa ed những người và chạy xây dựng một lần nữa không có lỗi.

sau đó tôi chạy Lint và tìm thấy nhiều 8 file XML với các lỗi (NB, sai sót, không cảnh báo) nói "tử selector không đòi hỏi thuộc tính: layout_height". Lỗi này rõ ràng là do các tệp này nằm trong một thư mục bố trí thay vì một thư mục có thể kéo được, mặc dù tại sao không gây ra các vấn đề trong Eclipse là không rõ ràng.

Câu hỏi của tôi:

  1. Tại sao Gradle chỉ Xây dựng phát hiện một số lỗi, nhưng khác có được tìm thấy qua lint?
  2. Danh mục lỗi nào sẽ được tìm thấy thông qua Gradle Build?
  3. Làm cách nào để thêm nội dung nào đó vào kịch bản Gradle Build để tìm tất cả các lỗi?

Edit: thực sự điều này cũng đúng cho các tập tin Java thông thường - Tôi sẽ nhận được "0 lỗi" trong Gradle xây dựng và sau đó tôi sẽ bước vào một tập tin nguồn trong debugger và xem 4 lỗi từ Lint.

+0

Tắt đầu của tôi, 'xây dựng gradle' sẽ biên dịch ứng dụng và như vậy sẽ chỉ hiển thị lỗi cho những thứ ngăn chặn việc biên dịch. Lint, mặt khác, sẽ cho bạn thấy những gì bạn nên làm, ví dụ: một quy ước hay một thực hành tốt nhất. Lỗi 'lint' sẽ không ngăn cản việc biên dịch ứng dụng. Xem thêm: [Cải thiện mã của bạn bằng Lint] (https://developer.android.com/studio/write/lint.html). – Whymarrh

Trả lời

10

Tại sao Gradle Build chỉ phát hiện một số lỗi, nhưng khác phải là được tìm thấy qua lint?

Lỗi Lint không biên dịch lỗi, nhưng các vấn đề về mã và theo mặc định AndroidStudio sẽ không kiểm tra các lỗi đó. (Tương tự với tiêu chuẩn javac).

Danh mục lỗi nào sẽ được tìm thấy thông qua Gradle Build?

Gradle sẽ phát hiện tất cả các biên dịch lỗi thời gian, chế biến chú thích, lỗi đóng gói, dex, ký kết, xml incorectly xác định, không đúng cách đặt tên tệp vv

Làm thế nào cứng là nó để thêm một cái gì đó cho Gradle Xây dựng kịch bản để tìm tất cả các lỗi?

Đáng ngạc nhiên là dễ dàng trong thực tế, source

Để kích hoạt kiểm tra lint khi biên soạn thêm vào mức độ ứng dụng của bạn build.gradle

android { 
    lintOptions { 
     // set to true to turn off analysis progress reporting by lint 
     quiet false 
     // if true, stop the gradle build if errors are found 
     abortOnError true 
     // if true, only report errors 
     ignoreWarnings false 
     } 
    ... 
} 

Nếu điều này sẽ không làm việc cho U, thêm lint sau mỗi lần thực hiện , để thực hiện việc này, bạn có thể thực hiện theo điều này answer

Tôi sẽ thêm rằng cấu hình này sẽ phát hiện tất cả các kiểm tra đã bật có cảnh báo và lỗi nghiêm trọng theo:

File > Other Settings > Default Settings > Editor > Inspections 

Android Studio sẽ chạy kiểm tra mã trực tiếp để tất cả cảnh báo/lỗi được hiển thị bằng mã màu đỏ và cảnh báo bằng cách đánh dấu đoạn mã với nền màu vàng. Ngay cả khi các lỗi lint được đánh dấu giống như lỗi thời gian biên dịch, chúng sẽ không dừng xây dựng theo mặc định.

Các vấn đề liên quan