Add schema-based rules for package data of package index · arduino/arduino-lint@a60ecef (original) (raw)

`@@ -2925,8 +2925,248 @@ var configurations = []Type{

`

2925

2925

`ProjectType: projecttype.PackageIndex,

`

2926

2926

`SuperprojectType: projecttype.All,

`

2927

2927

`Category: "data",

`

2928

``

`-

Subcategory: "package",

`

``

2928

`+

Subcategory: "root",

`

2929

2929

`ID: "ID003",

`

``

2930

`+

Brief: "Additional properties in root",

`

``

2931

`+

Description: "",

`

``

2932

`+

MessageTemplate: "Unknown properties found in package index root.",

`

``

2933

`+

DisableModes: nil,

`

``

2934

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

2935

`+

InfoModes: nil,

`

``

2936

`+

WarningModes: nil,

`

``

2937

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

2938

`+

RuleFunction: rulefunction.PackageIndexAdditionalProperties,

`

``

2939

`+

},

`

``

2940

`+

{

`

``

2941

`+

ProjectType: projecttype.PackageIndex,

`

``

2942

`+

SuperprojectType: projecttype.All,

`

``

2943

`+

Category: "data",

`

``

2944

`+

Subcategory: "package",

`

``

2945

`+

ID: "IA001",

`

``

2946

`+

Brief: "packages[] missing",

`

``

2947

`+

Description: "",

`

``

2948

`+

MessageTemplate: "Missing packages property.",

`

``

2949

`+

DisableModes: nil,

`

``

2950

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

2951

`+

InfoModes: nil,

`

``

2952

`+

WarningModes: nil,

`

``

2953

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

2954

`+

RuleFunction: rulefunction.PackageIndexPackagesMissing,

`

``

2955

`+

},

`

``

2956

`+

{

`

``

2957

`+

ProjectType: projecttype.PackageIndex,

`

``

2958

`+

SuperprojectType: projecttype.All,

`

``

2959

`+

Category: "data",

`

``

2960

`+

Subcategory: "package",

`

``

2961

`+

ID: "IA002",

`

``

2962

`+

Brief: "Incorrect packages type",

`

``

2963

`+

Description: "",

`

``

2964

`+

MessageTemplate: "packages property has incorrect type.",

`

``

2965

`+

DisableModes: nil,

`

``

2966

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

2967

`+

InfoModes: nil,

`

``

2968

`+

WarningModes: nil,

`

``

2969

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

2970

`+

RuleFunction: rulefunction.PackageIndexPackagesIncorrectType,

`

``

2971

`+

},

`

``

2972

`+

{

`

``

2973

`+

ProjectType: projecttype.PackageIndex,

`

``

2974

`+

SuperprojectType: projecttype.All,

`

``

2975

`+

Category: "data",

`

``

2976

`+

Subcategory: "root",

`

``

2977

`+

ID: "IA003",

`

``

2978

`+

Brief: "Additional properties in packages",

`

``

2979

`+

Description: "",

`

``

2980

`+

MessageTemplate: "Unknown properties found in package(s): {{.}}",

`

``

2981

`+

DisableModes: nil,

`

``

2982

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

2983

`+

InfoModes: nil,

`

``

2984

`+

WarningModes: nil,

`

``

2985

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

2986

`+

RuleFunction: rulefunction.PackageIndexPackagesAdditionalProperties,

`

``

2987

`+

},

`

``

2988

`+

{

`

``

2989

`+

ProjectType: projecttype.PackageIndex,

`

``

2990

`+

SuperprojectType: projecttype.All,

`

``

2991

`+

Category: "data",

`

``

2992

`+

Subcategory: "package",

`

``

2993

`+

ID: "IA004",

`

``

2994

`+

Brief: "packages[].name missing",

`

``

2995

`+

Description: "",

`

``

2996

`+

MessageTemplate: "Missing packages[].name property in package(s): {{.}}",

`

``

2997

`+

DisableModes: nil,

`

``

2998

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

2999

