Code coverage is always shown as zero percent using Eclemma plugin - junit

I am using EclEmma plugin for getting the code coverage for a package.
But it always shows 0% as the coverage.
Is there anything which I am missing out as part of configuration
Please help.

Related

Google Services Gradle Plugin not generating resources from json

Problem started suddenly and seems to be not related to any change that happened in code around its first occurance.
We have automated CI workflow that prepares RC.
At first every second build worked. Now I had to rebuild RC 7 times to get app that is not crashing.
After investigating it is clear that there are no config values in resources, ergo plugin is not generating values from json config file. Basically rebuilding same code many times makes it work, at some point.
We had recently changed dependency injection in app from dagger components to hilt, it might be the reason of some kind of race or shared resources during build time.
It is also problematic to work around. I've prepared resource files with all values in order to manually add them in build process instead of generating with plugin. Now, because we also use crashlytics, I cannot remove google services plugin as crashlytics is checking for google services tasks in gradle. I cannot remove unused json file as plugin will crash because of lack of config file. Plugin also (based on docs https://developers.google.com/android/guides/google-services-plugin) adds some dependencies to main module, but I wasn't able to find anything in :app:dependencies so maybe docs are outdated.
I am not able to provide any project for reproduction as it only happens in commercial project. I understand it makes the problem hard to resolve in such case but maybe other people has it also.
AGP: 7.2.0-beta02
Google Services plugin: 4.3.10
Hilt: 2.41
EDIT:
I've resolved symptoms by creating gradle module for each build type we have, and each module contains only res/values.xml which I've copied from app/build/generated/res/google-services/*. This way required keys are always available in resources, as we do not often (hardly ever) change json file with config. I am still trying to investigate builds with --scan option but I cannot reproduce it with scan, it only happens without it.

Cmd execution for unit test report and code coverage report

We have junit based tests (maven project) and using EclEmma for code coverage. Able to get jUnit execution report and code coverage report from Eclipse. But I want to exectue unit tests from commandline and would like to get unit tests report and code coverage report. Code coverage report should show uncovered lines as well.
I was going through website (http://www.eclemma.org) and unable to find expected info.
Is there any commands available with or W/O tools?
EclEmma is based on JaCoCo. Among other integrations there are Maven plugin and Ant tasks for it. As you can see - all JaCoCo documentation can be found on the site of EclEmma that you mentioned.

Dart2JS compiler exception when minify is used on google_maps package

I have been building a web application with Dart and AngularDart upon Google Maps. I noticed a problem since the begin of the process even though I tested the development Dart sdk, and today the latest dart sdk (version 1.0.0.10_R30798) and still face the problem.
Firstly the packages I am using are shadow_dom, google_maps and AngularDart.
When I build my application WITH --no-minify option it works great, even in all the browsers after fiddling around with shadow_dom for a week (I should add the shadow_dom script BEFORE everything else to work properly).
The problem is that when I build normally (minify) or even directly using Dart2JS compiler with the --minify option the application does not run and I get an exception.
Above you can see the two cases, where in the first the application loads the google maps correctly and in the second picture the google maps are not loaded and I get that exception.
More importantly is that if I use a 3rd party minifier to minify the original main.dart.js file (the unminified) it works perfectly fine.
Thank you
The 2.x version of google_maps package has removed the dependency on dart:mirrors and is only based on dart:js. So the minification problem should come from another part of your code.
Moreover I just tested the map-simple example with --minify and it works.
Usually this can be solved with the #MirrorsUsed annotation if it's 3rd-party code that is affected.
It's easier with your own code where you just have to add #reflectable to the affected functions/methods/fields to ensure they are retained.
It may be hard to find what functions/methods/fields should be included when the names are minified.
Maybe you can gain some knowledge by looking at the stack trace.
Minification usually drops code that is not referenced anywhere.
In Polymer this is because polymer expressions {{ expr }} in HTML are not yet considered.
If you invoke parts of the code only by reflection this is also not recognized.
I have no experience with regard to Angular and minification.
This is just generic advice about problems with minification through pub build.

Used Code Plugin in Eclipse

I tried to analyze a swing application. It's an old project and it has been growing over years, so it's very hard to read the code. Now we should redesign the application.
Now I'm looking for an Eclipse plugin which could me support to understand this application. Here what kind of plugin I'm looking for:
start application from Eclipse in debug mode
I run in the application to a point
I start the record in Eclipse plugin
I run some kind of business logic in the application
I stop the record
the tool shows me, which code is used or not during the record
Does someone know if this kind of plugin exists?
Cheers
Julia
Not a specific plugin, but you can get something what you want by smartly placing breakpoints:
For example to find where the action listener code is for a button, set a break point in the ActionEvent constructor just before you press the button. Then you can step forward until you get to the listener.
You could also use VisualVM (or other profiler) to do CPU sampling while you take your action and then look in which code the CPU time was spent (in the EDT for the Swing GUI specifically).
It sounds like a coverage tool that can be switched on and off at runtime. I don't think this is possible with Emma or Cobertura; best guess is to use these for unit tests (or small test applications that only use partial functionality) and hide any unused types to get partial views. But that may not work well when you want to understand GUI actions and responses.
Even if it is not exactly part of your question I would recommend to have a look into the X-Ray plugin which helped me a lot with a legacy application.
Oh, and Eclipsecolorer Profiler helped... but the project is not active any more.

No Coverage in EclEmma

I have a list of JUnit files and I want to measure code coverage using
EClEmma.
So I installed the plugin to Eclipse IDE.
The Coverage button is present in my IDE.
To measure coverage I just selected the JUnit file and pressed the Coverage button.
It launches the tests successfully.
But it shows an error called 'initializationError' and some poor coverage percentage (.2), possibly missed many of the coverage and it shows many of the code as not covered.
I don't know how to rectify this problem.
How to run coverage using EclEmma ?
Also I added the files for instrumentation and tried but it doesn't work.