Skip to content

Commit e1eb592

Browse files
authored
Coverage fix (#94)
* Reformatting DotNetCoverageViewExtension. * Refactoring DotNetCoverageViewExtension. * Fixing DotNetCoverageViewExtension.
1 parent e704694 commit e1eb592

1 file changed

Lines changed: 139 additions & 158 deletions

File tree

dotnet-execution-impl/src/main/java/consulo/dotnet/run/impl/coverage/DotNetCoverageViewExtension.java

Lines changed: 139 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
1716
package consulo.dotnet.run.impl.coverage;
1817

1918
import com.intellij.rt.coverage.data.ClassData;
2019
import com.intellij.rt.coverage.data.LineData;
21-
import consulo.application.ApplicationManager;
20+
import consulo.annotation.access.RequiredReadAction;
2221
import consulo.dotnet.psi.DotNetNamedElement;
2322
import consulo.dotnet.psi.DotNetTypeDeclaration;
2423
import consulo.dotnet.psi.resolve.DotNetNamespaceAsElement;
2524
import consulo.dotnet.psi.resolve.DotNetPsiSearcher;
2625
import consulo.execution.coverage.CoverageSuitesBundle;
2726
import consulo.execution.coverage.CoverageViewManager;
27+
import consulo.execution.coverage.localize.ExecutionCoverageLocalize;
2828
import consulo.execution.coverage.view.CoverageListRootNode;
2929
import consulo.execution.coverage.view.CoverageViewExtension;
3030
import consulo.execution.coverage.view.ElementColumnInfo;
@@ -35,169 +35,150 @@
3535
import consulo.project.Project;
3636
import consulo.project.ui.view.tree.AbstractTreeNode;
3737
import consulo.ui.ex.awt.ColumnInfo;
38-
3938
import jakarta.annotation.Nullable;
39+
4040
import java.util.ArrayList;
4141
import java.util.Collection;
4242
import java.util.List;
4343
import java.util.function.Supplier;
4444

4545
/**
4646
* @author VISTALL
47-
* @since 10.01.15
47+
* @since 2015-01-10
4848
*/
49-
public class DotNetCoverageViewExtension extends CoverageViewExtension
50-
{
51-
private static final String UNKNOWN = "?? %";
52-
53-
private final GlobalSearchScope mySearchScope;
54-
55-
public DotNetCoverageViewExtension(Project project, CoverageSuitesBundle suitesBundle, CoverageViewManager.StateBean stateBean)
56-
{
57-
super(project, suitesBundle, stateBean);
58-
mySearchScope = getSuitesBundle().getSearchScope(getProject());
59-
}
60-
61-
@Nullable
62-
@Override
63-
public String getSummaryForNode(AbstractTreeNode node)
64-
{
65-
return null;
66-
}
67-
68-
@Nullable
69-
@Override
70-
public String getSummaryForRootNode(AbstractTreeNode childNode)
71-
{
72-
return null;
73-
}
74-
75-
@Nullable
76-
@Override
77-
public String getPercentage(int columnIdx, AbstractTreeNode node)
78-
{
79-
Object value = node.getValue();
80-
if(!(value instanceof PsiElement))
81-
{
82-
return UNKNOWN;
83-
}
84-
double percentValue = getPercentValue((PsiElement) value, -1);
85-
if(percentValue == -1)
86-
{
87-
return UNKNOWN;
88-
}
89-
else
90-
{
91-
return percentValue + " %";
92-
}
93-
}
94-
95-
private double getPercentValue(PsiElement value, double unknownValue)
96-
{
97-
if(value instanceof DotNetTypeDeclaration)
98-
{
99-
String vmQName = ((DotNetTypeDeclaration) value).getVmQName();
100-
if(vmQName == null)
101-
{
102-
return unknownValue;
103-
}
104-
105-
ClassData classData = getSuitesBundle().getCoverageData().getOrCreateClassData(vmQName);
106-
107-
LineData[] lines = (LineData[]) classData.getLines();
108-
if(lines == null)
109-
{
110-
return unknownValue;
111-
}
112-
113-
int len = 0;
114-
double i = 0;
115-
for(LineData line : lines)
116-
{
117-
if(line != null)
118-
{
119-
if(line.getHits() > 0)
120-
{
121-
i++;
122-
}
123-
len ++;
124-
}
125-
}
126-
127-
return (i / len) * 100;
128-
}
129-
else if(value instanceof DotNetNamespaceAsElement)
130-
{
131-
Collection<PsiElement> children = ((DotNetNamespaceAsElement) value).getChildren(mySearchScope, DotNetNamespaceAsElement.ChildrenFilter.NONE);
132-
double all = 0;
133-
for(PsiElement temp : children)
134-
{
135-
all += getPercentValue(temp, 0);
136-
}
137-
138-
return all / children.size();
139-
}
140-
return unknownValue;
141-
}
142-
143-
@Override
144-
public List<AbstractTreeNode> getChildrenNodes(final AbstractTreeNode node)
145-
{
146-
return ApplicationManager.getApplication().runReadAction(new Supplier<List<AbstractTreeNode>>()
147-
{
148-
@Override
149-
public List<AbstractTreeNode> get()
150-
{
151-
List<AbstractTreeNode> nodes = new ArrayList<AbstractTreeNode>();
152-
Object element = node.getValue();
153-
if(element instanceof DotNetNamespaceAsElement)
154-
{
155-
Collection<PsiElement> children = ((DotNetNamespaceAsElement) element).getChildren(mySearchScope, DotNetNamespaceAsElement.ChildrenFilter.NONE);
156-
for(PsiElement element1 : children)
157-
{
158-
if(element1 instanceof PsiNamedElement)
159-
{
160-
CoverageListRootNode e = new CoverageListRootNode(getProject(), (PsiNamedElement) element1, getSuitesBundle(),
161-
getStateBean());
162-
e.setParent(node);
163-
nodes.add(e);
164-
}
165-
}
166-
}
167-
else if(element instanceof DotNetTypeDeclaration)
168-
{
169-
for(DotNetNamedElement element1 : ((DotNetTypeDeclaration) element).getMembers())
170-
{
171-
if(element1 instanceof DotNetTypeDeclaration)
172-
{
173-
CoverageListRootNode e = new CoverageListRootNode(getProject(), element1, getSuitesBundle(), getStateBean());
174-
e.setParent(node);
175-
nodes.add(e);
176-
}
177-
}
178-
}
179-
return nodes;
180-
}
181-
});
182-
}
183-
184-
@Override
185-
public ColumnInfo[] createColumnInfos()
186-
{
187-
return new ColumnInfo[]{new ElementColumnInfo(), new PercentageCoverageColumnInfo(1, "Statistics, %", getSuitesBundle(), getStateBean())};
188-
}
189-
190-
@Nullable
191-
@Override
192-
public PsiElement getParentElement(PsiElement element)
193-
{
194-
return element.getParent();
195-
}
196-
197-
@Override
198-
public AbstractTreeNode createRootNode()
199-
{
200-
DotNetNamespaceAsElement namespace = DotNetPsiSearcher.getInstance(getProject()).findNamespace("", mySearchScope);
201-
return new CoverageListRootNode(getProject(), namespace, getSuitesBundle(), getStateBean());
202-
}
49+
public class DotNetCoverageViewExtension extends CoverageViewExtension {
50+
private static final String UNKNOWN = "?? %";
51+
52+
private final GlobalSearchScope mySearchScope;
53+
54+
public DotNetCoverageViewExtension(Project project, CoverageSuitesBundle suitesBundle, CoverageViewManager.StateBean stateBean) {
55+
super(project, suitesBundle, stateBean);
56+
mySearchScope = getSuitesBundle().getSearchScope(getProject());
57+
}
58+
59+
@Nullable
60+
@Override
61+
public String getSummaryForNode(AbstractTreeNode node) {
62+
return null;
63+
}
64+
65+
@Nullable
66+
@Override
67+
public String getSummaryForRootNode(AbstractTreeNode childNode) {
68+
return null;
69+
}
70+
71+
@Nullable
72+
@Override
73+
@RequiredReadAction
74+
public String getPercentage(int columnIdx, AbstractTreeNode node) {
75+
Object value = node.getValue();
76+
if (!(value instanceof PsiElement)) {
77+
return UNKNOWN;
78+
}
79+
double percentValue = getPercentValue((PsiElement) value, -1);
80+
if (percentValue == -1) {
81+
return UNKNOWN;
82+
}
83+
else {
84+
return percentValue + " %";
85+
}
86+
}
87+
88+
@RequiredReadAction
89+
private double getPercentValue(PsiElement value, double unknownValue) {
90+
if (value instanceof DotNetTypeDeclaration typeDeclaration) {
91+
String vmQName = typeDeclaration.getVmQName();
92+
if (vmQName == null) {
93+
return unknownValue;
94+
}
95+
96+
ClassData classData = getSuitesBundle().getCoverageData().getOrCreateClassData(vmQName);
97+
98+
LineData[] lines = (LineData[]) classData.getLines();
99+
if (lines == null) {
100+
return unknownValue;
101+
}
102+
103+
int len = 0;
104+
double i = 0;
105+
for (LineData line : lines) {
106+
if (line != null) {
107+
if (line.getHits() > 0) {
108+
i++;
109+
}
110+
len++;
111+
}
112+
}
113+
114+
return (i / len) * 100;
115+
}
116+
else if (value instanceof DotNetNamespaceAsElement namespaceAsElement) {
117+
Collection<PsiElement> children = namespaceAsElement.getChildren(mySearchScope, DotNetNamespaceAsElement.ChildrenFilter.NONE);
118+
double all = 0;
119+
for (PsiElement temp : children) {
120+
all += getPercentValue(temp, 0);
121+
}
122+
123+
return all / children.size();
124+
}
125+
return unknownValue;
126+
}
127+
128+
@Override
129+
public List<AbstractTreeNode> getChildrenNodes(AbstractTreeNode node) {
130+
return myProject.getApplication().runReadAction((Supplier<List<AbstractTreeNode>>) () -> {
131+
List<AbstractTreeNode> nodes = new ArrayList<>();
132+
Object element = node.getValue();
133+
if (element instanceof DotNetNamespaceAsElement namespaceAsElement) {
134+
Collection<PsiElement> children =
135+
namespaceAsElement.getChildren(mySearchScope, DotNetNamespaceAsElement.ChildrenFilter.NONE);
136+
for (PsiElement child : children) {
137+
if (child instanceof PsiNamedElement namedElement) {
138+
CoverageListRootNode e = new CoverageListRootNode(getProject(), namedElement, getSuitesBundle(),
139+
getStateBean()
140+
);
141+
e.setParent(node);
142+
nodes.add(e);
143+
}
144+
}
145+
}
146+
else if (element instanceof DotNetTypeDeclaration typeDeclaration) {
147+
for (DotNetNamedElement members : typeDeclaration.getMembers()) {
148+
if (members instanceof DotNetTypeDeclaration) {
149+
CoverageListRootNode e = new CoverageListRootNode(getProject(), members, getSuitesBundle(), getStateBean());
150+
e.setParent(node);
151+
nodes.add(e);
152+
}
153+
}
154+
}
155+
return nodes;
156+
});
157+
}
158+
159+
@Override
160+
public ColumnInfo[] createColumnInfos() {
161+
return new ColumnInfo[]{
162+
new ElementColumnInfo(),
163+
new PercentageCoverageColumnInfo(
164+
1,
165+
ExecutionCoverageLocalize.tableColumnNameStatistics(),
166+
getSuitesBundle(),
167+
getStateBean()
168+
)
169+
};
170+
}
171+
172+
@Nullable
173+
@Override
174+
public PsiElement getParentElement(PsiElement element) {
175+
return element.getParent();
176+
}
177+
178+
@Override
179+
@RequiredReadAction
180+
public AbstractTreeNode createRootNode() {
181+
DotNetNamespaceAsElement namespace = DotNetPsiSearcher.getInstance(getProject()).findNamespace("", mySearchScope);
182+
return new CoverageListRootNode(getProject(), namespace, getSuitesBundle(), getStateBean());
183+
}
203184
}

0 commit comments

Comments
 (0)