module
0.0.0-20230312170203-ff574a2d1cbb
Repository: https://github.com/jamesits/nopadding.git
Documentation: pkg.go.dev
# README
nopadding
Provides:
- A Golang analyzer to show whether your struct has been automatically padded by the Golang compiler
- A Golang analyzer wrapper which can be invoked from a unit test
This package is very useful during system development (e.g. when marshalling syscall returned structs).
Usage
Put these code segments in your package's unit test.
Check for Non-optimized Struct Layout
package main
import (
"github.com/jamesits/nopadding/analyzer_wrapper"
"github.com/stretchr/testify/assert"
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/analysis/passes/fieldalignment"
"testing"
)
func TestStructOptimizedLayout(t *testing.T) {
assert.NotZero(t, analyzer_wrapper.Run(
[]string{},
[]*analysis.Analyzer{fieldalignment.Analyzer},
))
}
Check for Padding Existence
package main
import (
"github.com/jamesits/nopadding/analyzer_wrapper"
"github.com/jamesits/nopadding/padding"
"github.com/stretchr/testify/assert"
"golang.org/x/tools/go/analysis"
"testing"
)
func TestStructPadding(t *testing.T) {
assert.Zero(t, analyzer_wrapper.Run(
[]string{},
[]*analysis.Analyzer{padding.Analyzer},
))
}
# Packages
Package analyzer_wrapper wraps around Golang's official analysis modules and make them available in a unit test.
Package padding defines an Analyzer that detects structs that is padded automatically by the Golang compiler.