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 CHANGED
@@ -14,7 +14,7 @@
14
14
  "rules": {
15
15
  "semi": "off",
16
16
  "no-redeclare": "off",
17
- "no-unused-vars": "off",
17
+ //"no-unused-vars": "off",
18
18
  "missingSemi": "off"
19
19
  },
20
20
  "globals": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crabatool",
3
- "version": "1.0.98",
3
+ "version": "1.0.100",
4
4
  "description": "crabatool",
5
5
  "main": "index.js",
6
6
  "scripts": {
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 errList = [];
44
- var errRegList = [];
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
- errInfo.list.push({ char: item.ruleId + ',' + item.messageId, line: item.line, endLine: item.endLine, column: item.column, msg: item.message });
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 (errInfo.list.length > 0) {
99
- errList.push(filePath);
100
- errRegList.push(errInfo);
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 elist = getMathReuslts(noComment, nreg);
118
- errInfo.list = errInfo.list.concat(elist);
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
- if (errList.length > 0 || notUtf8List.length > 0 || warnGspxCount > 0 || gspxData.errorList.length > 0) {
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(`| 语法异常文件数 | ${errList.length}个 |`);
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错误数 | ${gspxData.errorList.length}个 |`);
177
+ info.push(`| gspx语法错误数 | ${gspxData.errorList.length}个 |`);
158
178
 
159
179
 
160
180
  // 输出到钉钉的简易报告
161
- if (errList.length > 0) {
162
- webhookList.push(`1. 语法异常文件数:${errList.length}个`);
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
- webhookList.push(`1. gspx建议优化数:${warnGspxCount}个`);
172
- }
194
+ //if (warnGspxCount > 0) {
195
+ webhookList.push(`1. gspx建议优化数:${warnGspxCount}个`);
196
+ //}
173
197
  if (gspxData.errorList.length > 0) {
174
- webhookList.push(`1. gspx出错数:${gspxData.errorList.length}个`);
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 (errList.length > 0) {
184
- detail.push("");
185
- detail.push('# js语法异常清单如下');
186
- errList.forEach((s, index) => {
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
- detail.push(`${index + 1}. ${s}`);
224
+ //if (warnKeys.length > 0) {
225
+ detail.push("");
226
+ detail.push(`# ${warnKeys.length}个建议修复警告清单`);
227
+ warnKeys.forEach((fileName, index) => {
189
228
 
190
- var err = errRegList[index];
191
- detail.push("| 异常字符 | 行号 | 列号 | 说明 |");
192
- detail.push("| ----- | ------ | ---- | ---- |");
193
- err.list.forEach((item) => {
194
- detail.push(`| ${item.char.trim()} | ${item.line || '-'} | ${item.column || '-'} | ${item.msg || '-'} |`);
195
- sonar.issues.push(getSonarEntity('语法异常', modName, item.char.trim(), s, -1, item.line, item.column, item.endLine));
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
  }