Skip to content

Commit

Permalink
Update CI configs to v0.7.2
Browse files Browse the repository at this point in the history
Update lint scripts and CI configs.
  • Loading branch information
pionbot authored and Sean-Der committed Jun 14, 2023
1 parent f9d0169 commit 4d482fd
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,5 @@ jobs:
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.31
version: v1.45.2
args: $GOLANGCI_LINT_EXRA_ARGS
34 changes: 32 additions & 2 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@ linters-settings:
linters:
enable:
- asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers
- bidichk # Checks for dangerous unicode character sequences
- bodyclose # checks whether HTTP response body is closed successfully
- contextcheck # check the function whether use a non-inherited context
- deadcode # Finds unused code
- decorder # check declaration order and count of types, constants, variables and functions
- depguard # Go linter that checks if package imports are in a list of acceptable packages
- dogsled # Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())
- dupl # Tool for code clone detection
- durationcheck # check for two durations multiplied together
- errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
- errchkjson # Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occations, where the check for the returned error can be omitted.
- errname # Checks that sentinel errors are prefixed with the `Err` and error types are suffixed with the `Error`.
- errorlint # errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13.
- exhaustive # check exhaustiveness of enum switch statements
- exportloopref # checks for pointers to enclosing loop variables
- forcetypeassert # finds forced type assertions
- gci # Gci control golang package import order and make it always deterministic.
- gochecknoglobals # Checks that no globals are present in Go code
- gochecknoinits # Checks that no init functions are present in Go code
Expand All @@ -35,40 +43,62 @@ linters:
- gofumpt # Gofumpt checks whether code was gofumpt-ed.
- goheader # Checks is file header matches to pattern
- goimports # Goimports does everything that gofmt does. Additionally it checks unused imports
- golint # Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes
- gomoddirectives # Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.
- gomodguard # Allow and block list linter for direct Go module dependencies. This is different from depguard where there are different block types for example version constraints and module recommendations.
- goprintffuncname # Checks that printf-like functions are named with `f` at the end
- gosec # Inspects source code for security problems
- gosimple # Linter for Go source code that specializes in simplifying a code
- govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
- grouper # An analyzer to analyze expression groups.
- importas # Enforces consistent import aliases
- ineffassign # Detects when assignments to existing variables are not used
- misspell # Finds commonly misspelled English words in comments
- nakedret # Finds naked returns in functions greater than a specified function length
- nilerr # Finds the code that returns nil even if it checks that the error is not nil.
- nilnil # Checks that there is no simultaneous return of `nil` error and an invalid value.
- noctx # noctx finds sending http request without context.Context
- scopelint # Scopelint checks for unpinned variables in go programs
- predeclared # find code that shadows one of Go's predeclared identifiers
- revive # golint replacement, finds style mistakes
- staticcheck # Staticcheck is a go vet on steroids, applying a ton of static analysis checks
- structcheck # Finds unused struct fields
- stylecheck # Stylecheck is a replacement for golint
- tagliatelle # Checks the struct tags.
- tenv # tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17
- tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes
- typecheck # Like the front-end of a Go compiler, parses and type-checks Go code
- unconvert # Remove unnecessary type conversions
- unparam # Reports unused function parameters
- unused # Checks Go code for unused constants, variables, functions and types
- varcheck # Finds unused global variables and constants
- wastedassign # wastedassign finds wasted assignment statements
- whitespace # Tool for detection of leading and trailing whitespace
disable:
- containedctx # containedctx is a linter that detects struct contained context.Context field
- cyclop # checks function and package cyclomatic complexity
- exhaustivestruct # Checks if all struct's fields are initialized
- forbidigo # Forbids identifiers
- funlen # Tool for detection of long functions
- gocyclo # Computes and checks the cyclomatic complexity of functions
- godot # Check if comments end in a period
- gomnd # An analyzer to detect magic numbers.
- ifshort # Checks that your code uses short syntax for if-statements whenever possible
- ireturn # Accept Interfaces, Return Concrete Types
- lll # Reports long lines
- maintidx # maintidx measures the maintainability index of each function.
- makezero # Finds slice declarations with non-zero initial length
- maligned # Tool to detect Go structs that would take less memory if their fields were sorted
- nestif # Reports deeply nested if statements
- nlreturn # nlreturn checks for a new line before return and branch statements to increase code clarity
- nolintlint # Reports ill-formed or insufficient nolint directives
- paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test
- prealloc # Finds slice declarations that could potentially be preallocated
- promlinter # Check Prometheus metrics naming via promlint
- rowserrcheck # checks whether Err of rows is checked successfully
- sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed.
- testpackage # linter that makes you use a separate _test package
- thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers
- varnamelen # checks that the length of a variable's name matches its scope
- wrapcheck # Checks that errors returned from external packages are wrapped
- wsl # Whitespace Linter - Forces you to use empty lines!

