Skip to content

Commit 39354ed

Browse files
committed
unusedchecker, disable for "_", support new schema export
1 parent a374dc8 commit 39354ed

File tree

6 files changed

+39
-7
lines changed

6 files changed

+39
-7
lines changed

EmmyLua.LanguageServer/ExecuteCommand/Commands/AutoRequire.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public async Task ExecuteAsync(List<LSPAny>? parameters, CommandExecutor executo
5454

5555
var module = executor.Context.LuaProject.ModuleManager.GetModuleInfo(needRequireId);
5656
if (module is null) return;
57-
var convention = executor.Context.SettingManager.Setting?.Completion.AutoRequireFilenameConvention
57+
var convention = executor.Context.SettingManager.Setting?.Completion.AutoRequireNamingConvention
5858
?? FilenameConvention.SnakeCase;
5959
var id = FilenameConverter.ConvertToIdentifier(module.Name, convention);
6060
var requireFunction = executor.Context.SettingManager

EmmyLua.LanguageServer/Util/SettingManagerExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static CompletionConfig GetCompletionConfig(this SettingManager settingMa
1616

1717
config.AutoRequire = setting.Completion.AutoRequire;
1818
config.CallSnippet = setting.Completion.CallSnippet;
19-
config.AutoRequireFilenameConvention = setting.Completion.AutoRequireFilenameConvention;
19+
config.AutoRequireFilenameConvention = setting.Completion.AutoRequireNamingConvention;
2020

2121
return config;
2222
}

EmmyLua/CodeAnalysis/Diagnostics/Checkers/UnusedChecker.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using EmmyLua.CodeAnalysis.Compilation;
2+
23
namespace EmmyLua.CodeAnalysis.Diagnostics.Checkers;
34

45
public class UnusedChecker(LuaCompilation compilation) : DiagnosticCheckerBase(compilation, [DiagnosticCode.Unused])
@@ -11,6 +12,11 @@ public override void Check(DiagnosticContext context)
1112
{
1213
if (luaDeclaration.IsLocal && context.SearchContext.FindReferences(luaDeclaration).Count() <= 1)
1314
{
15+
if (luaDeclaration.Name == "_")
16+
{
17+
continue;
18+
}
19+
1420
if (luaDeclaration.Info.Ptr.ToNode(context.SearchContext) is { } node)
1521
{
1622
context.Report(

EmmyLua/Configuration/ConfigSchema.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class Completion
5151
public string AutoRequireFunction { get; set; } = "require";
5252

5353
[JsonPropertyName("autoRequireNamingConvention")]
54-
public FilenameConvention AutoRequireFilenameConvention { get; set; } = FilenameConvention.SnakeCase;
54+
public FilenameConvention AutoRequireNamingConvention { get; set; } = FilenameConvention.SnakeCase;
5555

5656
[JsonPropertyName("callSnippet")]
5757
public bool CallSnippet { get; set; } = false;
@@ -214,8 +214,8 @@ public class Workspace
214214
".idea",
215215
".vs",
216216
".vscode"
217-
];
218-
217+
];
218+
219219
[JsonPropertyName("ignoreGlobs")]
220220
public List<string> IgnoreGlobs { get; set; } = [];
221221

EmmyLua/Resources/schema.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@
7878
"no-discard",
7979
"disable-global-define",
8080
"undefined-field",
81-
"local-const-reassign"
81+
"local-const-reassign",
82+
"duplicate-type"
8283
]
8384
}
8485
},
@@ -178,6 +179,9 @@
178179
"local-const-reassign": {
179180
"$ref": "#/definitions/Diagnostics/properties/severity/properties/none"
180181
},
182+
"duplicate-type": {
183+
"$ref": "#/definitions/Diagnostics/properties/severity/properties/none"
184+
},
181185
"*": {
182186
"$ref": "#/definitions/Diagnostics/properties/severity/properties/none"
183187
}
@@ -209,7 +213,8 @@
209213
"no-discard",
210214
"disable-global-define",
211215
"undefined-field",
212-
"local-const-reassign"
216+
"local-const-reassign",
217+
"duplicate-type"
213218
]
214219
}
215220
}

Util.Gen/Generator/SchemaGenerator.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using System.Reflection;
22
using System.Runtime.Serialization;
33
using EmmyLua.Configuration;
4+
using Newtonsoft.Json;
45
using Newtonsoft.Json.Schema;
56
using Newtonsoft.Json.Schema.Generation;
7+
using Newtonsoft.Json.Serialization;
68

79

810
namespace Util.Gen.Generator;
@@ -12,6 +14,11 @@ public class SchemaGenerator : IGenerator
1214
public void Generate(string projectRoot)
1315
{
1416
var generator = new JSchemaGenerator();
17+
18+
generator.ContractResolver = new RequiredPropertiesContractResolver()
19+
{
20+
NamingStrategy = new CamelCaseNamingStrategy()
21+
};
1522
generator.GenerationProviders.Add(new StringEnumGenerationProvider());
1623
generator.GenerationProviders.Add(new EnumKeyDictionaryGenerationProvider());
1724
var schema = generator.Generate(typeof(Setting));
@@ -20,6 +27,20 @@ public void Generate(string projectRoot)
2027
}
2128
}
2229

30+
public class RequiredPropertiesContractResolver : DefaultContractResolver
31+
{
32+
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
33+
{
34+
var property = base.CreateProperty(member, memberSerialization);
35+
property.Required = Required.Default;
36+
if (property.PropertyName == "schema")
37+
{
38+
property.PropertyName = "$schema";
39+
}
40+
return property;
41+
}
42+
}
43+
2344
public class EnumKeyDictionaryGenerationProvider : JSchemaGenerationProvider
2445
{
2546
public override JSchema GetSchema(JSchemaTypeGenerationContext context)

0 commit comments

Comments
 (0)