`+

InfoModes: nil,

`

``

3000

`+

WarningModes: nil,

`

``

3001

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3002

`+

RuleFunction: rulefunction.PackageIndexPackagesNameMissing,

`

``

3003

`+

},

`

``

3004

`+

{

`

``

3005

`+

ProjectType: projecttype.PackageIndex,

`

``

3006

`+

SuperprojectType: projecttype.All,

`

``

3007

`+

Category: "data",

`

``

3008

`+

Subcategory: "package",

`

``

3009

`+

ID: "IA005",

`

``

3010

`+

Brief: "Incorrect packages[].name type",

`

``

3011

`+

Description: "The name value must be a string.",

`

``

3012

`+

MessageTemplate: "packages[].name property has incorrect type in package(s): {{.}}",

`

``

3013

`+

DisableModes: nil,

`

``

3014

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3015

`+

InfoModes: nil,

`

``

3016

`+

WarningModes: nil,

`

``

3017

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3018

`+

RuleFunction: rulefunction.PackageIndexPackagesNameIncorrectType,

`

``

3019

`+

},

`

``

3020

`+

{

`

``

3021

`+

ProjectType: projecttype.PackageIndex,

`

``

3022

`+

SuperprojectType: projecttype.All,

`

``

3023

`+

Category: "data",

`

``

3024

`+

Subcategory: "package",

`

``

3025

`+

ID: "IA006",

`

``

3026

`+

Brief: "packages[].name < min length",

`

``

3027

`+

Description: "",

`

``

3028

`+

MessageTemplate: "packages[].name value less than the minimum length in package(s): {{.}}",

`

``

3029

`+

DisableModes: nil,

`

``

3030

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3031

`+

InfoModes: nil,

`

``

3032

`+

WarningModes: nil,

`

``

3033

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3034

`+

RuleFunction: rulefunction.PackageIndexPackagesNameLTMinLength,

`

``

3035

`+

},

`

``

3036

`+

{

`

``

3037

`+

ProjectType: projecttype.PackageIndex,

`

``

3038

`+

SuperprojectType: projecttype.All,

`

``

3039

`+

Category: "data",

`

``

3040

`+

Subcategory: "package",

`

``

3041

`+

ID: "IA007",

`

``

3042

`+

Brief: "packages[].name is arduino",

`

``

3043

`+

Description: "Case insensitive.",

`

``

3044

`+

MessageTemplate: "packages[].name value is "arduino" in package {{.}}. This name is reserved for official packages.",

`

``

3045

`+

DisableModes: []rulemode.Type{rulemode.Official},

`

``

3046

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3047

`+

InfoModes: nil,

`

``

3048

`+

WarningModes: []rulemode.Type{rulemode.Permissive},

`

``

3049

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3050

`+

RuleFunction: rulefunction.PackageIndexPackagesNameIsArduino,

`

``

3051

`+

},

`

``

3052

`+

{

`

``

3053

`+

ProjectType: projecttype.PackageIndex,

`

``

3054

`+

SuperprojectType: projecttype.All,

`

``

3055

`+

Category: "data",

`

``

3056

`+

Subcategory: "package",

`

``

3057

`+

ID: "IA008",

`

``

3058

`+

Brief: "packages[].maintainer missing",

`

``

3059

`+

Description: "",

`

``

3060

`+

MessageTemplate: "Missing packages[].maintainer property in package(s): {{.}}",

`

``

3061

`+

DisableModes: nil,

`

``

3062

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3063

`+

InfoModes: nil,

`

``

3064

`+

WarningModes: nil,

`

``

3065

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3066

`+

RuleFunction: rulefunction.PackageIndexPackagesMaintainerMissing,

`

``

3067

`+

},

`

``

3068

`+

{

`

``

3069

`+

ProjectType: projecttype.PackageIndex,

`

``

3070

`+

SuperprojectType: projecttype.All,

`

``

3071

`+

Category: "data",

`

``

3072

`+

Subcategory: "package",

`

``

3073

