{"record":{"id":"af094d9da789e80a","repo":"git-ecosystem/git-credential-manager","slug":"argument-cannot-be-empty","errorCode":null,"errorMessage":"Argument cannot be empty.","messagePattern":"Argument cannot be empty\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Core/EnsureArgument.cs","lineNumber":21,"sourceCode":"namespace GitCredentialManager\n{\n    public static class EnsureArgument\n    {\n        public static void NotNull<T>(T arg, string name)\n        {\n            if (arg is null)\n            {\n                throw new ArgumentNullException(name);\n            }\n        }\n\n        public static void NotNullOrEmpty(string arg, string name)\n        {\n            NotNull(arg, name);\n\n            if (string.IsNullOrEmpty(arg))\n            {\n                throw new ArgumentException(\"Argument cannot be empty.\", name);\n            }\n        }\n\n        public static void NotNullOrWhiteSpace(string arg, string name)\n        {\n            NotNull(arg, name);\n\n            if (string.IsNullOrWhiteSpace(arg))\n            {\n                throw new ArgumentException(\"Argument cannot be empty or white space.\", name);\n            }\n        }\n\n        public static void AbsoluteUri(Uri arg, string name)\n        {\n            NotNull(arg, name);\n\n            if (!arg.IsAbsoluteUri)","sourceCodeStart":3,"sourceCodeEnd":39,"githubUrl":"https://github.com/git-ecosystem/git-credential-manager/blob/e8ce762cd04b4100ae637b5fbf39ef9d0a96561e/src/Core/EnsureArgument.cs#L3-L39","documentation":"EnsureArgument.NotNullOrEmpty first delegates to NotNull (throwing ArgumentNullException for null) and then throws ArgumentException(\"Argument cannot be empty.\", name) when the string is empty. It is GCM's standard guard for required string arguments that must carry content.","triggerScenarios":"Passing \"\" (empty string, not null) to any GCM API guarded by EnsureArgument.NotNullOrEmpty — e.g. empty host names, empty account/credential fields, or empty config values read from settings.","commonSituations":"Empty environment variables or .gitconfig values (set but blank) passed into GCM; splitting/parsing operations yielding empty strings; UI or scripts passing empty arguments to credential operations.","solutions":["Identify the offending parameter from the ArgumentException ParamName and ensure the caller supplies a non-empty value.","Coerce empty settings to a meaningful default before calling the API.","Trim and validate user/script input before passing it to GCM."],"exampleFix":"// before\nEnsureArgument.NotNullOrEmpty(userName, nameof(userName)); // userName == \"\"\n// after\nif (string.IsNullOrWhiteSpace(userName)) userName = Environment.UserName;\nEnsureArgument.NotNullOrEmpty(userName, nameof(userName));","handlingStrategy":"validation","validationCode":"if (typeof arg !== 'string' || arg.length === 0) {\n  throw new Error(`Required string argument '${name}' must be non-empty`);\n}","typeGuard":"function isNonEmptyString(v: unknown): v is string {\n  return typeof v === 'string' && v.length > 0;\n}","tryCatchPattern":"try {\n  gcmApi(value, name);\n} catch (ArgumentException ex) when (ex.ParamName == name) {\n  // supply a default or surface a user-facing validation message\n}","preventionTips":["Treat blank env vars and .gitconfig values as unset and substitute defaults","Trim user input and reject empty strings at the boundary","Use string.IsNullOrWhiteSpace checks before calling guarded APIs"],"tags":["dotnet","empty-string","argument-validation","argumentexception"],"backgroundTag":"empty-required-field","analyzedSha":"e8ce762cd04b4100ae637b5fbf39ef9d0a96561e","analyzedAt":"2026-09-11T17:15:08.753Z","contentChangedAt":"2026-09-11T17:15:08.753Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}