2015-09-17 13 views
58

Ngày xửa ngày xưa, đặc biệt là trong vùng đất Eclipse, Lint sẽ chạy trên mọi công trình xây dựng, và vì vậy nếu bạn thất bại trong việc kiểm tra Lint, bạn sẽ tìm ra ngay lập tức. Với Android Studio (được thử nghiệm trên 1.3), Lint không chạy theo mặc định trên bản dựng. Những người mới đến có thể phạm sai lầm mà Lint sẽ kiểm tra, nhưng vì Lint không thực sự chạy, những người mới đến không tìm hiểu về họ.Làm cách nào để chúng tôi định cấu hình Android Studio để chạy Lint của nó trên mọi công trình?

(IOW, nếu xét nghiệm Lint không chạy trong một khu rừng, có thực sự là một thử nghiệm Lint?)

Bình luận về this blog post thấy làm thế nào để kinda sorta được Lint để chạy như một phần của một xây dựng:

  • chỉnh sửa cấu hình dự án
  • trong tab General của cấu hình, di chuyển xuống và mở nắp gập "Trước khi ra mắt" bảng
  • trong bảng đó, thêm một bước để "Run Gradle Task" tên lint cho bạn modul e

Tuy nhiên, điều này chạy dòng lệnh Lint, dẫn đến báo cáo được viết bằng XML và HTML vào ổ cứng của bạn. Điều đó có hiệu quả, nhưng sẽ sạch hơn nếu Android Studio chạy kiểm tra Lint trong IDE của nó, do đó kết quả sẽ hiển thị trong bảng IDE.

Có cách nào để thiết lập bản dựng dự án để thực hiện kiểm tra Lint trong IDE không?

Điểm thưởng nếu nó có thể được thiết lập thành chỉ chạy Lint chứ không phải phân tích đầy đủ được thực hiện bằng cách phân tích> Kiểm tra mã. Mặc dù phân tích đầy đủ đôi khi hữu ích, nhưng Lint vẫn đủ chậm như vậy, hãy để một mình phân tích khác đáng ngờ hữu ích được thực hiện bởi Android Studio (ví dụ: kiểm tra chính tả).

Trong khi thiết lập này sẽ không phải là một kế hoạch tuyệt vời cho tất cả các dự án (Lint quét chậm), cho người mới đến Android, nó có thể là một động thái thích hợp.

+1

Bạn đã thấy câu trả lời này? http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

+0

@MattWhetton: Tôi không thể làm điều đó để làm bất cứ điều gì hữu ích. Nó gợi nhớ đến bài đăng trên blog mà tôi trích dẫn, trong đó bài đăng trên blog sử dụng tác vụ "Chạy Gradle" thay vì "Làm sáng suốt nhận thức". Với "Chạy nhiệm vụ Gradle", ít nhất tôi cũng nhận được báo cáo Lint được ghi vào đĩa. Với "làm cho Gradle", tôi thậm chí không nhận được điều đó. Không cung cấp sự biểu diễn trực quan IDE trong các thông điệp Lint. Cảm ơn, mặc dù! – CommonsWare

+0

Thật kỳ lạ khi xây dựng Jenkins của chúng tôi không thành công nếu tôi không bật Lint, điều này có nghĩa là nó đang chạy với một cấu trúc jenkins ?. – Smashing

Trả lời

11

Lint nên chạy trong Android Studio trừ khi bạn đã cấu hình nó để được tắt thông qua lintOptions trong build.gradle tập tin của bạn.

Dưới đây là từ các tài liệu tìm thấy tại http://developer.android.com/tools/debugging/improving-w-lint.html#studio

Trong Android Studio, các lint cấu hình và kiểm tra IDE chạy tự động bất cứ khi nào bạn xây dựng ứng dụng của bạn. Việc kiểm tra IDE là được định cấu hình cùng với các kiểm tra lint để chạy kiểm tra mã IntelliJ để hợp lý hóa việc xem xét mã.

Lưu ý: Để xem và sửa đổi mức độ kiểm tra mức độ nghiêm trọng, sử dụng File> Cài đặt> Cài đặt Project menu để mở trang cấu hình kiểm tra với một danh sách các cuộc thanh tra được hỗ trợ.

Với Android Studio, bạn cũng có thể chạy kiểm tra lint cho một biến thể xây dựng cụ thể hoặc cho tất cả các biến thể xây dựng từ tệp build.gradle. Thêm thuộc tính lintOptions vào cài đặt android trong tệp tin xây dựng .Đoạn mã này từ tệp xây dựng Gradle cho biết cách đặt tùy chọn yên tĩnh thành true và tùy chọn abortOnError thành false.

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

Để tự chạy kiểm tra trong Android Studio, từ các ứng dụng hoặc menu chuột phải, chọn Analyze> Kiểm tra Mã. Hộp thoại Specify Inspections Scope xuất hiện để bạn có thể chỉ định phạm vi và hồ sơ kiểm tra mong muốn.

Dưới đây là tùy chọn lint khác mà bạn có thể thêm vào lintOptions bạn khối trong tập tin build.gradle gradle của bạn: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support

