Skip to content

Commit 9ad89a3

Browse files
committed
命名风格检查施工中
1 parent 2154329 commit 9ad89a3

File tree

11 files changed

+161
-134
lines changed

11 files changed

+161
-134
lines changed

CodeService/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ target_sources(CodeService
5858
${CodeService_SOURCE_DIR}/src/LanguageTranslator.cpp
5959
${CodeService_SOURCE_DIR}/src/NameStyle/NameStyleChecker.cpp
6060
${CodeService_SOURCE_DIR}/src/NameStyle/NameStyleRuleMatcher.cpp
61+
${CodeService_SOURCE_DIR}/src/NameStyle/CheckElement.cpp
6162
)
6263

6364
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")

CodeService/src/LuaEditorConfig.cpp

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "Util/StringUtil.h"
88
#include "CodeService/FormatElement/KeepElement.h"
99
#include "CodeService/FormatElement/MinLineElement.h"
10+
#include "CodeService/NameStyle/NameStyleRuleMatcher.h"
1011

1112
std::string dirPath(std::string& filePath)
1213
{
@@ -295,34 +296,19 @@ void LuaEditorConfig::ParseFromSection(std::shared_ptr<LuaCodeStyleOptions> opti
295296
options->enable_name_style_check = configMap.at("enable_name_style_check") == "true";
296297
}
297298
//
298-
// std::vector<std::pair<std::string, NameStyle&>> styleList = {
299-
// {"local_name_define_style", options->local_name_define_style},
300-
// {"function_name_define_style", options->function_name_define_style},
301-
// {"table_field_name_define_style", options->table_field_name_define_style},
302-
// {"global_variable_name_define_style", options->table_field_name_define_style}
303-
// };
304-
//
305-
// for (auto& styleOption : styleList)
306-
// {
307-
// if (configMap.count(styleOption.first))
308-
// {
309-
// std::string value = configMap.at(styleOption.first);
310-
// if (value == "off")
311-
// {
312-
// styleOption.second = NameStyle::Off;
313-
// }
314-
// else if (value == "snake_case")
315-
// {
316-
// styleOption.second = NameStyle::SnakeCase;
317-
// }
318-
// else if (value == "camel_case")
319-
// {
320-
// styleOption.second = NameStyle::CamelCase;
321-
// }
322-
// else if (value == "pascal_case")
323-
// {
324-
// styleOption.second = NameStyle::PascalCase;
325-
// }
326-
// }
327-
// }
299+
std::vector<std::pair<std::string, std::shared_ptr<NameStyleRuleMatcher>&>> styleList = {
300+
{"local_name_define_style", options->local_name_define_style},
301+
{"function_name_define_style", options->function_name_define_style},
302+
{"table_field_name_define_style", options->table_field_name_define_style},
303+
{"global_variable_name_define_style", options->table_field_name_define_style}
304+
};
305+
306+
for (auto& styleOption : styleList)
307+
{
308+
if (configMap.count(styleOption.first))
309+
{
310+
std::string value = configMap.at(styleOption.first);
311+
styleOption.second = NameStyleRuleMatcher::ParseFrom(value);
312+
}
313+
}
328314
}

CodeService/src/LuaFormatter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ std::vector<LuaDiagnosisInfo> LuaFormatter::GetDiagnosisInfos()
7979
NameStyleChecker checker(ctx);
8080
auto chunkAst = _parser->GetAst();
8181
chunkAst->AcceptChildren(checker);
82-
auto result = checker.Analysis();
82+
checker.Analysis();
8383
}
8484

8585
return ctx.GetDiagnosisInfos();
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include "CodeService/NameStyle/CheckElement.h"
2+
3+
4+
CheckElement::CheckElement(NameDefineType type, std::shared_ptr<LuaAstNode> node,
5+
std::shared_ptr<LuaAstNode> extraInfoNode)
6+
: Type(type),
7+
Node(node),
8+
ExtraInfoNode(extraInfoNode)
9+
10+
{
11+
}

CodeService/src/NameStyle/NameStyleChecker.cpp

Lines changed: 46 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,66 @@
22
#include <algorithm>
33
#include "Util/format.h"
44
#include "CodeService/LanguageTranslator.h"
5-
6-
NameStyleChecker::CheckElement::CheckElement(NameDefineType type, std::shared_ptr<LuaAstNode> node,
7-
std::shared_ptr<LuaAstNode> extraInfoNode)
8-
: Type(type),
9-
Node(node),
10-
ExtraInfoNode(extraInfoNode)
11-
12-
{
13-
}
5+
#include "CodeService/NameStyle/NameStyleRuleMatcher.h"
146

