Skip to content

Commit bde3e2f

Browse files
committed
FIX #18 提供诊断分类
1 parent af23a86 commit bde3e2f

File tree

14 files changed

+64
-24
lines changed

14 files changed

+64
-24
lines changed

CodeFormatLib/src/CodeFormatLib.cpp

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,28 @@ std::string luaToString(lua_State* L, int idx)
2323
}
2424
else if (lua_isboolean(L, idx))
2525
{
26-
return lua_toboolean(L, idx) ? "true": "false";
26+
return lua_toboolean(L, idx) ? "true" : "false";
2727
}
2828
else
2929
{
3030
return "nil";
3131
}
3232
}
3333

34+
std::string GetDiagnosisString(DiagnosisType type)
35+
{
36+
switch (type)
37+
{
38+
case DiagnosisType::MaxLineWidth: return "MaxLineWidth";
39+
case DiagnosisType::Indent: return "Indent";
40+
case DiagnosisType::Align: return "Align";
41+
case DiagnosisType::Blank: return "Blank";
42+
case DiagnosisType::EndWithNewLine: return "EndWithNewLine";
43+
case DiagnosisType::NameStyle: return "NameStyle";
44+
case DiagnosisType::StatementLineSpace: return "StatementLineSpace";
45+
}
46+
return "";
47+
}
3448

3549
int format(lua_State* L)
3650
{
@@ -49,7 +63,7 @@ int format(lua_State* L)
4963
std::string text = lua_tostring(L, 2);
5064
LuaCodeFormat::ConfigMap configMap;
5165

52-
if(top == 3 && lua_istable(L, 3))
66+
if (top == 3 && lua_istable(L, 3))
5367
{
5468
lua_pushnil(L);
5569
while (lua_next(L, -2) != 0)
@@ -59,7 +73,7 @@ int format(lua_State* L)
5973

6074
if (key != "nil")
6175
{
62-
configMap.insert({ key, value });
76+
configMap.insert({key, value});
6377
}
6478

6579
lua_pop(L, 1);
@@ -124,7 +138,7 @@ int range_format(lua_State* L)
124138

125139
if (key != "nil")
126140
{
127-
configMap.insert({ key, value });
141+
configMap.insert({key, value});
128142
}
129143

130144
lua_pop(L, 1);
@@ -240,6 +254,10 @@ int diagnose_file(lua_State* L)
240254
lua_pushstring(L, "message");
241255
lua_pushlstring(L, diagnosticInfo.Message.c_str(), diagnosticInfo.Message.size());
242256
lua_rawset(L, -3);
257+
258+
lua_pushstring(L, "type");
259+
lua_pushstring(L, GetDiagnosisString(diagnosticInfo.type).c_str());
260+
lua_rawset(L, -3);
243261
}
244262

245263
// range

CodeService/src/FormatElement/AlignmentElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ void AlignmentElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, Fo
3333
if (character != _alignmentPosition)
3434
{
3535
ctx.PushDiagnosis(format(LText("'=' should align to character {}"), _alignmentPosition),
36-
TextRange(nextOffset, nextOffset + 1));
36+
TextRange(nextOffset, nextOffset + 1), DiagnosisType::Align);
3737
}
3838
}

CodeService/src/FormatElement/DiagnosisContext.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ DiagnosisContext::DiagnosisContext(std::shared_ptr<LuaParser> parser, LuaCodeSty
88
}
99

1010

11-
void DiagnosisContext::PushDiagnosis(std::string_view message, TextRange range)
11+
void DiagnosisContext::PushDiagnosis(std::string_view message, TextRange range, DiagnosisType type)
1212
{
1313
LuaDiagnosisPosition start(GetLine(range.StartOffset), GetColumn(range.StartOffset));
1414
LuaDiagnosisPosition end(GetLine(range.EndOffset), GetColumn(range.EndOffset) + 1);
15-
PushDiagnosis(message, start, end);
15+
PushDiagnosis(message, start, end, type);
1616
}
1717

18-
void DiagnosisContext::PushDiagnosis(std::string_view message, LuaDiagnosisPosition start, LuaDiagnosisPosition end)
18+
void DiagnosisContext::PushDiagnosis(std::string_view message, LuaDiagnosisPosition start, LuaDiagnosisPosition end, DiagnosisType type)
1919
{
20-
_diagnosisInfos.push_back(LuaDiagnosisInfo{std::string(message), LuaDiagnosisRange(start, end)});
20+
_diagnosisInfos.push_back(LuaDiagnosisInfo{std::string(message), LuaDiagnosisRange(start, end), type});
2121
}
2222

2323
void DiagnosisContext::SetCharacterCount(int character)
@@ -38,7 +38,7 @@ std::vector<LuaDiagnosisInfo> DiagnosisContext::GetDiagnosisInfos()
3838
{
3939
LuaDiagnosisPosition start(line, _options.max_line_length);
4040
LuaDiagnosisPosition end(line, character);
41-
PushDiagnosis(format(LText("The line width should not exceed {}"), _options.max_line_length), start, end);
41+
PushDiagnosis(format(LText("The line width should not exceed {}"), _options.max_line_length), start, end, DiagnosisType::MaxLineWidth);
4242
}
4343
_lineMaxLengthMap.clear();
4444
}
@@ -48,7 +48,7 @@ std::vector<LuaDiagnosisInfo> DiagnosisContext::GetDiagnosisInfos()
4848
LuaDiagnosisPosition start(_parser->GetTotalLine(), _parser->GetColumn(
4949
static_cast<int>(_parser->GetSource().size())));
5050
LuaDiagnosisPosition end(_parser->GetTotalLine() + 1, 0);
51-
PushDiagnosis(LText("The code must end with a new line"), start, end);
51+
PushDiagnosis(LText("The code must end with a new line"), start, end, DiagnosisType::EndWithNewLine);
5252
}
5353
return _diagnosisInfos;
5454
}

