crabatool 1.0.98 → 1.0.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/package.json +1 -1
- package/tool/checkjs.js +98 -39
package/.eslintrc.json
CHANGED
package/package.json
CHANGED
package/tool/checkjs.js
CHANGED
|
@@ -40,8 +40,9 @@ module.exports.start = async function() {
|
|
|
40
40
|
utils.copyFile(path.join(__dirname, '../.eslintrc.json'), path.join(process.cwd(), '.eslintrc.json'));
|
|
41
41
|
var jsFiles = utils.getFiles({ source: config.webPath, exts: '.js', ignores: config.ignoreCheck });
|
|
42
42
|
|
|
43
|
-
var
|
|
44
|
-
var
|
|
43
|
+
var errDatas = {};
|
|
44
|
+
var warnDatas = {};
|
|
45
|
+
var infoDatas = {};
|
|
45
46
|
var bigList = [];
|
|
46
47
|
var notUtf8List = [];
|
|
47
48
|
var utf8List = [];
|
|
@@ -86,18 +87,35 @@ module.exports.start = async function() {
|
|
|
86
87
|
bigList.push(`${filePath} ${parseInt(stats.size / 1024)}kb`);
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
var errInfo = { list: [] };
|
|
90
90
|
if (eslintResults.length > 0 && eslintResults[0].errorCount > 0) {
|
|
91
|
+
var warnList = [];
|
|
92
|
+
var infoList = [];
|
|
93
|
+
var ieList = [];
|
|
91
94
|
var res = eslintResults[0];
|
|
92
95
|
res.messages.forEach((item) => {
|
|
93
96
|
var reg = new RegExp(/'\$\w+'\sis\snot\sdefined\./);
|
|
94
97
|
if (reg.test(item.message)) return; // $字符开头的全局变量不输出
|
|
95
|
-
|
|
98
|
+
|
|
99
|
+
var list = warnList;
|
|
100
|
+
if (!item.ruleId) {
|
|
101
|
+
list = ieList;
|
|
102
|
+
item.ruleId = '此文件有严重异常,解析失败';
|
|
103
|
+
} else if (item.ruleId.indexOf('native-ie') > -1 || item.ruleId.indexOf('no-dupe-keys') > -1) {
|
|
104
|
+
list = ieList;
|
|
105
|
+
} else if (item.ruleId.indexOf('no-unused-vars') > -1) {
|
|
106
|
+
list = infoList;
|
|
107
|
+
}
|
|
108
|
+
list.push({ char: item.ruleId + ',' + item.messageId, line: item.line, endLine: item.endLine, column: item.column, msg: item.message });
|
|
96
109
|
});
|
|
97
110
|
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
if (warnList.length > 0) {
|
|
112
|
+
warnDatas[filePath] = warnList;
|
|
113
|
+
}
|
|
114
|
+
if (ieList.length > 0) {
|
|
115
|
+
errDatas[filePath] = ieList;
|
|
116
|
+
}
|
|
117
|
+
if (infoList.length > 0) {
|
|
118
|
+
infoDatas[filePath] = infoList;
|
|
101
119
|
}
|
|
102
120
|
}
|
|
103
121
|
|
|
@@ -108,14 +126,11 @@ module.exports.start = async function() {
|
|
|
108
126
|
|
|
109
127
|
// 二次检查
|
|
110
128
|
if (reg.test(noComment)) {
|
|
111
|
-
if (errInfo.list.length == 0) {
|
|
112
|
-
errList.push(filePath); // 记录该js有异常
|
|
113
|
-
errRegList.push(errInfo);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
129
|
var nreg = new RegExp(dangerousJs.join('|'), 'ig');
|
|
117
|
-
var
|
|
118
|
-
|
|
130
|
+
var infoList = getMathReuslts(noComment, nreg);
|
|
131
|
+
var list = errDatas[filePath];
|
|
132
|
+
if (list) errDatas[filePath] = list.concat(infoList); // 记录该js有异常
|
|
133
|
+
else errDatas[filePath] = infoList;
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
}
|
|
@@ -127,7 +142,10 @@ module.exports.start = async function() {
|
|
|
127
142
|
// 生成检测报告 markdown语法
|
|
128
143
|
var warnGspxCount = Object.keys(gspxData.warnList).length;
|
|
129
144
|
var status = '无异常';
|
|
130
|
-
|
|
145
|
+
var errKeys = Object.keys(errDatas);
|
|
146
|
+
var warnKeys = Object.keys(warnDatas);
|
|
147
|
+
var infoKeys = Object.keys(infoDatas);
|
|
148
|
+
if (errKeys.length > 0 || warnKeys.length > 0 || notUtf8List.length > 0 || warnGspxCount > 0 || gspxData.errorList.length > 0) {
|
|
131
149
|
status = '有异常';
|
|
132
150
|
}
|
|
133
151
|
|
|
@@ -150,28 +168,34 @@ module.exports.start = async function() {
|
|
|
150
168
|
info.push("# 检测结果汇总");
|
|
151
169
|
info.push("| 类型 | 数量 |");
|
|
152
170
|
info.push("| ------ | ------ |");
|
|
153
|
-
info.push(`| 语法异常文件数 | ${
|
|
171
|
+
info.push(`| 语法异常文件数Error | ${errKeys.length}个 |`);
|
|
172
|
+
info.push(`| 语法警告文件数Warn | ${warnKeys.length}个 |`);
|
|
173
|
+
info.push(`| 语法提示文件数Info | ${warnKeys.length}个 |`);
|
|
154
174
|
info.push(`| 非utf8文件数 | ${notUtf8List.length}个 |`);
|
|
155
175
|
info.push(`| 超过${fileSize}kb的文件数 | ${bigList.length}个 |`);
|
|
156
176
|
info.push(`| gspx建议优化数 | ${warnGspxCount}个 |`);
|
|
157
|
-
info.push(`| gspx
|
|
177
|
+
info.push(`| gspx语法错误数 | ${gspxData.errorList.length}个 |`);
|
|
158
178
|
|
|
159
179
|
|
|
160
180
|
// 输出到钉钉的简易报告
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
}
|
|
181
|
+
//if (errKeys.length > 0) {
|
|
182
|
+
webhookList.push(`1. 语法异常文件数Error:${errKeys.length}个`);
|
|
183
|
+
//}
|
|
184
|
+
//if (warnKeys.length > 0) {
|
|
185
|
+
webhookList.push(`1. 语法警告文件数Warn:${warnKeys.length}个`);
|
|
186
|
+
//}
|
|
187
|
+
webhookList.push(`1. 语法提示文件数Info:${infoKeys.length}个`);
|
|
164
188
|
if (notUtf8List.length > 0) {
|
|
165
189
|
webhookList.push(`1. 非utf8文件数:${notUtf8List.length}个`);
|
|
166
190
|
}
|
|
167
191
|
if (bigList.length > 0) {
|
|
168
192
|
webhookList.push(`1. 超过${fileSize}kb的文件数:${bigList.length}个`);
|
|
169
193
|
}
|
|
170
|
-
if (warnGspxCount > 0) {
|
|
171
|
-
|
|
172
|
-
}
|
|
194
|
+
//if (warnGspxCount > 0) {
|
|
195
|
+
webhookList.push(`1. gspx建议优化数:${warnGspxCount}个`);
|
|
196
|
+
//}
|
|
173
197
|
if (gspxData.errorList.length > 0) {
|
|
174
|
-
webhookList.push(`1. gspx
|
|
198
|
+
webhookList.push(`1. gspx语法错误数:${gspxData.errorList.length}个`);
|
|
175
199
|
}
|
|
176
200
|
|
|
177
201
|
// 代码质量管理需要格式
|
|
@@ -180,22 +204,57 @@ module.exports.start = async function() {
|
|
|
180
204
|
};
|
|
181
205
|
|
|
182
206
|
var detail = [];
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
207
|
+
//if (errKeys.length > 0) {
|
|
208
|
+
detail.push("");
|
|
209
|
+
detail.push(`# ${errKeys.length}个必须修复异常清单`);
|
|
210
|
+
errKeys.forEach((fileName, index) => {
|
|
211
|
+
|
|
212
|
+
detail.push(`${index + 1}. ${fileName}`);
|
|
213
|
+
|
|
214
|
+
var infoList = errDatas[fileName];
|
|
215
|
+
detail.push("| 异常字符 | 行号 | 列号 | 说明 |");
|
|
216
|
+
detail.push("| ----- | ------ | ---- | ---- |");
|
|
217
|
+
infoList.forEach((item) => {
|
|
218
|
+
detail.push(`| ${item.char.trim()} | ${item.line || '-'} | ${item.column || '-'} | ${item.msg || '-'} |`);
|
|
219
|
+
sonar.issues.push(getSonarEntity('语法异常', modName, item.char.trim(), fileName, -1, item.line, item.column, item.endLine));
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
//}
|
|
187
223
|
|
|
188
|
-
|
|
224
|
+
//if (warnKeys.length > 0) {
|
|
225
|
+
detail.push("");
|
|
226
|
+
detail.push(`# ${warnKeys.length}个建议修复警告清单`);
|
|
227
|
+
warnKeys.forEach((fileName, index) => {
|
|
189
228
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
});
|
|
229
|
+
detail.push(`${index + 1}. ${fileName}`);
|
|
230
|
+
|
|
231
|
+
var infoList = warnDatas[fileName];
|
|
232
|
+
detail.push("| 警告字符 | 行号 | 列号 | 说明 |");
|
|
233
|
+
detail.push("| ----- | ------ | ---- | ---- |");
|
|
234
|
+
infoList.forEach((item) => {
|
|
235
|
+
detail.push(`| ${item.char.trim()} | ${item.line || '-'} | ${item.column || '-'} | ${item.msg || '-'} |`);
|
|
236
|
+
sonar.issues.push(getSonarEntity('语法警告', modName, item.char.trim(), fileName, -1, item.line, item.column, item.endLine));
|
|
197
237
|
});
|
|
198
|
-
}
|
|
238
|
+
});
|
|
239
|
+
//}
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
//if (infoKeys.length > 0) {
|
|
243
|
+
detail.push("");
|
|
244
|
+
detail.push(`# ${infoKeys.length}个可选修复清单`);
|
|
245
|
+
infoKeys.forEach((fileName, index) => {
|
|
246
|
+
|
|
247
|
+
detail.push(`${index + 1}. ${fileName}`);
|
|
248
|
+
|
|
249
|
+
var infoList = infoDatas[fileName];
|
|
250
|
+
detail.push("| 提示字符 | 行号 | 列号 | 说明 |");
|
|
251
|
+
detail.push("| ----- | ------ | ---- | ---- |");
|
|
252
|
+
infoList.forEach((item) => {
|
|
253
|
+
detail.push(`| ${item.char.trim()} | ${item.line || '-'} | ${item.column || '-'} | ${item.msg || '-'} |`);
|
|
254
|
+
sonar.issues.push(getSonarEntity('语法提示', modName, item.char.trim(), fileName, -1, item.line, item.column, item.endLine));
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
//}
|
|
199
258
|
|
|
200
259
|
if (notUtf8List.length > 0) {
|
|
201
260
|
detail.push("");
|
|
@@ -218,7 +277,7 @@ module.exports.start = async function() {
|
|
|
218
277
|
}
|
|
219
278
|
|
|
220
279
|
if (gspxData.errorList.length > 0) {
|
|
221
|
-
detail.push(`#
|
|
280
|
+
detail.push(`# 出错页面清单如下`);
|
|
222
281
|
gspxData.errorList.forEach((info, index) => {
|
|
223
282
|
detail.push(`${index + 1}. ${info.name}`);
|
|
224
283
|
detail.push(`> 错误标签: ${info.tag}`);
|
|
@@ -298,7 +357,7 @@ function getMathReuslts(content, nreg, filterFun) {
|
|
|
298
357
|
while (!v.done) {
|
|
299
358
|
var value = v.value[0];
|
|
300
359
|
if (!filterFun || filterFun(value)) {
|
|
301
|
-
list.push({ "char": value, "column": v.value.index, 'msg': '
|
|
360
|
+
list.push({ "char": value, "column": v.value.index, 'msg': '兼容性字符,不推荐使用' });
|
|
302
361
|
}
|
|
303
362
|
v = all.next();
|
|
304
363
|
}
|