2012-03-06 36 views
5

Tôi đang làm việc trên một dự án bao gồm cả hai dự án .NET code và android java. Chúng tôi đang cố gắng để có được cả hai loại dự án làm việc trong một môi trường TeamCity.Xây dựng các dự án Android với TeamCity - kiểm tra và các vấn đề về bảo hiểm mã

Dự án .NET đang được thử nghiệm thông qua một số dự án NUnit và chúng tôi sử dụng DotCover để tạo báo cáo vùng phủ sóng và tất cả dường như đều sưng lên. Bây giờ, các dự án android/java đang được xây dựng bằng cách sử dụng ant runners, và chúng tôi đã có một số build-scripts cho cả việc sản xuất và cho các dự án thử nghiệm, và vấn đề là, tạo ra các báo cáo bảo hiểm java.

Chúng tôi đã tạo một bước xây dựng với mục tiêu kiến ​​sau:

clean emma debug install test 

Các bước xây dựng được thiết lập để có "Emma bảo hiểm Á hậu" kích hoạt (với tùy chọn "Include file nguồn trong các dữ liệu bảo hiểm" đã kiểm tra).

Xảy ra lỗi khi chạy bước xây dựng, nêu rõ đoạn mã sau trong đoạn nhật ký (đính kèm tệp nhật ký đầy đủ). Một vấn đề quan trọng khác là thử nghiệm đơn vị android/java không xuất hiện trong thống kê tổng thể của bản dựng.

Đây là snippit log:

[16:37:52]: [aapt] Generating resource IDs... 
[16:37:55]: [subant] -pre-compile 
[16:37:55]: [subant] -compile (1s) 
[16:37:55]: [-compile] do-only-if-manifest-hasCode (1s) 
[16:37:55]: [do-only-if-manifest-hasCode] sequential (1s) 
[16:37:55]: [sequential] if (1s) 
[16:37:55]: [if] Adding debug=true parameter to javac task 
[16:37:55]: [if] javac 
[16:37:55]: [if] Compiling 1 source file to C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes 
[16:37:55]: [if] EMMA: Instrumenting classes 
[16:37:55]: [EMMA: Instrumenting classes] EMMA commandline: [-ix, -*Test*, -cp, C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes, -m, overwrite] 
[16:37:55]: [EMMA: Instrumenting classes] EMMA: processing instrumentation path ... 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: instrumentation path processed in 265 ms 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: [167 class(es) instrumented, 0 resource(s) copied] 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: metadata merged into [C:\BuildAgent\work\c588ac2d935670cb\coverage.em] {in 15 ms} 
[16:37:56]: [if] if 
[16:37:56]: [if] echo 
[16:37:56]: [echo] Instrumenting classes from C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin/classes... 
[16:37:56]: [if] emma 
[16:37:56]: [emma] com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [do-only-if-manifest-hasCode] The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:655: com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [subant] The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:602: The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:655: com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [Step 1/18] EMMA: Create Report (4s) 
[16:38:00]: [EMMA: Create Report] Unable to find C:\BuildAgent\work\c588ac2d935670cb\coverage.ec, cannot create EMMA report 
[16:38:00]: [Step 1/18] Process exited with code 1 
[16:38:00]: [Step 1/18] Ant output: 
[16:38:00]: [Step 1/18] at java.lang.reflect.Method.invoke(Method.java:601) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Task.perform(Task.java:348) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
[16:38:00]: [Step 1/18] at com.android.ant.IfElseTask.execute(IfElseTask.java:120) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
[16:38:00]: [Step 1/18] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
[16:38:00]: [Step 1/18] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
[16:38:00]: [Step 1/18] at java.lang.reflect.Method.invoke(Method.java:601) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Task.perform(Task.java:348) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Target.execute(Target.java:390) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Target.performTasks(Target.java:411) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Main.runBuild(Main.java:809) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Main.startAnt(Main.java:217) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
[16:38:00]: [Step 1/18] Caused by: java.io.IOException: cannot merge new data into [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: created by another EMMA version [0.0.0] 
[16:38:00]: [Step 1/18] at com.vladium.emma.data.DataFactory.persist(DataFactory.java:593) 
[16:38:00]: [Step 1/18] at com.vladium.emma.data.DataFactory.persist(DataFactory.java:71) 
[16:38:00]: [Step 1/18] at com.vladium.emma.instr.InstrProcessorST._run(InstrProcessorST.java:753) 
[16:38:00]: [Step 1/18] ... 71 more 
[16:38:00]: [Step 1/18] Total time: 6 seconds 
[16:38:00]: [Step 1/18] Publishing artifacts 
[16:38:00]: [Publishing artifacts] Paths to publish: [C:\BuildAgent\work\c588ac2d935670cb\coverage.ec, C:\BuildAgent\work\c588ac2d935670cb\coverage.em, C:\BuildAgent\work\c588ac2d935670cb\coverage.txt, C:\BuildAgent\work\c588ac2d935670cb\coverage\coverage.zip] 
[16:38:00]: [Publishing artifacts] Artifacts path coverage.ec not found 
[16:38:00]: [Publishing artifacts] Artifacts path coverage.txt not found 
[16:38:00]: [Publishing artifacts] Artifacts path coverage/coverage.zip not found 
[16:38:00]: [Publishing artifacts] Sending files 
[16:38:00]: [Step 1/18] Failed to extract Emma coverage statistics from the coverage.txt, due to error: java.io.FileNotFoundException: C:\BuildAgent\work\c588ac2d935670cb\coverage.txt (The system cannot find the file specified) 
[16:38:00]: [Step 1/18] Step Test Smart Client - Unit tests (Ant) failed 

Có ai có một ý tưởng những gì các vấn đề có thể được?

Nhân tiện, khi tôi chạy các mục tiêu trực tiếp từ dòng lệnh, các báo cáo được tạo mà không gặp bất kỳ sự cố nào.

Kính trọng, mỗi

Trả lời

6

Phiên bản EMMA được sử dụng bởi Android SDK là già so với cái được sử dụng bởi các plugin Sonar EMMA.

Có vẻ như cách mã vùng phủ sóng được mã hóa thay đổi giữa các phiên bản, đó là lý do tại sao Sonar không thể nhận ra định dạng.

May mắn thay, ai đó đã đưa ra một bộ chuyển mã. Vấn đề được mô tả chi tiết hơn tại đây: http://jira.codehaus.org/browse/SONARPLUGINS-1356

Mã java cho bộ chuyển mã nói trên cũng có thể được tải xuống từ đó.

Bạn chỉ cần chuyển mã tất cả các tệp .em và .ec trước khi chạy Sonar trên chúng và nó sẽ đọc chúng tốt - đã thử và kiểm tra.

+0

Bạn đã thật tuyệt vời hôm nay! – Argyle

+2

Thật khó để hiểu được điều đó, tôi không muốn bất kỳ ai khác chia sẻ số phận của tôi :) – Rosomack

+0

Thật tuyệt vời, điều này rất hữu ích và hoạt động hoàn hảo: Tôi sao chép EmmaTranscoder.class vào cùng thư mục với các tệp tin bảo hiểm và thực thi 'java -cp. Vùng phủ sóng của EmmaTranscoder. [Ec | em] ' – friederbluemle

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