Dưới đây là thêm thông tin về android lint: http://developer.android.com/tools/help/lint.html

Nó sử dụng để được rằng bạn có thể thêm nhiệm vụ gradle sau khi hành động nhất định trong studio android.

  • Mở tab Gradle ở phía bên phải của màn hình
  • Chọn nhiệm vụ của bạn

Android Studio Gradle Tab

  • Nhấp chuột phải vào các nhiệm vụ
  • Chọn hành động thực hiện của bạn

Android Studio Execution Action

Thao tác này sẽ chạy nhiệm vụ khi được lên kế hoạch thực thi.

+6

"Lint sẽ chạy trong Android Studio trừ khi bạn đã định cấu hình nó để tắt thông qua lintOptions trong tệp build.gradle của bạn" - AFAICT, điều này không đúng trong nhiều tháng, đó là lý do tại sao tôi đăng câu hỏi ngay từ đầu . – CommonsWare

+0

@CommonsWare là đúng. Điều này đã không đúng trong tháng. Tôi đã có một lỗi lint đã phá vỡ xây dựng và đã phải bỏ qua lỗi cụ thể cho đến khi tôi nhận nó được sắp xếp. Sau một thời gian, tôi đã xóa bỏ dòng bỏ qua khỏi build.gradle mà không sửa lỗi và nó vừa mới bắt đầu xây dựng. Có vẻ như tại một số phiên bản của Android Gradle Plugin họ đã loại bỏ sự phụ thuộc vào công việc lint. –

+0

Tôi có thể thêm sự phụ thuộc giữa lắp ráp và lint để chạy lint khi khởi chạy từ Android Studio. Nhìn vào câu trả lời của tôi cho câu hỏi này: http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

6

Tạo hồ sơ thanh tra cho Android Lint

  1. Go to File -> Settings -> Editor/Kiểm tra
  2. Chọn Manage -> Sao chép
  3. Give it tên "Lint Hồ sơ Android" và nhấn Nhập
  4. Để lại đánh dấu chỉ quy tắc Lint Android trên tab này

Android Lint Profile

Bây giờ, bạn chỉ có thể chạy kiểm tra với các quy tắc Lint của Android thông qua Analyze-> Inspect Code ... bằng cách chọn "Android Lint Profile".

Trong bước tiếp theo, hãy ghi lại Macro (Chỉnh sửa-> Macro-> Bắt đầu ghi macro) bằng các bước tiếp theo.

  1. Phân tích-> Kiểm tra mã ...
  2. Chọn "Android Lint Profile"
  3. Nhấn Enter (nó là quan trọng sử dụng bàn phím vì ghi Macro không bắt cú click chuột trên cửa sổ này)
  4. Bấm vào "Chạy cấu hình được chọn" nút (màu xanh lá cây chơi)

Dừng ghi macro và đặt tên là "Lint and Run".

Điều cuối cùng cần thực hiện là ánh xạ "Shift + F10" tới macro của chúng tôi. Vào File-> Settings ...-> Keymap. Tìm lối tắt macro và thay đổi của chúng tôi.

macro keymapping

Bây giờ lint sẽ được chạy trước mỗi xây dựng khi bạn nhấn Shift + F10 và kết quả sẽ được trong Android Studio bảng.

Nhưng giải pháp này có một hạn chế lớn. Nếu bạn chạy xây dựng của bạn bằng cách nhấp vào nút Run lint phân tích sẽ không được thực thi.

Có thể thông tin này sẽ hữu ích và ai đó sẽ cung cấp giải pháp tốt hơn khi sử dụng.

1

Một giải pháp có thể (nhưng khó thực hiện) là viết một plugin IDEA để thực hiện việc này. Bạn có thể tránh điều này bằng cách tải xuống plugin dưới đây từ kho lưu trữ hoặc mã từ github. Đoạn mã sau sẽ thực thi các hành động 'biên dịch' và 'kiểm tra mã', theo tuần tự.

public class BuildAndLint extends AnAction { 
    public void actionPerformed(AnActionEvent e) { 
     String[] actions = {"CompileProject", "InspectCode"}; 
     for(String action: actions) { 
      AnAction anAction = ActionManager.getInstance().getAction(action); 

      DataContext context = e.getDataContext(); 
      AnActionEvent anActionEvent = new AnActionEvent(null, context, "", anAction.getTemplatePresentation(), ActionManager.getInstance(), 0); 

      anAction.actionPerformed(anActionEvent); 
     } 
    } 
} 

Mã đã được thử nghiệm và hoạt động trong Android Studio 1.3. Nó sẽ mở ra một cửa sổ để chọn những gì để kiểm tra, thay vì làm toàn bộ điều.

Liên kết

Source code on github

Built and Lint Jar

+3

Cool, cảm ơn!Nhưng, er, "SGITW"? Một cái gì đó tốt trên thế giới? Sriracha Tuyệt vời trong mùa đông? Một nơi nào đó Goes (một) Ngà voi Tusked? :-) – CommonsWare

+0

[Súng chậm nhất ở phía tây] (http://meta.stackexchange.com/a/22368) –

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