`+

ID: "IA009",

`

``

3074

`+

Brief: "Incorrect packages[].maintainer type",

`

``

3075

`+

Description: "The maintainer value must be a string.",

`

``

3076

`+

MessageTemplate: "packages[].maintainer property has incorrect type in package(s): {{.}}",

`

``

3077

`+

DisableModes: nil,

`

``

3078

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3079

`+

InfoModes: nil,

`

``

3080

`+

WarningModes: nil,

`

``

3081

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3082

`+

RuleFunction: rulefunction.PackageIndexPackagesMaintainerIncorrectType,

`

``

3083

`+

},

`

``

3084

`+

{

`

``

3085

`+

ProjectType: projecttype.PackageIndex,

`

``

3086

`+

SuperprojectType: projecttype.All,

`

``

3087

`+

Category: "data",

`

``

3088

`+

Subcategory: "package",

`

``

3089

`+

ID: "IA010",

`

``

3090

`+

Brief: "packages[].maintainer < min length",

`

``

3091

`+

Description: "",

`

``

3092

`+

MessageTemplate: "packages[].maintainer value less than the minimum length in package(s): {{.}}",

`

``

3093

`+

DisableModes: nil,

`

``

3094

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3095

`+

InfoModes: nil,

`

``

3096

`+

WarningModes: nil,

`

``

3097

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3098

`+

RuleFunction: rulefunction.PackageIndexPackagesMaintainerLTMinLength,

`

``

3099

`+

},

`

``

3100

`+

{

`

``

3101

`+

ProjectType: projecttype.PackageIndex,

`

``

3102

`+

SuperprojectType: projecttype.All,

`

``

3103

`+

Category: "data",

`

``

3104

`+

Subcategory: "package",

`

``

3105

`+

ID: "IA011",

`

``

3106

`+

Brief: "packages[].maintainer starts with "arduino"",

`

``

3107

`+

Description: "Case insensitive.",

`

``

3108

`+

MessageTemplate: "packages[].maintainer value starts with "arduino" in package(s): {{.}}. 3rd party packages are not maintained by Arduino.",

`

``

3109

`+

DisableModes: []rulemode.Type{rulemode.Official},

`

``

3110

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3111

`+

InfoModes: nil,

`

``

3112

`+

WarningModes: []rulemode.Type{rulemode.Default},

`

``

3113

`+

ErrorModes: []rulemode.Type{rulemode.Strict},

`

``

3114

`+

RuleFunction: rulefunction.PackageIndexPackagesMaintainerStartsWithArduino,

`

``

3115

`+

},

`

``

3116

`+

{

`

``

3117

`+

ProjectType: projecttype.PackageIndex,

`

``

3118

`+

SuperprojectType: projecttype.All,

`

``

3119

`+

Category: "data",

`

``

3120

`+

Subcategory: "package",

`

``

3121

`+

ID: "IA012",

`

``

3122

`+

Brief: "packages[].websiteURL missing",

`

``

3123

`+

Description: "",

`

``

3124

`+

MessageTemplate: "Missing packages[].websiteURL property in package(s): {{.}}",

`

``

3125

`+

DisableModes: nil,

`

``

3126

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3127

`+

InfoModes: nil,

`

``

3128

`+

WarningModes: nil,

`

``

3129

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3130

`+

RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLMissing,

`

``

3131

`+

},

`

``

3132

`+

{

`

``

3133

`+

ProjectType: projecttype.PackageIndex,

`

``

3134

`+

SuperprojectType: projecttype.All,

`

``

3135

`+

Category: "data",

`

``

3136

`+

Subcategory: "package",

`

``

3137

`+

ID: "IA013",

`

``

3138

`+

Brief: "Incorrect packages[].websiteURL type",

`

``

3139

`+

Description: "Must be a string.",

`

``

3140

`+

MessageTemplate: "packages[].websiteURL property has incorrect type in package(s): {{.}}",

`

``

3141

`+

DisableModes: nil,

`

``

3142

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3143