157
NameStyleChecker::NameStyleChecker(DiagnosisContext& ctx)
168
: _ctx(ctx)
179
{
1810
}
1911

20-
std::vector<LuaDiagnosisInfo> NameStyleChecker::Analysis()
12+
void NameStyleChecker::Analysis()
2113
{
2214
for (auto checkElement : _nameStyleCheckVector)
2315
{
24-
if (checkElement->Type == NameDefineType::ModuleDefineName)
16+
switch (checkElement->Type)
2517
{
26-
auto parser = _ctx.GetParser();
27-
28-
auto filename = parser->GetFilename();
29-
30-
if (checkElement->Node->GetText() != filename)
18+
case NameDefineType::LocalVariableName:
19+
{
20+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
21+
break;
22+
}
23+
case NameDefineType::ModuleDefineName:
24+
{
25+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
26+
break;
27+
}
28+
case NameDefineType::LocalFunctionName:
29+
{
30+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
31+
break;
32+
}
33+
case NameDefineType::GlobalVariableDefineName:
34+
{
35+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
36+
break;
37+
}
38+
case NameDefineType::ParamName:
39+
{
40+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
41+
break;
42+
}
43+
case NameDefineType::ImportModuleName:
44+
{
45+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
46+
break;
47+
}
48+
case NameDefineType::ClassVariableName:
49+
{
50+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
51+
break;
52+
}
53+
case NameDefineType::FunctionDefineName:
54+
{
55+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
56+
break;
57+
}
58+
case NameDefineType::TableFieldDefineName:
3159
{
32-
_ctx.PushDiagnosis(format(LText("module name must be {}"), filename),
33-
checkElement->Node->GetTextRange());
60+
_ctx.GetOptions().local_name_define_style->Diagnosis(_ctx, checkElement);
61+
break;
3462
}
3563
}
3664
}
37-
// if (ctx.GetOptions().enable_name_style_check)
38-
// {
39-
// switch (_textDefineType)
40-
// {
41-
// case TextDefineType::LocalNameDefine:
42-
// {
43-
// if (!NameStyleCheck(ctx.GetOptions().local_name_define_style))
44-
// {
45-
// ctx.PushDiagnosis(format(
46-
// LText("local name define does not match {} name style"),
47-
// TranslateNameStyle(ctx.GetOptions().local_name_define_style)), _textRange);
48-
// }
49-
// break;
50-
// }
51-
// case TextDefineType::FunctionNameDefine:
52-
// {
53-
// if (!NameStyleCheck(ctx.GetOptions().function_name_define_style))
54-
// {
55-
// ctx.PushDiagnosis(format(
56-
// LText("function name define does not match {} name style"),
57-
// TranslateNameStyle(ctx.GetOptions().function_name_define_style)), _textRange);
58-
// }
59-
// break;
60-
// }
61-
// case TextDefineType::TableFieldNameDefine:
62-
// {
63-
// if (!NameStyleCheck(ctx.GetOptions().table_field_name_define_style))
64-
// {
65-
// ctx.PushDiagnosis(format(
66-
// LText("table field name define does not match {} name style"),
67-
// TranslateNameStyle(ctx.GetOptions().table_field_name_define_style)),
68-
// _textRange);
69-
// }
70-
// break;
71-
// }
72-
// default:
73-
// {
74-
// break;
75-
// }
76-
// }
77-
return {};
7865
}
7966

8067
void NameStyleChecker::VisitLocalStatement(const std::shared_ptr<LuaAstNode>& localStatement)

CodeService/src/NameStyle/NameStyleRuleMatcher.cpp

Lines changed: 54 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,56 +6,84 @@
66
std::shared_ptr<NameStyleRuleMatcher> NameStyleRuleMatcher::ParseFrom(std::string_view rule)
77
{
88
auto matcher = std::make_shared<NameStyleRuleMatcher>();
9-
matcher->SetRule(rule);
10-
matcher->ParseRule();
9+
matcher->ParseRule(rule);
1110
return matcher;
1211
}
1312

1413
NameStyleRuleMatcher::NameStyleRuleMatcher()
15-
: _tokenParser(nullptr)
1614
{
1715
}
1816

19-
void NameStyleRuleMatcher::SetRule(std::string_view rule)
17+
void NameStyleRuleMatcher::Diagnosis(DiagnosisContext& ctx, std::shared_ptr<CheckElement> checkElement)
2018
{
21-
_tokenParser = std::make_shared<LuaTokenParser>(std::string(rule));
19+
2220
}
2321

