Skip to content
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 lint and go generate steps to CI #254

Merged
merged 3 commits into from
Aug 23, 2022
Merged

Conversation

helsaawy
Copy link
Contributor

@helsaawy helsaawy commented Aug 10, 2022

Changes are broken out into two commits
The first adds config files, updates ci.yml, adds the git attributes, and updates the README.
The second updates the repo to pass the linting stage.

Add CI step to verify go generate was run on repo.
Add linter stage to CI along with linter config file, .golangci.yml.

Updated README.md Contributing section on linting requirements.

Added .gitattributes file to prevent issues with checkout out CRLF and gofmt

Added sequence ordering to make sure lint and go generate stages run before tests and build.
This way, build and tests are not run on code that could potentially:

  1. not build due to gofmt issues;
  2. contain bugs;
  3. have to be re-submitted after issues are fixed; or
  4. contain outdated Win32 syscall or other auto-generated files.

@helsaawy helsaawy requested a review from a team as a code owner August 10, 2022 18:58
@helsaawy helsaawy changed the title add lint and go gen to CI Add lint and go generate steps to CI Aug 10, 2022
@helsaawy helsaawy force-pushed the he/ci branch 10 times, most recently from 6557272 to 9e1dba7 Compare August 11, 2022 23:34
@helsaawy helsaawy marked this pull request as draft August 11, 2022 23:34
@helsaawy helsaawy force-pushed the he/ci branch 4 times, most recently from 01a6ff2 to cf213fa Compare August 12, 2022 00:05
@helsaawy helsaawy marked this pull request as ready for review August 12, 2022 00:07
@helsaawy helsaawy force-pushed the he/ci branch 12 times, most recently from 7ce5344 to 00a9dca Compare August 14, 2022 21:47
@helsaawy helsaawy force-pushed the he/ci branch 9 times, most recently from 228415a to 57d377b Compare August 15, 2022 19:28
Copy link
Contributor

@anmaxvl anmaxvl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few comments

backuptar/tar.go Outdated Show resolved Hide resolved
pkg/etw/eventmetadata.go Show resolved Hide resolved
pkg/etwlogrus/opts.go Outdated Show resolved Hide resolved
vhd/vhd.go Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
backup_test.go Outdated Show resolved Hide resolved
backup.go Outdated Show resolved Hide resolved
Add CI step to verify `go generate` was run on repo.
Add linter stage to CI along with linter config file,
`.golangci.yml`.
Will likely prefer revive over static-check.

Updated README Contributing section on linting requirements.

Added sequence ordering to make sure lint and go generate stages run
before tests and build.
This way, build and tests are not run on code that could potentially:

    1. not build due to `gofmt` issues;
    2. contain bugs;
    3. have to be re-submitted after issues are fixed; or
    4. contain outdated Win32 syscall or other auto-generated files.

Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
Code changes to satisfy linters:

 - Ran `gofmt -s -w` on repo.
 - Broke up long lines.
 - When possible, changed names with incorrect initialism formatting
   - Added exceptions for exported variables.
 - Added exceptions for ALL_CAPS_WITH_UNDERSCORES code.
   - Switched to using `windows` or `syscall` definitions if possible;
     especially if some constants were unused.
 - Added `_ =` to satisfy error linter, and acknowledge that errors are
   being ignored.
 - Switched to using `errors.Is` and `As` in places, elsewhere added
   exceptions if error value was known to be `syscall.Errno`.
 - Removed bare returns.
 - Prevented variables from being overshadowed in certain places
   (ignoring cases of overshadowing `err`).
 - Renamed variables and functions (eg, `len`, `eventMetadata.bytes`) to
   prevent shadowing pre-built functions and imported pacakges.
 - Removed unused method receivers.
 - Added exceptions to certain unused (unexported) constants and
   functions.
   - Deleted unused `once` from `pkg/etw.providerMap`.
 - Renamed `noop.go` files to `main_other.go` or `doc.go`, to better fit
   style recommendations.
 - Added exceptions for non-secure use of SHA1 and weak crypto
   libraries.
 - Replaced `ioutil` with `io` and `os` (and `t.TempDir` in tests).
 - Added fully exhaustive checks for `switch` statements in `pkg/etw`.
 - Defined constant strings for `tools/mkwinsyscall`.
 - Removed unnecessary conversions.
 - Made sure `context.Cancel` was called.

Additionally, added `//go:build windows" constraints on files with
unexported code, since linter will complain about unused code on
non-Windows platforms.

Added a stub `main() {}` for `mkwinsyscall` for non-Windows builds, just in
case `//go:generate` directives are added to OS-agnostic files.

Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
Moved HVSocket fuzzing tests to separate file with go 1.18 build
constraint.

Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
@helsaawy helsaawy merged commit e268c11 into microsoft:main Aug 23, 2022
@helsaawy helsaawy deleted the he/ci branch August 23, 2022 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants