Skip to content

Commit

Permalink
Merge pull request #72 from JamalZeynalov/exclude-deprecated-from-fin…
Browse files Browse the repository at this point in the history
…al-statistic

Exclude deprecated endpoints from final coverage results
  • Loading branch information
viclovsky authored Mar 2, 2021
2 parents 28bd75d + 8aa1382 commit 21ad2b8
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 11 deletions.
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,32 @@ You can setup next options:
}
````

#### Excluding deprecated operations from the coverage report statistic
This rule is created for cases when you don't want to measure coverage of deprecated operations, but only for actual ones. <br>
If an operation is deprecated then it will be excluded from *Full*, *Partial*, and *Empty* categories and won't affect the "Operations coverage summary"

Options for this rule are placed in "*exclude-deprecated*" subsection in *rules* sections.

You can set up next options:

**enable** - *true/false*. <br>
By default, this rule is not enabled. Add it to the config file with *true* value to enable this rule, like in the example below:

````
{
"rules" : {
....
"exclude-deprecated" : {
"enable" : true
}
},
....
}
````

If you need you can add your rules for generation of conditions. So, please, send your PRs.

## Result writer configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ public Configuration setOptions(ConfigurationOptions options) {
return this;
}

public RuleConfigurationOptions getOption(String optionKey) {
return this.options.getRules().get(optionKey);
}

public Configuration setDefaultRules(List<ConditionRule> defaultRules) {
this.defaultRules = defaultRules;
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ public void run() {
Results result = new Results();

statisticsBuilders.stream().filter(StatisticsBuilder::isPreBuilder).forEach(
statisticsBuilder -> statisticsBuilder.build(result));
statisticsBuilder -> statisticsBuilder.build(result, configuration));

statisticsBuilders.stream().filter(StatisticsBuilder::isPostBuilder).forEach(
statisticsBuilder -> statisticsBuilder.build(result));
statisticsBuilder -> statisticsBuilder.build(result, configuration));

configuration.getConfiguredResultsWriters().forEach(writer -> writer.write(result));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.viclovsky.swagger.coverage.core.results.builder.core;

import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.configuration.options.ConfigurationOptions;
import com.github.viclovsky.swagger.coverage.core.results.Results;
import com.github.viclovsky.swagger.coverage.core.rule.core.ConditionRule;
Expand All @@ -26,7 +27,7 @@ public StatisticsBuilder configure(ConfigurationOptions options) {

public abstract StatisticsBuilder configure(Swagger swagger, List<ConditionRule> rules);

public abstract void build(Results results);
public abstract void build(Results results, Configuration configuration);

public abstract boolean isPreBuilder();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.viclovsky.swagger.coverage.core.results.builder.core;


import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.core.model.OperationKey;
import com.github.viclovsky.swagger.coverage.core.results.Results;
import com.github.viclovsky.swagger.coverage.core.results.data.OperationResult;
Expand All @@ -17,7 +18,7 @@ public StatisticsBuilder configure(Swagger swagger, List<ConditionRule> rules) {
}

@Override
public void build(Results results) {
public void build(Results results, Configuration configuration) {
results.getOperations().forEach(this::buildOperation);
buildResult(results);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.viclovsky.swagger.coverage.CommandLine;
import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.core.results.Results;
import com.github.viclovsky.swagger.coverage.core.results.builder.core.StatisticsBuilder;
import com.github.viclovsky.swagger.coverage.core.results.builder.core.StatisticsPostBuilder;
Expand All @@ -23,7 +24,7 @@ public StatisticsBuilder configure(Swagger swagger, List<ConditionRule> rules) {
}

@Override
public void build(Results results) {
public void build(Results results, Configuration configuration) {
ObjectMapper mapper = new ObjectMapper();
String prettyConfiguration = "";
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.viclovsky.swagger.coverage.core.results.builder.prebuilder;


import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.core.generator.OperationConditionGenerator;
import com.github.viclovsky.swagger.coverage.core.generator.SwaggerSpecificationProcessor;
import com.github.viclovsky.swagger.coverage.core.model.Condition;
Expand Down Expand Up @@ -69,14 +70,14 @@ private static Predicate<OperationKey> equalsOperationKeys(OperationKey operatio
}

@Override
public void build(Results results) {
public void build(Results results, Configuration configuration) {
Map<OperationKey, OperationResult> operations = new TreeMap<>();
Map<String, ConditionStatistics> conditionStatisticsMap = new HashMap<>();

mainCoverageData.forEach((key, value) -> {
value.getConditions().stream().filter(Condition::isHasPostCheck).forEach(Condition::postCheck);

operations.put(key, new OperationResult(value.getConditions(), value.getOperation().isDeprecated())
operations.put(key, new OperationResult(configuration, value.getConditions(), value.getOperation().isDeprecated())
.setProcessCount(value.getProcessCount())
.setDescription(value.getOperation().getDescription())
.setOperationKey(key)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.viclovsky.swagger.coverage.core.results.builder.prebuilder;

import com.github.viclovsky.swagger.coverage.CommandLine;
import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.core.results.Results;
import com.github.viclovsky.swagger.coverage.core.results.builder.core.StatisticsPreBuilder;
import com.github.viclovsky.swagger.coverage.core.results.data.GenerationStatistics;
Expand Down Expand Up @@ -54,7 +55,7 @@ public GenerationStatisticsBuilder add(String path) {
}

@Override
public void build(Results results) {
public void build(Results results, Configuration configuration) {
final long duration = System.currentTimeMillis() - startTime;
final String resultDateDuration = DateTimeUtil.formatDate(minResultTime.toInstant())
+ " - "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
public enum CoverageState {
FULL,
PARTY,
EMPTY
EMPTY,
DEPRECATED,
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.github.viclovsky.swagger.coverage.core.results.data;

import com.github.viclovsky.swagger.coverage.configuration.Configuration;
import com.github.viclovsky.swagger.coverage.core.model.Condition;
import com.github.viclovsky.swagger.coverage.core.model.OperationKey;

import java.util.List;

public class OperationResult {

private boolean excludeDeprecated;
private OperationKey operationKey;
private List<Condition> conditions;
private long allConditionCount;
Expand All @@ -16,13 +18,21 @@ public class OperationResult {
private CoverageState state;
private boolean deprecated;

public OperationResult(List<Condition> conditions, Boolean isDeprecated) {
public OperationResult(Configuration configuration, List<Condition> conditions, Boolean isDeprecated) {
this.conditions = conditions;
this.deprecated = (isDeprecated != null) ? isDeprecated : false;
allConditionCount = conditions.size();
coveredConditionCount = conditions.stream().filter(Condition::isCovered).count();

if (coveredConditionCount == 0) {
try {
excludeDeprecated = configuration.getOption("exclude-deprecated").isEnable();
} catch (NullPointerException e) {
excludeDeprecated = false;
}

if (this.deprecated && excludeDeprecated) {
state = CoverageState.DEPRECATED;
} else if (coveredConditionCount == 0) {
state = CoverageState.EMPTY;
} else {
if (allConditionCount == coveredConditionCount) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
},
"enum-another-value": {
"enable": true
},
"exclude-deprecated" : {
"enable" : true
}
},
"writers": {
Expand Down

0 comments on commit 21ad2b8

Please sign in to comment.