`+

InfoModes: nil,

`

``

3144

`+

WarningModes: nil,

`

``

3145

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3146

`+

RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLIncorrectType,

`

``

3147

`+

},

`

``

3148

`+

{

`

``

3149

`+

ProjectType: projecttype.PackageIndex,

`

``

3150

`+

SuperprojectType: projecttype.All,

`

``

3151

`+

Category: "data",

`

``

3152

`+

Subcategory: "package",

`

``

3153

`+

ID: "IA014",

`

``

3154

`+

Brief: "Invalid packages[].websiteURL format",

`

``

3155

`+

Description: "",

`

``

3156

`+

MessageTemplate: "packages[].websiteURL property does not have a valid URL format in package(s): {{.}}",

`

``

3157

`+

DisableModes: nil,

`

``

3158

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3159

`+

InfoModes: nil,

`

``

3160

`+

WarningModes: nil,

`

``

3161

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3162

`+

RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLInvalidFormat,

`

``

3163

`+

},

`

``

3164

`+

{

`

``

3165

`+

ProjectType: projecttype.PackageIndex,

`

``

3166

`+

SuperprojectType: projecttype.All,

`

``

3167

`+

Category: "data",

`

``

3168

`+

Subcategory: "package",

`

``

3169

`+

ID: "IA015",

`

2930

3170

`Brief: "dead packages[].websiteURL",

`

2931

3171

`Description: "",

`

2932

3172

`MessageTemplate: "Unable to load the packages[].websiteURL URL for package(s): {{.}}",

`

`@@ -2942,7 +3182,119 @@ var configurations = []Type{

`

2942

3182

`SuperprojectType: projecttype.All,

`

2943

3183

`Category: "data",

`

2944

3184

`Subcategory: "package",

`

2945

``

`-

ID: "ID004",

`

``

3185

`+

ID: "IA016",

`

``

3186

`+

Brief: "packages[].email missing",

`

``

3187

`+

Description: "",

`

``

3188

`+

MessageTemplate: "Missing packages[].email property in package(s): {{.}}",

`

``

3189

`+

DisableModes: nil,

`

``

3190

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3191

`+

InfoModes: nil,

`

``

3192

`+

WarningModes: nil,

`

``

3193

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3194

`+

RuleFunction: rulefunction.PackageIndexPackagesEmailMissing,

`

``

3195

`+

},

`

``

3196

`+

{

`

``

3197

`+

ProjectType: projecttype.PackageIndex,

`

``

3198

`+

SuperprojectType: projecttype.All,

`

``

3199

`+

Category: "data",

`

``

3200

`+

Subcategory: "package",

`

``

3201

`+

ID: "IA017",

`

``

3202

`+

Brief: "Incorrect packages[].email type",

`

``

3203

`+

Description: "Must be a string.",

`

``

3204

`+

MessageTemplate: "packages[].email property has incorrect type in package(s): {{.}}",

`

``

3205

`+

DisableModes: nil,

`

``

3206

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3207

`+

InfoModes: nil,

`

``

3208

`+

WarningModes: nil,

`

``

3209

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3210

`+

RuleFunction: rulefunction.PackageIndexPackagesEmailIncorrectType,

`

``

3211

`+

},

`

``

3212

`+

{

`

``

3213

`+

ProjectType: projecttype.PackageIndex,

`

``

3214

`+

SuperprojectType: projecttype.All,

`

``

3215

`+

Category: "data",

`

``

3216

`+

Subcategory: "package",

`

``

3217

`+

ID: "IA018",

`

``

3218

`+

Brief: "Incorrect packages[].help type",

`

``

3219

`+

Description: "Must be a string.",

`

``

3220

`+

MessageTemplate: "packages[].help property has incorrect type in package(s): {{.}}",

`

``

3221

`+

DisableModes: nil,

`

``

3222

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3223

`+

InfoModes: nil,

`

``

3224

`+

WarningModes: nil,

`

``

3225

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3226

`+

RuleFunction: rulefunction.PackageIndexPackagesHelpIncorrectType,

`

