-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add new logger system #27
base: master
Are you sure you want to change the base?
Conversation
*/ | ||
public void addHeader(String header) { | ||
if (hasHeader(header)) { | ||
System.err.println("The header \"" + header + "\" already exists."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Define a constant instead of duplicating this literal "The header "" 3 times.
} | ||
} | ||
} | ||
private BufferedWriter logger; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename field "logger"
@@ -10,7 +10,7 @@ | |||
|
|||
public class DriveModule implements Loggable { | |||
|
|||
private final double VELOCITY_COEFFICIENT = 600 / 2048; | |||
// private final double VELOCITY_COEFFICIENT = 600 / 2048; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block of commented-out lines of code should be removed.
src/main/java/frc/robot/Robot.java
Outdated
@@ -11,11 +11,13 @@ | |||
import frc.robot.Climber.MotorStates; | |||
import frc.robot.logging.LoggableCompressor; | |||
import frc.robot.logging.LoggableController; | |||
import frc.robot.logging.LoggableGyro; | |||
// import frc.robot.logging.LoggableGyro; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block of commented-out lines of code should be removed.
} | ||
else { | ||
if (hasData(header)) { | ||
System.err.println("The header \"" + header + "\" already has data."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line is longer than 100 characters (found 102).
import frc.robot.logging.LoggablePowerDistribution; | ||
import frc.robot.logging.LoggableTimer; | ||
import frc.robot.logging.Logger; | ||
|
||
import java.io.IOException; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extra separation in import group before 'java.io.IOException'
src/main/java/frc/robot/Robot.java
Outdated
try { | ||
logger.createLog(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
src/main/java/frc/robot/Robot.java
Outdated
try { | ||
logger.writeData(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
src/main/java/frc/robot/Robot.java
Outdated
try { | ||
logger.writeData(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
src/main/java/frc/robot/Robot.java
Outdated
try { | ||
logger.writeData(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
Codecov Report
@@ Coverage Diff @@
## master #27 +/- ##
===========================================
+ Coverage 9.63% 9.98% +0.34%
Complexity 17 17
===========================================
Files 18 19 +1
Lines 685 661 -24
Branches 47 43 -4
===========================================
Hits 66 66
+ Misses 619 595 -24
|
* Sends all accumulated data to log file. | ||
*/ | ||
public void logAll() { | ||
// logAllData(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block of commented-out lines of code should be removed.
// writeData(); | ||
// } catch (IOException e) { | ||
// // TODO Auto-generated catch block | ||
// e.printStackTrace(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block of commented-out lines of code should be removed.
src/main/java/frc/robot/Robot.java
Outdated
@@ -62,11 +68,28 @@ public double deadband(double in) { | |||
@Override | |||
public void robotInit() { | |||
logger = new Logger(); | |||
runnable = new Runnable() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make this anonymous inner class a lambda (sonar.java.source not set. Assuming 8 or greater.)
// e.printStackTrace(); | ||
// } | ||
|
||
// throw new NullPointerException(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block of commented-out lines of code should be removed.
// try { | ||
// writeData(); | ||
// } catch (IOException e) { | ||
// // TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
src/main/java/frc/robot/Robot.java
Outdated
import frc.robot.logging.LoggablePowerDistribution; | ||
import frc.robot.logging.LoggableTimer; | ||
import frc.robot.logging.LogTimer; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wrong lexicographical order for 'frc.robot.logging.LogTimer' import. Should be before 'frc.robot.logging.LoggableTimer'.
} | ||
writeData(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
src/main/java/frc/robot/Robot.java
Outdated
try { | ||
logger.writeHeaders(); | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO found
Calendar calendar = Calendar.getInstance(); | ||
String dir = "\\home\\lvuser\\logs"; | ||
Path path = Paths.get(dir + "\\" + calendar.get(Calendar.YEAR) + "-" | ||
+ (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + "-" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line is longer than 100 characters (found 102).
i was going to add images, but the code snippets I think work better
package frc.robot.logging | ||
|
||
public class LoggableTest implements Loggable { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
|
||
public class LoggableTest implements Loggable { | ||
@Override | ||
public void logHeaders(Logger logger) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
@Override | ||
public void logHeaders(Logger logger) { | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
} | ||
|
||
@Override | ||
public void logData(Logger logger) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
public void logHeaders(Logger logger) { | ||
logger.addHeader("first_name"); | ||
logger.addHeader("last_name"); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
} | ||
``` | ||
<br> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length
|
||
### Create the Loggable | ||
1. Go to ***/src/main/java/frc/robot/logging*** and create a new Java file. The naming system used for the loggables are like this: *Loggable*, followed immediately by the name of the system being logged. For demonstrations purposes, I will call it *LoggableTest.java*. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
} | ||
``` | ||
<br> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
} | ||
``` | ||
<br> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
} | ||
``` | ||
<br> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
i also fixed the pronouns
public class LoggableTest implements Loggable { | ||
@Override | ||
public void logHeaders(Logger logger) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
public void logHeaders(Logger logger) { | ||
|
||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
|
||
@Override | ||
public void logData(Logger logger) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
logger.addHeader("first_name"); | ||
logger.addHeader("last_name"); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
|
||
@Override | ||
public void logData(Logger logger) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing spaces
``` | ||
<br> | ||
|
||
4. Now go into the `robotInit()` method and create the new instance. This is what the logger will register. If there's a constructor, make sure to give the necessary values. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length
``` | ||
<br> | ||
|
||
5. Go to the bottom of the `robotInit()` method and use the `logger.addLoggable()` method to register `loggableTest` (This is assuming that the *Loggable* is a standalone system. If this is part of another system, then make sure to add it to whatever if-statements belong to that system, if any.) This will allow the logger to call `logHeaders()` and `logData()`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length
``` | ||
<br> | ||
|
||
6. You are now all set! You've added the *LoggableTest* object to the logger, so now, when you start the robot, the log file should contain the info being logged by your *Loggable* object. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length
### Create the Loggable | ||
1. Go to ***/src/main/java/frc/robot/logging*** and create a new Java file. The naming system used for the loggables are like this: *Loggable*, followed immediately by the name of the system being logged. For demonstrations purposes, I will call it *LoggableTest.java*. | ||
|
||
2. Inside this file, create a new class. You'll also need to have it implement *Loggable.java*. This contains the methods needed to accumulate data to send to the log file. No import will be needed, as *Loggable.java* is in the same file as our *LoggableTest* class. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
``` | ||
<br> | ||
|
||
3. Next you'll need to implement the methods from *Loggable.java*. The first method is `logHeaders()`, which is for logging the type of data. It is called only when the robot starts. The second method is `logData()`. This is called approximately 30 times a second. **Make sure to have the `@Override` decorator above both methods.** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
public void log(Logger logger) { | ||
// TODO Auto-generated method stub | ||
} | ||
public void logData(Logger logger) {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
'}' at column 41 should be alone on a line.
<br> | ||
|
||
4. Now go into the `robotInit()` method and create the new instance. This is what the logger will register. If there's a constructor, make sure to give the necessary values. | ||
```java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
``` | ||
<br> | ||
|
||
5. Now let's add our data. Under `logData()`, use the `logger` parameter to access the needed methods. Make sure to specify the header you want the data to go under. Don't worry about converting the data to `string` type. The logger does that automatically. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
``` | ||
<br> | ||
|
||
6. There you go! Our *Loggable* object has been created. Don't think that you can't add other things as well. Constructors, other methods, those won't get in the way (except, of course, if you name other methods the same name). As long as your class has `logHeaders()` and `logData()`, you're good. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
### Registering the Loggable | ||
1. Go to the main *Robot.java* file in ***/src/main/java/frc/robot***. This is where all of the robot code is. | ||
|
||
2. Import *LoggableTest.java*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
<br> | ||
|
||
5. Now let's add our data. Under `logData()`, use the `logger` parameter to access the needed methods. Make sure to specify the header you want the data to go under. Don't worry about converting the data to `string` type. The logger does that automatically. | ||
```java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
logger.addData("last_name", "Bezos") | ||
} | ||
} | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
1. Go to the main *Robot.java* file in ***/src/main/java/frc/robot***. This is where all of the robot code is. | ||
|
||
2. Import *LoggableTest.java*. | ||
```java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
2. Import *LoggableTest.java*. | ||
```java | ||
import frc.robot.logging.LoggableTest; | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
<br> | ||
|
||
3. Go to the top of the `Robot` class and create a new *LoggableTest* object. | ||
```java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
``` | ||
<br> | ||
|
||
4. In the `logHeaders()` method, we will have two headers: *first_name*, and *last_name*. So, we need to use the `logger` parameter to access the necessary method to add these headers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ordered list item prefix
3. Go to the top of the `Robot` class and create a new *LoggableTest* object. | ||
```java | ||
LoggableTest loggableTest; | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
4. Now go into the `robotInit()` method and create the new instance. This is what the logger will register. If there's a constructor, make sure to give the necessary values. | ||
```java | ||
loggableTest = new LoggableTest(); | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
<br> | ||
|
||
5. Go to the bottom of the `robotInit()` method and use the `logger.addLoggable()` method to register `loggableTest` (This is assuming that the *Loggable* is a standalone system. If this is part of another system, then make sure to add it to whatever if-statements belong to that system, if any.) This will allow the logger to call `logHeaders()` and `logData()`. | ||
```java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
5. Go to the bottom of the `robotInit()` method and use the `logger.addLoggable()` method to register `loggableTest` (This is assuming that the *Loggable* is a standalone system. If this is part of another system, then make sure to add it to whatever if-statements belong to that system, if any.) This will allow the logger to call `logHeaders()` and `logData()`. | ||
```java | ||
logger.addLoggable(loggableTest); | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fenced code blocks should be surrounded by blank lines
|
||
} | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
} | ||
} | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
} | ||
} | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
} | ||
} | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
```java | ||
import frc.robot.logging.LoggableTest; | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
```java | ||
LoggableTest loggableTest; | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
```java | ||
loggableTest = new LoggableTest(); | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
```java | ||
logger.addLoggable(loggableTest); | ||
``` | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inline HTML
To show how to use the logger system, this document will demonstrate the creation of a `Loggable` object and how to register it in the log file. | ||
|
||
### Create the Loggable | ||
1. Go to ***/src/main/java/frc/robot/logging*** and create a new Java file. The naming system used for the loggables are like this: *Loggable*, followed immediately by the name of the system being logged. For demonstrations purposes, let's call it *LoggableTest.java*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length
To show how to use the logger system, this document will demonstrate the creation of a `Loggable` object and how to register it in the log file. | ||
|
||
### Create the Loggable | ||
1. Go to ***/src/main/java/frc/robot/logging*** and create a new Java file. The naming system used for the loggables are like this: *Loggable*, followed immediately by the name of the system being logged. For demonstrations purposes, let's call it *LoggableTest.java*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lists should be surrounded by blank lines
Code Climate has analyzed commit a5412f1 and detected 76 issues on this pull request. Here's the issue category breakdown:
Note: there is 1 critical issue. The test coverage on the diff in this pull request is 1.2% (50% is the threshold). This pull request will bring the total coverage in the repository to 9.9% (0.3% change). View more on Code Climate. |
No description provided.