{"record":{"id":"1537216bdc884aa7","repo":"chenhg5/cc-connect","slug":"invalid-limit-q","errorCode":null,"errorMessage":"invalid --limit %q","messagePattern":"invalid --limit %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cc-connect/tuitui.go","lineNumber":305,"sourceCode":"\t\tcase \"--end-time\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err\n\t\t\t}\n\t\t\topts.endTime = v\n\t\tcase \"--cursor\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err\n\t\t\t}\n\t\t\topts.cursor = v\n\t\tcase \"--limit\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err\n\t\t\t}\n\t\t\tif _, err := fmt.Sscanf(v, \"%d\", &opts.limit); err != nil {\n\t\t\t\treturn opts, fmt.Errorf(\"invalid --limit %q\", v)\n\t\t\t}\n\t\tcase \"--order-asc\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err\n\t\t\t}\n\t\t\tb := strings.EqualFold(v, \"true\") || v == \"1\" || strings.EqualFold(v, \"yes\")\n\t\t\topts.orderAsc = &b\n\t\tcase \"--q\", \"--query\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err\n\t\t\t}\n\t\t\topts.query = v\n\t\tcase \"--url\":\n\t\t\tv, err := value()\n\t\t\tif err != nil {\n\t\t\t\treturn opts, err","sourceCodeStart":287,"sourceCodeEnd":323,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/cmd/cc-connect/tuitui.go#L287-L323","documentation":"The --limit flag is parsed with fmt.Sscanf(\"%d\"); anything that is not a leading integer fails and produces \"invalid --limit %q\". Note Sscanf accepts leading sign/whitespace and stops at first non-digit, so values like \"10abc\" parse as 10 without error.","triggerScenarios":"`--limit abc`, `--limit \"\"` (quoted empty), or any non-integer string passed to runTuiTuiMessages/runTuiTuiDownload/runTuiTuiPost via parseTuiTuiArgs.","commonSituations":"Typos in numeric flag; passing a count with a suffix like \"1k\" or \"10 messages\"; locale-formatted numbers.","solutions":["Pass a plain integer: --limit 50","Remove suffixes/units from the value","Check quoting — an accidental \"\" yields an empty string"],"exampleFix":"// before\ncc-connect tuitui messages --limit 10x\n// after\ncc-connect tuitui messages --limit 10","handlingStrategy":"validation","validationCode":"if n, err := strconv.Atoi(v); err != nil || n < 0 {\n\treturn fmt.Errorf(\"invalid --limit %q\", v)\n}","typeGuard":null,"tryCatchPattern":"if _, err := parseTuiTuiArgs(args); err != nil {\n\tif strings.HasPrefix(err.Error(), \"invalid --limit\") {\n\t\tfmt.Fprintf(os.Stderr, \"usage: --limit <int>\\n\")\n\t}\n}","preventionTips":["Pass plain integers without units or suffixes","Avoid Sscanf's permissiveness — prefer strconv.Atoi for strict parsing","Sanity-check flag values in shell scripts before invoking"],"tags":["cli","flag","validation"],"backgroundTag":"invalid-flag-value","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}