Skip to content

Commit 5000055

Browse files
authored
Merge pull request #151 from itsallcode/fix_sonar_and_coverity_warnings
Fix sonar and coverity warnings
2 parents 8fe353d + 1e9ff19 commit 5000055

24 files changed

Lines changed: 136 additions & 151 deletions

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ The list below show all build time dependencies in alphabetical order. Note that
7777
| [JUnit](https://junit.org/junit4/index.html) | Unit testing framework | Eclipse Public License 1.0 |
7878
| [Mockito](http://site.mockito.org/) | Mocking framework | MIT License |
7979
| [System rules](https://stefanbirkner.github.io/system-rules/) | JUnit rules for testing `STDOUT`, `STDIN` and `STDERR` | Common Public License 1.0 |
80+
| [Pitest](http://pitest.org/) | Mutation testing | Apache License 2.0 |
8081

8182
### Essential Build Steps
8283

@@ -105,6 +106,25 @@ We use [`java.util.logging`](https://docs.oracle.com/javase/8/docs/technotes/gui
105106
mvn license:update-project-license license:update-file-header
106107
```
107108

109+
### Run local sonar analysis
110+
111+
```bash
112+
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar \
113+
-Dsonar.host.url=https://sonarcloud.io \
114+
-Dsonar.organization=itsallcode \
115+
-Dsonar.login=[token]
116+
```
117+
118+
See analysis results at https://sonarcloud.io/dashboard?id=org.itsallcode%3Aopenfasttrace
119+
120+
### Run [mutation testing](http://pitest.org)
121+
122+
```bash
123+
mvn org.pitest:pitest-maven:mutationCoverage
124+
# speed up repeated analysis with history
125+
mvn -DwithHistory org.pitest:pitest-maven:mutationCoverage
126+
```
127+
108128
### Publishing to JCenter
109129

110130
1. Add the following to your `~/.m2/settings.xml`:

pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
<version>0.6.0</version>
77
<name>OpenFastTrace</name>
88
<description>Free requirement tracking suite</description>
9+
<url>https://github.com/itsallcode/openfasttrace</url>
10+
<scm>
11+
<connection>scm:git:https://github.com/itsallcode/openfasttrace.git</connection>
12+
<developerConnection>scm:git:https://github.com/itsallcode/openfasttrace.git</developerConnection>
13+
<url>https://github.com/itsallcode/openfasttrace</url>
14+
</scm>
915

1016
<repositories>
1117
<repository>
@@ -185,6 +191,11 @@
185191
<commandlineArgs>trace doc src/main/java src/test/java</commandlineArgs>
186192
</configuration>
187193
</plugin>
194+
<plugin>
195+
<groupId>org.pitest</groupId>
196+
<artifactId>pitest-maven</artifactId>
197+
<version>1.4.0</version>
198+
</plugin>
188199
</plugins>
189200
<pluginManagement>
190201
<plugins>

src/main/java/org/itsallcode/openfasttrace/cli/ArgumentValidator.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import static java.util.Arrays.asList;
2626

2727
import java.util.List;
28+
import java.util.Optional;
2829
import java.util.stream.Collectors;
2930

3031
import org.itsallcode.openfasttrace.cli.commands.ConvertCommand;
@@ -60,24 +61,24 @@ public ArgumentValidator(final CliArguments arguments)
6061

6162
private boolean validate()
6263
{
63-
final String command = this.arguments.getCommand();
64+
final Optional<String> command = this.arguments.getCommand();
6465
boolean ok = false;
65-
if (command == null)
66+
if (!command.isPresent())
6667
{
6768
this.error = "Missing command";
6869
this.suggestion = "Add one of " + listCommands();
6970
}
70-
else if (TraceCommand.COMMAND_NAME.equals(command))
71+
else if (TraceCommand.COMMAND_NAME.equals(command.get()))
7172
{
7273
ok = validateTraceCommand();
7374
}
74-
else if (ConvertCommand.COMMAND_NAME.equals(command))
75+
else if (ConvertCommand.COMMAND_NAME.equals(command.get()))
7576
{
7677
ok = validateConvertCommand();
7778
}
7879
else
7980
{
80-
this.error = "'" + command + "' is not an OFT command.";
81+
this.error = "'" + command.orElse(null) + "' is not an OFT command.";
8182
this.suggestion = "Choose one of " + listCommands() + ".";
8283
}
8384

src/main/java/org/itsallcode/openfasttrace/cli/CliArguments.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ public void setF(final String outputFile)
9292
*
9393
* @return the OFT command
9494
*/
95-
public String getCommand()
95+
public Optional<String> getCommand()
9696
{
9797
if (this.unnamedValues == null || this.unnamedValues.isEmpty())
9898
{
99-
return null;
99+
return Optional.empty();
100100
}
101-
return this.unnamedValues.get(0);
101+
return Optional.of(this.unnamedValues.get(0));
102102
}
103103

104104
/**
@@ -141,17 +141,18 @@ public String getOutputFormat()
141141
{
142142
if (this.outputFormat == null)
143143
{
144-
if (this.getCommand().equals(TraceCommand.COMMAND_NAME))
144+
final Optional<String> command = this.getCommand();
145+
if (command.isPresent() && command.get().equals(TraceCommand.COMMAND_NAME))
145146
{
146147
return ReportConstants.DEFAULT_REPORT_FORMAT;
147148
}
148-
else if (this.getCommand().equals(ConvertCommand.COMMAND_NAME))
149+
else if (command.isPresent() && command.get().equals(ConvertCommand.COMMAND_NAME))
149150
{
150151
return ExporterConstants.DEFAULT_OUTPUT_FORMAT;
151152
}
152153
else
153154
{
154-
throw new IllegalStateException("Illegal command \"" + this.getCommand()
155+
throw new IllegalStateException("Illegal command \"" + command
155156
+ "\" encountered trying to set default output format.");
156157
}
157158
}

src/main/java/org/itsallcode/openfasttrace/cli/CliStarter.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.itsallcode.openfasttrace.cli;
22

3+
import java.util.Optional;
4+
35
/*-
46
* #%L
57
* OpenFastTrace
@@ -63,7 +65,12 @@ private static void printToStdError(final String message)
6365
void run()
6466
{
6567
Performable performable = null;
66-
switch (this.arguments.getCommand())
68+
final Optional<String> command = this.arguments.getCommand();
69+
if (!command.isPresent())
70+
{
71+
throw new IllegalStateException("Command missing trying to execute OFT mode.");
72+
}
73+
switch (command.get())
6774
{
6875
case ConvertCommand.COMMAND_NAME:
6976
performable = new ConvertCommand(this.arguments);
@@ -72,7 +79,8 @@ void run()
7279
performable = new TraceCommand(this.arguments);
7380
break;
7481
default:
75-
throw new IllegalStateException("Command missing trying to execute OFT mode.");
82+
throw new IllegalStateException(
83+
"Unknown command '" + command.get() + "' trying to execute OFT mode.");
7684
}
7785
final ExitStatus status = ExitStatus.fromBoolean(performable.run());
7886
exit(status);

src/main/java/org/itsallcode/openfasttrace/exporter/ExporterContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
* Context for {@link ExporterFactory}. Currently only used to satisfy
2929
* {@link Initializable} interface.
3030
*/
31+
// Class is empty by intention
32+
@SuppressWarnings("squid:S2094")
3133
public class ExporterContext
3234
{
3335

src/main/java/org/itsallcode/openfasttrace/importer/markdown/MarkdownImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ private void informListenerAboutNewItem()
230230
final SpecificationItemId id = new SpecificationItemId.Builder(idText).build();
231231
this.listener.beginSpecificationItem();
232232
this.listener.setId(id);
233-
this.listener.setLocation(this.file.getPath().toString(), this.lineNumber);
233+
this.listener.setLocation(this.file.getPath(), this.lineNumber);
234234
if(this.lastTitle != null)
235235
{
236236
this.listener.setTitle(this.lastTitle);

src/main/java/org/itsallcode/openfasttrace/importer/markdown/MarkdownImporterStateMachine.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
*/
4040
public class MarkdownImporterStateMachine
4141
{
42-
private static Logger LOG = Logger.getLogger(MarkdownImporterStateMachine.class.getName());
42+
private static final Logger LOG = Logger
43+
.getLogger(MarkdownImporterStateMachine.class.getName());
4344

4445
private State state = State.START;
4546
private String lastToken = "";

src/main/java/org/itsallcode/openfasttrace/importer/specobject/SpecobjectImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void runImport()
6868
final SpecDocumentHandlerBuilder config = new SpecDocumentHandlerBuilder(this.file,
6969
this.listener);
7070
final TreeContentHandler treeContentHandler = config.build();
71-
new ContentHandlerAdapter(this.file.getPath().toString(), xmlReader,
71+
new ContentHandlerAdapter(this.file.getPath(), xmlReader,
7272
new TreeBuildingContentHandler(treeContentHandler)).registerListener();
7373
final InputSource input = new InputSource(reader);
7474
xmlReader.parse(input);

src/main/java/org/itsallcode/openfasttrace/importer/specobject/handler/SpecObjectsHandlerBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private void handleStartElement(final TreeElement elem)
6060
{
6161
this.listener.beginSpecificationItem();
6262
this.locationBuilder = new Location.Builder() //
63-
.path(this.file.getPath().toString()) //
63+
.path(this.file.getPath()) //
6464
.line(elem.getLocation().getLine());
6565
this.idBuilder = new SpecificationItemId.Builder() //
6666
.artifactType(this.defaultDoctype);

0 commit comments

Comments
 (0)