issues:
Expand Down
44 changes: 22 additions & 22 deletions header_extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ func (e *OneByteHeaderExtension) Set(id uint8, buf []byte) error {
}

extid := e.payload[n] >> 4
len := int(e.payload[n]&^0xF0 + 1)
payloadLen := int(e.payload[n]&^0xF0 + 1)
n++

if extid == id {
e.payload = append(e.payload[:n+1], append(buf, e.payload[n+1+len:]...)...)
e.payload = append(e.payload[:n+1], append(buf, e.payload[n+1+payloadLen:]...)...)
return nil
}
n += len
n += payloadLen
}
e.payload = append(e.payload, (id<<4 | uint8(len(buf)-1)))
e.payload = append(e.payload, buf...)
Expand All @@ -71,15 +71,15 @@ func (e *OneByteHeaderExtension) GetIDs() []uint8 {
}

extid := e.payload[n] >> 4
len := int(e.payload[n]&^0xF0 + 1)
payloadLen := int(e.payload[n]&^0xF0 + 1)
n++

if extid == headerExtensionIDReserved {
break
}

ids = append(ids, extid)
n += len
n += payloadLen
}
return ids
}
Expand All @@ -93,13 +93,13 @@ func (e *OneByteHeaderExtension) Get(id uint8) []byte {
}

extid := e.payload[n] >> 4
len := int(e.payload[n]&^0xF0 + 1)
payloadLen := int(e.payload[n]&^0xF0 + 1)
n++

if extid == id {
return e.payload[n : n+len]
return e.payload[n : n+payloadLen]
}
n += len
n += payloadLen
}
return nil
}
Expand All @@ -113,13 +113,13 @@ func (e *OneByteHeaderExtension) Del(id uint8) error {
}

extid := e.payload[n] >> 4
len := int(e.payload[n]&^0xF0 + 1)
payloadLen := int(e.payload[n]&^0xF0 + 1)