``

3227

`+

},

`

``

3228

`+

{

`

``

3229

`+

ProjectType: projecttype.PackageIndex,

`

``

3230

`+

SuperprojectType: projecttype.All,

`

``

3231

`+

Category: "data",

`

``

3232

`+

Subcategory: "root",

`

``

3233

`+

ID: "IA019",

`

``

3234

`+

Brief: "Additional properties in packages[].help",

`

``

3235

`+

Description: "",

`

``

3236

`+

MessageTemplate: "Unknown properties under packages[].help found in package(s): {{.}}",

`

``

3237

`+

DisableModes: nil,

`

``

3238

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3239

`+

InfoModes: nil,

`

``

3240

`+

WarningModes: nil,

`

``

3241

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3242

`+

RuleFunction: rulefunction.PackageIndexPackagesHelpAdditionalProperties,

`

``

3243

`+

},

`

``

3244

`+

{

`

``

3245

`+

ProjectType: projecttype.PackageIndex,

`

``

3246

`+

SuperprojectType: projecttype.All,

`

``

3247

`+

Category: "data",

`

``

3248

`+

Subcategory: "package",

`

``

3249

`+

ID: "IA020",

`

``

3250

`+

Brief: "packages[].help.online missing",

`

``

3251

`+

Description: "",

`

``

3252

`+

MessageTemplate: "Missing packages[].help.online property in package(s): {{.}}",

`

``

3253

`+

DisableModes: nil,

`

``

3254

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3255

`+

InfoModes: nil,

`

``

3256

`+

WarningModes: nil,

`

``

3257

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3258

`+

RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineMissing,

`

``

3259

`+

},

`

``

3260

`+

{

`

``

3261

`+

ProjectType: projecttype.PackageIndex,

`

``

3262

`+

SuperprojectType: projecttype.All,

`

``

3263

`+

Category: "data",

`

``

3264

`+

Subcategory: "package",

`

``

3265

`+

ID: "IA021",

`

``

3266

`+

Brief: "Incorrect packages[].help.online type",

`

``

3267

`+

Description: "Must be a string.",

`

``

3268

`+

MessageTemplate: "packages[].help.online property has incorrect type in package(s): {{.}}",

`

``

3269

`+

DisableModes: nil,

`

``

3270

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3271

`+

InfoModes: nil,

`

``

3272

`+

WarningModes: nil,

`

``

3273

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3274

`+

RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineIncorrectType,

`

``

3275

`+

},

`

``

3276

`+

{

`

``

3277

`+

ProjectType: projecttype.PackageIndex,

`

``

3278

`+

SuperprojectType: projecttype.All,

`

``

3279

`+

Category: "data",

`

``

3280

`+

Subcategory: "package",

`

``

3281

`+

ID: "IA022",

`

``

3282

`+

Brief: "Invalid packages[].help.online format",

`

``

3283

`+

Description: "",

`

``

3284

`+

MessageTemplate: "packages[].help.online property does not have a valid URL format in package(s): {{.}}",

`

``

3285

`+

DisableModes: nil,

`

``

3286

`+

EnableModes: []rulemode.Type{rulemode.Default},

`

``

3287

`+

InfoModes: nil,

`

``

3288

`+

WarningModes: nil,

`

``

3289

`+

ErrorModes: []rulemode.Type{rulemode.Default},

`

``

3290

`+

RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineInvalidFormat,

`

``

3291

`+

},

`

``

3292

`+

{

`

``

3293

`+

ProjectType: projecttype.PackageIndex,

`

``

3294

`+

SuperprojectType: projecttype.All,

`

``

3295

`+

Category: "data",

`

``

3296

`+

Subcategory: "package",

`

``

3297

`+

ID: "IA023",

`

2946

3298

`Brief: "dead packages[].help.online",

`

2947

3299

`Description: "",

`

2948

3300

`MessageTemplate: "Unable to load the packages[].help.online URL for package(s): {{.}}",

`