24-
void NameStyleRuleMatcher::ParseRule()
22+
void NameStyleRuleMatcher::ParseRule(std::string_view rule)
2523
{
26-
enum class ParseState
27-
{
28-
NamedRule,
29-
FunctionRule
30-
} state = ParseState::NamedRule;
24+
auto tokenParser = std::make_shared<LuaTokenParser>(std::string(rule));
3125

32-
while (_tokenParser->Current().TokenType != TK_EOS)
26+
while(tokenParser->Current().TokenType != TK_EOS)
3327
{
34-
auto type = _tokenParser->Current().TokenType;
35-
switch (state)
28+
if(tokenParser->Current().TokenType == TK_NAME)
3629
{
37-
case ParseState::NamedRule:
30+
auto& lookAhead = tokenParser->LookAhead();
31+
if(lookAhead.TokenType == '(')
3832
{
39-
if(type == TK_NAME)
33+
34+
35+
36+
37+
38+
39+
40+
41+
}
42+
else if(lookAhead.TokenType == TK_EOS || lookAhead.TokenType == '|')
43+
{
44+
auto currentText = tokenParser->Current().Text;
45+
if(currentText == "snake_case")
4046
{
41-
47+
_rulers.push_back(SnakeCase);
4248
}
43-
else if(type == '|')
49+
else if(currentText == "camel_case")
4450
{
45-
break;
51+
_rulers.push_back(CamelCase);
4652
}
47-
else if(type == '(')
53+
else if(currentText == "pascal_case")
4854
{
49-
state = ParseState::FunctionRule;
50-
55+
_rulers.push_back(PascalCase);
5156
}
52-
break;
5357
}
54-
case ParseState::FunctionRule:
58+
59+
if(lookAhead.TokenType == '|')
5560
{
56-
break;
61+
tokenParser->Next();
5762
}
63+
5864
}
59-
_tokenParser->Next();
65+
else // Óï·¨´íÎó
66+
{
67+
break;
68+
}
69+
70+
next:
71+
tokenParser->Next();
6072
}
6173
}
74+
75+
bool NameStyleRuleMatcher::SnakeCase(std::shared_ptr<CheckElement> checkElement)
76+
{
77+
}
78+
79+
bool NameStyleRuleMatcher::CamelCase(std::shared_ptr<CheckElement> checkElement)
80+
{
81+
}
82+
83+
bool NameStyleRuleMatcher::PascalCase(std::shared_ptr<CheckElement> checkElement)
84+
{
85+
}
86+
87+
bool NameStyleRuleMatcher::Same(std::shared_ptr<CheckElement> checkElement, std::vector<std::string>& param)
88+
{
89+
}

LuaParser/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,4 @@ target_sources(LuaParser PUBLIC
3030
${LuaParser_SOURCE_DIR}/src/LuaAstVisitor.cpp
3131

3232
${LuaParser_SOURCE_DIR}/src/LuaDefine.h
33-
${LuaParser_SOURCE_DIR}/src/LuaTokenTypeDetail.h
3433
)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
#include "CodeService/NameStyle/NameDefineType.h"
4+
#include "LuaParser/LuaAstNode.h"
5+
6+
class CheckElement
7+
{
8+
public:
9+
CheckElement(NameDefineType type, std::shared_ptr<LuaAstNode> node,
10+
std::shared_ptr<LuaAstNode> extraInfoNode = nullptr);
11+
NameDefineType Type;
12+
std::shared_ptr<LuaAstNode> Node;
13+
std::shared_ptr<LuaAstNode> ExtraInfoNode;
14+
};

include/CodeService/NameStyle/NameStyleChecker.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,11 @@
44
#include "LuaParser/LuaAstVisitor.h"
55
#include "CodeService/FormatElement/DiagnosisContext.h"
66
#include "NameDefineType.h"
7+
#include "CheckElement.h"
78

89
class NameStyleChecker : public LuaAstVisitor
910
{
1011
public:
11-
class CheckElement
12-
{
13-
public:
14-
CheckElement(NameDefineType type, std::shared_ptr<LuaAstNode> node,
15-
std::shared_ptr<LuaAstNode> extraInfoNode = nullptr);
16-
NameDefineType Type;
17-
std::shared_ptr<LuaAstNode> Node;
18-
std::shared_ptr<LuaAstNode> ExtraInfoNode = nullptr;
19-
};
20-
2112
class Scope
2213
{
2314
public:
@@ -26,7 +17,7 @@ class NameStyleChecker : public LuaAstVisitor
2617

2718
NameStyleChecker(DiagnosisContext& ctx);
2819

29-
std::vector<LuaDiagnosisInfo> Analysis();
20+
void Analysis();
3021

3122
protected:
3223
void VisitLocalStatement(const std::shared_ptr<LuaAstNode>& node) override;

0 commit comments

Comments
 (0)