CodeService/src/FormatElement/FormatElement.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ void FormatElement::GeneralIndentDiagnosis(DiagnosisContext& ctx, ChildIterator
167167
GetIndentStyleName(indentState.Style)
168168
),
169169
LuaDiagnosisPosition(line, 0),
170-
LuaDiagnosisPosition(line, character)
170+
LuaDiagnosisPosition(line, character),
171+
DiagnosisType::Indent
171172
);
172173
goto endIndentDiagnose;
173174
}
@@ -180,7 +181,8 @@ void FormatElement::GeneralIndentDiagnosis(DiagnosisContext& ctx, ChildIterator
180181
format(LText("incorrect indentation {}, here need {} space indentation"),
181182
indentState.SpaceIndent, state.SpaceIndent),
182183
LuaDiagnosisPosition(line, 0),
183-
LuaDiagnosisPosition(line, character)
184+
LuaDiagnosisPosition(line, character),
185+
DiagnosisType::Indent
184186
);
185187
}
186188
goto endIndentDiagnose;
@@ -193,7 +195,8 @@ void FormatElement::GeneralIndentDiagnosis(DiagnosisContext& ctx, ChildIterator
193195
format(LText("incorrect indentation, here need {} tab and {} space indentation"),
194196
state.TabIndent, state.SpaceIndent),
195197
LuaDiagnosisPosition(line, 0),
196-
LuaDiagnosisPosition(line, character)
198+
LuaDiagnosisPosition(line, character),
199+
DiagnosisType::Indent
197200
);
198201
}
199202
}

CodeService/src/FormatElement/KeepBlankElement.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ void KeepBlankElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, Fo
3838
{
3939
if (nextOffset - lastOffset - 1 != _blank)
4040
{
41-
ctx.PushDiagnosis(format(LText("here need keep {} space"), _blank), TextRange(lastOffset, nextOffset));
41+
ctx.PushDiagnosis(format(LText("here need keep {} space"), _blank), TextRange(lastOffset, nextOffset),
42+
DiagnosisType::Blank);
4243
}
4344
}
4445
}

CodeService/src/FormatElement/KeepElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void KeepElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt,
6363
{
6464
if (nextOffset - lastOffset - 1 != _keepBlank)
6565
{
66-
ctx.PushDiagnosis(format(LText("here need keep {} space"), _keepBlank), TextRange(lastOffset, nextOffset));
66+
ctx.PushDiagnosis(format(LText("here need keep {} space"), _keepBlank), TextRange(lastOffset, nextOffset), DiagnosisType::Blank);
6767
}
6868
}
6969
else

CodeService/src/FormatElement/KeepLineElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void KeepLineElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt,
6060

6161
ctx.PushDiagnosis(format(LText("here need keep {} empty line"), _line),
6262
LuaDiagnosisPosition(nextElementLine, character),
63-
LuaDiagnosisPosition(nextElementLine + 1, 0));
63+
LuaDiagnosisPosition(nextElementLine + 1, 0), DiagnosisType::StatementLineSpace);
6464
}
6565
}
6666
}

CodeService/src/FormatElement/MaxLineElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void MaxLineElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, Form
6060
auto character = ctx.GetColumn(nextOffset);
6161
ctx.PushDiagnosis(format(LText("The maximum empty line here is {}"), _line),
6262
LuaDiagnosisPosition(nextElementLine, character),
63-
LuaDiagnosisPosition(nextElementLine + 1, 0));
63+
LuaDiagnosisPosition(nextElementLine + 1, 0), DiagnosisType::StatementLineSpace);
6464
}
6565
ctx.SetCharacterCount(0);
6666
}

CodeService/src/FormatElement/MaxSpaceElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ void MaxSpaceElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, For
5757

5858
if (space > maxSpace)
5959
{
60-
ctx.PushDiagnosis(format(LText("the maximum blank length here is {}"), maxSpace), TextRange(lastOffset, nextOffset));
60+
ctx.PushDiagnosis(format(LText("the maximum blank length here is {}"), maxSpace), TextRange(lastOffset, nextOffset), DiagnosisType::Blank);
6161
}
6262
}

CodeService/src/FormatElement/MinLineElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void MinLineElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, Form
6161
auto character = ctx.GetColumn(nextOffset);
6262
ctx.PushDiagnosis(format(LText("here need at least {} empty line"), _line),
6363
LuaDiagnosisPosition(nextElementLine, character),
64-
LuaDiagnosisPosition(nextElementLine + 1, 0));
64+
LuaDiagnosisPosition(nextElementLine + 1, 0), DiagnosisType::StatementLineSpace);
6565
}
6666
ctx.SetCharacterCount(0);
6767
}

0 commit comments

Comments
 (0)