mirror of
https://github.com/reactos/syzkaller.git
synced 2024-11-23 03:19:51 +00:00
tools/syz-linter: fix comments check
Turns out ast.Inspect does not visit most comments. Walk file.Comments manually. Update #1876
This commit is contained in:
parent
d4c58caef7
commit
78178cfb8c
@ -38,7 +38,7 @@ func RemoveAll(dir string) error {
|
||||
func SystemMemorySize() uint64 {
|
||||
var info syscall.Sysinfo_t
|
||||
syscall.Sysinfo(&info)
|
||||
return uint64(info.Totalram) //nolint:unconvert
|
||||
return uint64(info.Totalram) // nolint:unconvert
|
||||
}
|
||||
|
||||
func removeImmutable(fname string) error {
|
||||
|
@ -277,9 +277,9 @@ var zirconOopses = append([]*oops{
|
||||
// We should detect just "stopping other cpus" as some kernel crash rather then as "lost connection",
|
||||
// but if we add oops for "stopping other cpus", then it will interfere with other formats,
|
||||
// because "stopping other cpus" usually goes after "ZIRCON KERNEL PANIC", but sometimes before. Mess.
|
||||
//{
|
||||
// {
|
||||
// []byte("stopping other cpus"),
|
||||
//},
|
||||
// },
|
||||
{
|
||||
[]byte("welcome to Zircon"),
|
||||
[]oopsFormat{
|
||||
|
@ -69,7 +69,7 @@ func TestHintsCheckConstArg(t *testing.T) {
|
||||
// i16 w = (i16) el
|
||||
// if (w == 0x88) {...}
|
||||
// i16 other = 0xfffe
|
||||
// if (w == other)
|
||||
// if (w == other)
|
||||
// }; test8(i8(0x1234));
|
||||
0x34: compSet(0x88, 0x1122, 0xfffffffffffffffe, 0xffffffffffffff0a),
|
||||
// This following args should be iggnored.
|
||||
|
@ -280,16 +280,6 @@ mutate4(&(0x7f0000000000)="11223344", 0x4)
|
||||
`, `
|
||||
mutate4(&(0x7f0000000000)="113344", 0x3)
|
||||
`},
|
||||
// Mutate data (insert byte and update size).
|
||||
// TODO: this is not working, because Mutate constantly tends
|
||||
// update addresses and insert mmap's.
|
||||
/*
|
||||
{`
|
||||
mutate4(&(0x7f0000000000)="1122", 0x2)
|
||||
`, `
|
||||
mutate4(&(0x7f0000000000)="112200", 0x3)
|
||||
`},
|
||||
*/
|
||||
// Mutate data (change byte).
|
||||
{`
|
||||
mutate4(&(0x7f0000000000)="1122", 0x2)
|
||||
|
@ -19,7 +19,7 @@ func parseKernelObject(obj string) (map[string]*dwarf.StructType, error) {
|
||||
var sections []*elf.Section
|
||||
for _, sec := range file.Sections {
|
||||
// We don't need these for our purposes and dropping them speeds up parsing a lot.
|
||||
//nolint:misspell
|
||||
// nolint:misspell
|
||||
if sec.Name == ".debug_line" || strings.HasPrefix(sec.Name, ".rela.") {
|
||||
continue
|
||||
}
|
||||
|
@ -63,9 +63,12 @@ func run(p *analysis.Pass) (interface{}, error) {
|
||||
for _, file := range pass.Files {
|
||||
ast.Inspect(file, func(n ast.Node) bool {
|
||||
switch n := n.(type) {
|
||||
case *ast.Comment:
|
||||
pass.checkMulitlineComments(n)
|
||||
pass.checkCommentSpace(n)
|
||||
case *ast.File:
|
||||
for _, group := range n.Comments {
|
||||
for _, comment := range group.List {
|
||||
pass.checkComment(comment)
|
||||
}
|
||||
}
|
||||
case *ast.BinaryExpr:
|
||||
pass.checkStringLenCompare(n)
|
||||
case *ast.FuncType:
|
||||
@ -94,19 +97,17 @@ func (pass *Pass) typ(e ast.Expr) types.Type {
|
||||
return pass.TypesInfo.Types[e].Type
|
||||
}
|
||||
|
||||
// checkMulitlineComments warns about C++-style multiline comments.
|
||||
// We don't use them in the codebase.
|
||||
func (pass *Pass) checkMulitlineComments(n *ast.Comment) {
|
||||
if !strings.HasPrefix(n.Text, "/*") {
|
||||
// checkComment warns about C++-style multiline comments (we don't use them in the codebase)
|
||||
// and about "//nospace", "// tabs and spaces" and similar.
|
||||
func (pass *Pass) checkComment(n *ast.Comment) {
|
||||
if strings.HasPrefix(n.Text, "/*") {
|
||||
pass.report(n, "Use C-style comments // instead of /* */")
|
||||
return
|
||||
}
|
||||
pass.report(n, "Use C-style comments // instead of /* */")
|
||||
}
|
||||
|
||||
// checkCommentSpace warns about "//nospace", "// tabs and spaces" and similar.
|
||||
func (pass *Pass) checkCommentSpace(n *ast.Comment) {
|
||||
if !strings.HasPrefix(n.Text, "//") ||
|
||||
allowedComments.MatchString(n.Text) {
|
||||
if allowedComments.MatchString(n.Text) {
|
||||
return
|
||||
}
|
||||
if strings.HasPrefix(n.Text, "//go:generate") {
|
||||
return
|
||||
}
|
||||
pass.report(n, "Use either //<one-or-more-spaces>comment or //<one-or-more-tabs>comment format for comments")
|
||||
|
@ -32,8 +32,12 @@ func returnString() string { return "foo" }
|
||||
// Tab and spaces. // want "Use either //<one-or-more-spaces>comment or //<one-or-more-tabs>comment format for comments"
|
||||
// Space and tab. // want "Use either //<one-or-more-spaces>comment or //<one-or-more-tabs>comment format for comments"
|
||||
func checkCommentSpace() {
|
||||
// Comment without a dot at the end
|
||||
checkCommentSpace()
|
||||
}
|
||||
|
||||
//No space. // want "Use either //<one-or-more-spaces>comment or //<one-or-more-tabs>comment format for comments"
|
||||
|
||||
func funcArgsGood(a, b int) (int, int) {
|
||||
return 0, 0
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user