if extid == id {
e.payload = append(e.payload[:n], e.payload[n+1+len:]...)
e.payload = append(e.payload[:n], e.payload[n+1+payloadLen:]...)
return nil
}
n += len + 1
n += payloadLen + 1
}
return errHeaderExtensionNotFound
}
Expand Down Expand Up @@ -176,14 +176,14 @@ func (e *TwoByteHeaderExtension) Set(id uint8, buf []byte) error {
extid := e.payload[n]
n++

len := int(e.payload[n])
payloadLen := int(e.payload[n])
n++

if extid == id {
e.payload = append(e.payload[:n+2], append(buf, e.payload[n+2+len:]...)...)
e.payload = append(e.payload[:n+2], append(buf, e.payload[n+2+payloadLen:]...)...)
return nil
}
n += len
n += payloadLen
}
e.payload = append(e.payload, id, uint8(len(buf)))
e.payload = append(e.payload, buf...)
Expand All @@ -203,11 +203,11 @@ func (e *TwoByteHeaderExtension) GetIDs() []uint8 {
extid := e.payload[n]
n++

len := int(e.payload[n])
payloadLen := int(e.payload[n])
n++

ids = append(ids, extid)
n += len
n += payloadLen
}
return ids
}
Expand All @@ -223,13 +223,13 @@ func (e *TwoByteHeaderExtension) Get(id uint8) []byte {
extid := e.payload[n]
n++

len := int(e.payload[n])
payloadLen := int(e.payload[n])
n++

if extid == id {
return e.payload[n : n+len]
return e.payload[n : n+payloadLen]
}
n += len
n += payloadLen
}
return nil
}
Expand All @@ -244,13 +244,13 @@ func (e *TwoByteHeaderExtension) Del(id uint8) error {

extid := e.payload[n]

len := int(e.payload[n+1])
payloadLen := int(e.payload[n+1])

if extid == id {
e.payload = append(e.payload[:n], e.payload[n+2+len:]...)
e.payload = append(e.payload[:n], e.payload[n+2+payloadLen:]...)
return nil
}
n += len + 2
n += payloadLen + 2
}
return errHeaderExtensionNotFound
}
Expand Down
18 changes: 9 additions & 9 deletions packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,16 @@ func (h *Header) Unmarshal(rawPacket []byte) error { //nolint:gocognit
}

extid := rawPacket[currOffset] >> 4
len := int(rawPacket[currOffset]&^0xF0 + 1)
payloadLen := int(rawPacket[currOffset]&^0xF0 + 1)
currOffset++

if extid == extensionIDReserved {
break
}

extension := Extension{id: extid, payload: rawPacket[currOffset : currOffset+len]}
extension := Extension{id: extid, payload: rawPacket[currOffset : currOffset+payloadLen]}
h.Extensions = append(h.Extensions, extension)
currOffset += len
currOffset += payloadLen
}

// RFC 8285 RTP Two Byte Header Extension
Expand All @@ -185,12 +185,12 @@ func (h *Header) Unmarshal(rawPacket []byte) error { //nolint:gocognit
extid := rawPacket[currOffset]
currOffset++

len := int(rawPacket[currOffset])
payloadLen := int(rawPacket[currOffset])
currOffset++

extension := Extension{id: extid, payload: rawPacket[currOffset : currOffset+len]}
extension := Extension{id: extid, payload: rawPacket[currOffset : currOffset+payloadLen]}
h.Extensions = append(h.Extensions, extension)
currOffset += len
currOffset += payloadLen
}

default: // RFC3550 Extension
Expand Down Expand Up @@ -410,10 +410,10 @@ func (h *Header) SetExtension(id uint8, payload []byte) error { //nolint:gocogni
// No existing header extensions
h.Extension = true

switch len := len(payload); {
case len <= 16:
switch payloadLen := len(payload); {
case payloadLen <= 16:
h.ExtensionProfile = extensionProfileOneByte
case len > 16 && len < 256:
case payloadLen > 16 && payloadLen < 256:
h.ExtensionProfile = extensionProfileTwoByte
}

Expand Down
9 changes: 7 additions & 2 deletions packetizer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,13 @@ func TestPacketizer(t *testing.T) {
func TestPacketizer_AbsSendTime(t *testing.T) {
// use the G722 payloader here, because it's very simple and all 0s is valid G722 data.
pktizer := NewPacketizer(100, 98, 0x1234ABCD, &codecs.G722Payloader{}, NewFixedSequencer(1234), 90000)
pktizer.(*packetizer).Timestamp = 45678
pktizer.(*packetizer).timegen = func() time.Time {
p, ok := pktizer.(*packetizer)
if !ok {
t.Fatal("Failed to access packetizer")
}

p.Timestamp = 45678
p.timegen = func() time.Time {
return time.Date(1985, time.June, 23, 4, 0, 0, 0, time.FixedZone("UTC-5", -5*60*60))
// (0xa0c65b1000000000>>14) & 0xFFFFFF = 0x400000
}
Expand Down

0 comments on commit 4d482fd

Please sign in to comment.