@m3hti/commit-genie 1.2.8 → 1.3.0
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/dist/data/wordlist.d.ts.map +1 -1
- package/dist/data/wordlist.js +2 -0
- package/dist/data/wordlist.js.map +1 -1
- package/dist/services/analyzerService.d.ts +14 -0
- package/dist/services/analyzerService.d.ts.map +1 -1
- package/dist/services/analyzerService.js +226 -42
- package/dist/services/analyzerService.js.map +1 -1
- package/dist/services/analyzerService.test.js +117 -5
- package/dist/services/analyzerService.test.js.map +1 -1
- package/dist/services/configService.js +1 -1
- package/dist/services/configService.js.map +1 -1
- package/dist/services/historyService.js +1 -1
- package/dist/services/historyService.js.map +1 -1
- package/dist/services/statsService.js +1 -1
- package/dist/services/statsService.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordlist.d.ts","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"wordlist.d.ts","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,aAqGvB,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAoE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ,aAAmD,CAAC"}
|
package/dist/data/wordlist.js
CHANGED
|
@@ -73,6 +73,8 @@ exports.COMMON_WORDS = new Set([
|
|
|
73
73
|
'valid', 'invalid', 'active', 'inactive', 'enabled', 'disabled', 'visible', 'hidden',
|
|
74
74
|
'empty', 'full', 'null', 'undefined', 'missing', 'unknown', 'invalid',
|
|
75
75
|
'small', 'large', 'min', 'max', 'short', 'long', 'single', 'multiple',
|
|
76
|
+
'double', 'triple', 'negative', 'positive', 'longest', 'shortest', 'largest', 'smallest',
|
|
77
|
+
'upper', 'lower', 'inner', 'outer', 'deep', 'flat', 'average', 'total', 'sum',
|
|
76
78
|
'simple', 'complex', 'basic', 'advanced', 'common', 'rare', 'special',
|
|
77
79
|
'safe', 'unsafe', 'secure', 'insecure', 'trusted', 'untrusted',
|
|
78
80
|
'correct', 'incorrect', 'right', 'wrong', 'true', 'false', 'yes', 'no',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordlist.js","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wordlist.js","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,11 @@ export declare class AnalyzerService {
|
|
|
32
32
|
* Returns true if JS files have changes but NO actual styling changes
|
|
33
33
|
*/
|
|
34
34
|
private static hasOnlyNonStyleJsChanges;
|
|
35
|
+
/**
|
|
36
|
+
* Extract non-comment changed lines from a diff for keyword analysis.
|
|
37
|
+
* Filters out comment lines to prevent false positives from descriptive text.
|
|
38
|
+
*/
|
|
39
|
+
private static extractNonCommentChanges;
|
|
35
40
|
/**
|
|
36
41
|
* Check if the diff contains only comment changes (documentation)
|
|
37
42
|
* Returns true if ALL changes are comments (no code changes)
|
|
@@ -67,6 +72,15 @@ export declare class AnalyzerService {
|
|
|
67
72
|
* Extract affected element names (components, functions, etc.) from the diff
|
|
68
73
|
*/
|
|
69
74
|
private static extractAffectedElements;
|
|
75
|
+
/**
|
|
76
|
+
* Extract function/class/method names from git diff @@ hunk headers.
|
|
77
|
+
* Git includes the enclosing scope after the second @@, e.g.:
|
|
78
|
+
* @@ -42,7 +42,9 @@ function processPayment(order) {
|
|
79
|
+
* @@ -10,5 +10,7 @@ class PaymentService {
|
|
80
|
+
* @@ -80,3 +82,5 @@ export const validateInput = (
|
|
81
|
+
* This is the most reliable way to know which function/class a change is inside.
|
|
82
|
+
*/
|
|
83
|
+
private static extractHunkContext;
|
|
70
84
|
/**
|
|
71
85
|
* Detect function/class/type renames by comparing removed and added names
|
|
72
86
|
* Returns an array of { oldName, newName } objects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzerService.d.ts","sourceRoot":"","sources":["../../src/services/analyzerService.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAEd,aAAa,EAGb,iBAAiB,EAKlB,MAAM,UAAU,CAAC;AA+NlB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IAiHvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"analyzerService.d.ts","sourceRoot":"","sources":["../../src/services/analyzerService.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAEd,aAAa,EAGb,iBAAiB,EAKlB,MAAM,UAAU,CAAC;AA+NlB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IAiHvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA0FpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA4RlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8DrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAyF5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6BvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA+ClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAkCrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA6BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuEtC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiDjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA0C5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2BxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAgDlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwFlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAyE1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAiD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmD3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA8B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkE/B;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,aAAa;IAkC7C;;OAEG;IACH,MAAM,CAAC,2BAA2B,IAAI,iBAAiB,EAAE;IAqLzD;;OAEG;WACU,yBAAyB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0E5F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAoE9C"}
|
|
@@ -17,12 +17,12 @@ const COMMIT_EMOJIS = {
|
|
|
17
17
|
perf: '⚡',
|
|
18
18
|
};
|
|
19
19
|
// Default keywords that indicate breaking changes
|
|
20
|
+
// Note: generic words like "removed" are excluded to avoid false positives
|
|
21
|
+
// from descriptive comments (e.g. "// Return array with zeros removed")
|
|
20
22
|
const DEFAULT_BREAKING_KEYWORDS = [
|
|
21
23
|
'breaking',
|
|
22
24
|
'breaking change',
|
|
23
25
|
'breaking-change',
|
|
24
|
-
'removed',
|
|
25
|
-
'deprecated',
|
|
26
26
|
'incompatible',
|
|
27
27
|
];
|
|
28
28
|
// Patterns that indicate breaking changes in code
|
|
@@ -31,12 +31,12 @@ const BREAKING_PATTERNS = [
|
|
|
31
31
|
/^-\s*export\s+(function|class|const|let|var|interface|type|enum)\s+(\w+)/gm,
|
|
32
32
|
// Removed function parameters
|
|
33
33
|
/^-\s*(public|private|protected)?\s*(async\s+)?function\s+\w+\s*\([^)]+\)/gm,
|
|
34
|
-
// Changed function signatures (removed parameters)
|
|
35
|
-
/^-\s
|
|
34
|
+
// Changed function signatures (removed parameters) - require function-like declaration context
|
|
35
|
+
/^-\s*(?:export\s+)?(?:async\s+)?(?:function\s+)?\w+\s*\([^)]+\)\s*[:{]/gm,
|
|
36
36
|
// Removed class methods
|
|
37
37
|
/^-\s*(public|private|protected)\s+(static\s+)?(async\s+)?\w+\s*\(/gm,
|
|
38
|
-
// Removed interface/type properties
|
|
39
|
-
/^-\s+\w+\s*[
|
|
38
|
+
// Removed interface/type properties - require preceding interface/type declaration context
|
|
39
|
+
/^-\s+\w+\s*[?]?\s*:\s*\w/gm,
|
|
40
40
|
// Major version bump in package.json
|
|
41
41
|
/^-\s*"version":\s*"\d+/gm,
|
|
42
42
|
];
|
|
@@ -51,10 +51,10 @@ const ROLE_PATTERNS = {
|
|
|
51
51
|
/^\+.*style\s*=\s*\{/m, // inline styles
|
|
52
52
|
/^\+.*return\s*\(/m, // render return
|
|
53
53
|
/^\+.*render\s*\(\s*\)/m, // render method
|
|
54
|
-
|
|
54
|
+
/^\+.*(?:<>|<\/>)/m, // React fragments
|
|
55
55
|
/^\+.*aria-\w+=/m, // accessibility attributes
|
|
56
56
|
/^\+.*role\s*=/m, // role attribute
|
|
57
|
-
|
|
57
|
+
/^\+.*\b(?:onClick|onSubmit|onChange|onFocus|onBlur|onKeyDown|onKeyUp|onMouseEnter|onMouseLeave)\b/m,
|
|
58
58
|
],
|
|
59
59
|
logic: [
|
|
60
60
|
// Business logic patterns
|
|
@@ -324,11 +324,13 @@ class AnalyzerService {
|
|
|
324
324
|
return { isBreaking: false, reasons: [] };
|
|
325
325
|
}
|
|
326
326
|
const reasons = [];
|
|
327
|
-
const diffLower = diff.toLowerCase();
|
|
328
327
|
// Check for keyword-based breaking changes
|
|
328
|
+
// Only check against non-comment code changes to avoid false positives
|
|
329
|
+
// from descriptive comments (e.g. "// Return array with zeros removed")
|
|
329
330
|
const keywords = breakingConfig?.keywords || DEFAULT_BREAKING_KEYWORDS;
|
|
331
|
+
const codeChangesLower = this.extractNonCommentChanges(diff).toLowerCase();
|
|
330
332
|
for (const keyword of keywords) {
|
|
331
|
-
if (
|
|
333
|
+
if (codeChangesLower.includes(keyword.toLowerCase())) {
|
|
332
334
|
reasons.push(`Contains "${keyword}" keyword`);
|
|
333
335
|
}
|
|
334
336
|
}
|
|
@@ -339,10 +341,23 @@ class AnalyzerService {
|
|
|
339
341
|
reasons.push(`Deleted source files: ${fileNames}`);
|
|
340
342
|
}
|
|
341
343
|
// Check for pattern-based breaking changes in diff
|
|
344
|
+
// Build a set of added lines to filter out reformatted lines
|
|
345
|
+
// (lines that appear as both - and + are just reformatted, not actually removed)
|
|
346
|
+
const addedLines = new Set(diff.split('\n')
|
|
347
|
+
.filter(line => line.startsWith('+') && !line.startsWith('+++'))
|
|
348
|
+
.map(line => line.substring(1).trim()));
|
|
342
349
|
for (const pattern of BREAKING_PATTERNS) {
|
|
343
350
|
pattern.lastIndex = 0; // Reset regex state
|
|
344
351
|
const matches = diff.match(pattern);
|
|
345
352
|
if (matches && matches.length > 0) {
|
|
353
|
+
// Filter out matches whose content also appears as an added line
|
|
354
|
+
// (these are reformatted lines, not actual removals)
|
|
355
|
+
const realRemovals = matches.filter(m => {
|
|
356
|
+
const content = m.replace(/^-/, '').trim();
|
|
357
|
+
return !addedLines.has(content);
|
|
358
|
+
});
|
|
359
|
+
if (realRemovals.length === 0)
|
|
360
|
+
continue;
|
|
346
361
|
// Identify what type of breaking change
|
|
347
362
|
if (pattern.source.includes('export')) {
|
|
348
363
|
reasons.push('Removed exported members');
|
|
@@ -834,6 +849,35 @@ class AnalyzerService {
|
|
|
834
849
|
// Return true only if we have non-style changes AND no style patterns
|
|
835
850
|
return hasNonStyleChanges && !hasStylePatterns;
|
|
836
851
|
}
|
|
852
|
+
/**
|
|
853
|
+
* Extract non-comment changed lines from a diff for keyword analysis.
|
|
854
|
+
* Filters out comment lines to prevent false positives from descriptive text.
|
|
855
|
+
*/
|
|
856
|
+
static extractNonCommentChanges(diff) {
|
|
857
|
+
return diff.split('\n')
|
|
858
|
+
.filter(line => (line.startsWith('+') || line.startsWith('-')) &&
|
|
859
|
+
!line.startsWith('+++') &&
|
|
860
|
+
!line.startsWith('---'))
|
|
861
|
+
.map(line => line.substring(1))
|
|
862
|
+
.filter(line => {
|
|
863
|
+
const trimmed = line.trim();
|
|
864
|
+
if (trimmed.length === 0)
|
|
865
|
+
return false;
|
|
866
|
+
// Filter out comment lines
|
|
867
|
+
return !(trimmed.startsWith('//') ||
|
|
868
|
+
trimmed.startsWith('/*') ||
|
|
869
|
+
trimmed.startsWith('*') ||
|
|
870
|
+
trimmed.startsWith('*/') ||
|
|
871
|
+
trimmed.startsWith('#') ||
|
|
872
|
+
trimmed.startsWith('<!--') ||
|
|
873
|
+
trimmed.startsWith('-->') ||
|
|
874
|
+
trimmed.startsWith('"""') ||
|
|
875
|
+
trimmed.startsWith("'''") ||
|
|
876
|
+
/^\/\*\*/.test(trimmed) ||
|
|
877
|
+
/^\*\s*@\w+/.test(trimmed));
|
|
878
|
+
})
|
|
879
|
+
.join('\n');
|
|
880
|
+
}
|
|
837
881
|
/**
|
|
838
882
|
* Check if the diff contains only comment changes (documentation)
|
|
839
883
|
* Returns true if ALL changes are comments (no code changes)
|
|
@@ -884,6 +928,7 @@ class AnalyzerService {
|
|
|
884
928
|
const primaryRole = this.determinePrimaryRole(roleChanges);
|
|
885
929
|
let primaryIntent = this.determineIntent(diff, stagedFiles, roleChanges);
|
|
886
930
|
const affectedElements = this.extractAffectedElements(diff);
|
|
931
|
+
const hunkContext = this.extractHunkContext(diff);
|
|
887
932
|
// Detect renames - this takes priority for determining intent
|
|
888
933
|
const renames = this.detectRenames(diff);
|
|
889
934
|
if (renames.length > 0) {
|
|
@@ -893,7 +938,7 @@ class AnalyzerService {
|
|
|
893
938
|
const intentDescription = this.generateIntentDescription(primaryIntent, primaryRole, roleChanges);
|
|
894
939
|
const whatChanged = renames.length > 0
|
|
895
940
|
? `${renames[0].oldName} to ${renames[0].newName}`
|
|
896
|
-
: this.generateWhatChanged(roleChanges, affectedElements, stagedFiles);
|
|
941
|
+
: this.generateWhatChanged(roleChanges, affectedElements, stagedFiles, hunkContext);
|
|
897
942
|
return {
|
|
898
943
|
primaryRole,
|
|
899
944
|
primaryIntent,
|
|
@@ -902,6 +947,7 @@ class AnalyzerService {
|
|
|
902
947
|
whatChanged,
|
|
903
948
|
hasMultipleRoles: roleChanges.filter(r => r.significance > 20).length > 1,
|
|
904
949
|
renames: renames.length > 0 ? renames : undefined,
|
|
950
|
+
hunkContext: hunkContext.length > 0 ? hunkContext : undefined,
|
|
905
951
|
};
|
|
906
952
|
}
|
|
907
953
|
/**
|
|
@@ -1087,48 +1133,131 @@ class AnalyzerService {
|
|
|
1087
1133
|
*/
|
|
1088
1134
|
static extractAffectedElements(diff) {
|
|
1089
1135
|
const elements = [];
|
|
1090
|
-
//
|
|
1091
|
-
const
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
const nameMatch = match.match(/(?:function|const)\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1095
|
-
if (nameMatch) {
|
|
1096
|
-
elements.push(nameMatch[1]);
|
|
1097
|
-
}
|
|
1136
|
+
// Helper to add unique element names
|
|
1137
|
+
const addUnique = (name) => {
|
|
1138
|
+
if (!elements.includes(name)) {
|
|
1139
|
+
elements.push(name);
|
|
1098
1140
|
}
|
|
1099
|
-
}
|
|
1100
|
-
//
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1141
|
+
};
|
|
1142
|
+
// Match both added (+) and modified (-) top-level declarations.
|
|
1143
|
+
// For fix/refactor commits, the declaration line often appears as a removed line
|
|
1144
|
+
// (the old version) or only in the - side of the diff. Using [+-] ensures we
|
|
1145
|
+
// capture the affected function/class/component name regardless of whether
|
|
1146
|
+
// the declaration itself was added, removed, or modified.
|
|
1147
|
+
// (?!\s) after [+-] rejects indented lines (local variables inside function bodies)
|
|
1148
|
+
// Extract component names (PascalCase function/const declarations)
|
|
1149
|
+
const componentFuncMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([A-Z][a-zA-Z0-9]*)/gm);
|
|
1150
|
+
if (componentFuncMatches) {
|
|
1151
|
+
for (const match of componentFuncMatches) {
|
|
1152
|
+
const nameMatch = match.match(/function\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1153
|
+
if (nameMatch)
|
|
1154
|
+
addUnique(nameMatch[1]);
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
const componentConstMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?const\s+([A-Z][a-zA-Z0-9]*)\s*=\s*(?:async\s+)?(?:function|\()/gm);
|
|
1158
|
+
if (componentConstMatches) {
|
|
1159
|
+
for (const match of componentConstMatches) {
|
|
1160
|
+
const nameMatch = match.match(/const\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1161
|
+
if (nameMatch)
|
|
1162
|
+
addUnique(nameMatch[1]);
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
// Extract function names (camelCase declarations)
|
|
1166
|
+
const funcKeywordMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([a-z][a-zA-Z0-9]*)\s*\(/gm);
|
|
1167
|
+
if (funcKeywordMatches) {
|
|
1168
|
+
for (const match of funcKeywordMatches) {
|
|
1169
|
+
const nameMatch = match.match(/function\s+([a-z][a-zA-Z0-9]*)/);
|
|
1170
|
+
if (nameMatch)
|
|
1171
|
+
addUnique(nameMatch[1]);
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
// const/let arrow or function expression: const foo = (, export const foo = async (
|
|
1175
|
+
const funcConstMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?const\s+([a-z][a-zA-Z0-9]*)\s*=\s*(?:async\s+)?(?:function|\()/gm);
|
|
1176
|
+
if (funcConstMatches) {
|
|
1177
|
+
for (const match of funcConstMatches) {
|
|
1178
|
+
const nameMatch = match.match(/const\s+([a-z][a-zA-Z0-9]*)/);
|
|
1179
|
+
if (nameMatch)
|
|
1180
|
+
addUnique(nameMatch[1]);
|
|
1108
1181
|
}
|
|
1109
1182
|
}
|
|
1110
1183
|
// Extract interface/type names
|
|
1111
|
-
const typeMatches = diff.match(
|
|
1184
|
+
const typeMatches = diff.match(/^[+-](?!\s)(?:export\s+)?(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/gm);
|
|
1112
1185
|
if (typeMatches) {
|
|
1113
1186
|
for (const match of typeMatches) {
|
|
1114
1187
|
const nameMatch = match.match(/(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1115
|
-
if (nameMatch
|
|
1116
|
-
|
|
1117
|
-
}
|
|
1188
|
+
if (nameMatch)
|
|
1189
|
+
addUnique(nameMatch[1]);
|
|
1118
1190
|
}
|
|
1119
1191
|
}
|
|
1120
1192
|
// Extract class names
|
|
1121
|
-
const classMatches = diff.match(
|
|
1193
|
+
const classMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:abstract\s+)?class\s+([A-Z][a-zA-Z0-9]*)/gm);
|
|
1122
1194
|
if (classMatches) {
|
|
1123
1195
|
for (const match of classMatches) {
|
|
1124
1196
|
const nameMatch = match.match(/class\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1125
|
-
if (nameMatch
|
|
1126
|
-
|
|
1127
|
-
}
|
|
1197
|
+
if (nameMatch)
|
|
1198
|
+
addUnique(nameMatch[1]);
|
|
1128
1199
|
}
|
|
1129
1200
|
}
|
|
1130
1201
|
return elements.slice(0, 5); // Limit to top 5 elements
|
|
1131
1202
|
}
|
|
1203
|
+
/**
|
|
1204
|
+
* Extract function/class/method names from git diff @@ hunk headers.
|
|
1205
|
+
* Git includes the enclosing scope after the second @@, e.g.:
|
|
1206
|
+
* @@ -42,7 +42,9 @@ function processPayment(order) {
|
|
1207
|
+
* @@ -10,5 +10,7 @@ class PaymentService {
|
|
1208
|
+
* @@ -80,3 +82,5 @@ export const validateInput = (
|
|
1209
|
+
* This is the most reliable way to know which function/class a change is inside.
|
|
1210
|
+
*/
|
|
1211
|
+
static extractHunkContext(diff) {
|
|
1212
|
+
const names = [];
|
|
1213
|
+
// Match @@ ... @@ <context> lines
|
|
1214
|
+
const hunkHeaderRegex = /^@@\s+[^@]+@@\s+(.+)$/gm;
|
|
1215
|
+
let match;
|
|
1216
|
+
while ((match = hunkHeaderRegex.exec(diff)) !== null) {
|
|
1217
|
+
const context = match[1].trim();
|
|
1218
|
+
if (!context)
|
|
1219
|
+
continue;
|
|
1220
|
+
// Try to extract a meaningful name from the context line
|
|
1221
|
+
let name = null;
|
|
1222
|
+
// function declarations: function foo(, async function foo(, export function foo(
|
|
1223
|
+
const funcMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/);
|
|
1224
|
+
if (funcMatch) {
|
|
1225
|
+
name = funcMatch[1];
|
|
1226
|
+
}
|
|
1227
|
+
// const/let/var arrow or function expression: const foo = (, export const foo = async (
|
|
1228
|
+
if (!name) {
|
|
1229
|
+
const constMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);
|
|
1230
|
+
if (constMatch) {
|
|
1231
|
+
name = constMatch[1];
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
// class declarations: class Foo {, export class Foo extends Bar {
|
|
1235
|
+
if (!name) {
|
|
1236
|
+
const classMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:abstract\s+)?class\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1237
|
+
if (classMatch) {
|
|
1238
|
+
name = classMatch[1];
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
// class method: methodName(, async methodName(, private methodName(, static async methodName(
|
|
1242
|
+
if (!name) {
|
|
1243
|
+
const methodMatch = context.match(/(?:public|private|protected)?\s*(?:static\s+)?(?:async\s+)?([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);
|
|
1244
|
+
if (methodMatch) {
|
|
1245
|
+
name = methodMatch[1];
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
// interface/type declarations
|
|
1249
|
+
if (!name) {
|
|
1250
|
+
const typeMatch = context.match(/(?:export\s+)?(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/);
|
|
1251
|
+
if (typeMatch) {
|
|
1252
|
+
name = typeMatch[1];
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
if (name && !names.includes(name)) {
|
|
1256
|
+
names.push(name);
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
return names.slice(0, 5);
|
|
1260
|
+
}
|
|
1132
1261
|
/**
|
|
1133
1262
|
* Detect function/class/type renames by comparing removed and added names
|
|
1134
1263
|
* Returns an array of { oldName, newName } objects
|
|
@@ -1251,8 +1380,8 @@ class AnalyzerService {
|
|
|
1251
1380
|
/**
|
|
1252
1381
|
* Generate the WHAT changed description
|
|
1253
1382
|
*/
|
|
1254
|
-
static generateWhatChanged(roleChanges, affectedElements, stagedFiles) {
|
|
1255
|
-
// If we have specific elements, use them
|
|
1383
|
+
static generateWhatChanged(roleChanges, affectedElements, stagedFiles, hunkContext) {
|
|
1384
|
+
// If we have specific elements from declarations, use them
|
|
1256
1385
|
if (affectedElements.length > 0) {
|
|
1257
1386
|
if (affectedElements.length === 1) {
|
|
1258
1387
|
return affectedElements[0];
|
|
@@ -1262,6 +1391,18 @@ class AnalyzerService {
|
|
|
1262
1391
|
}
|
|
1263
1392
|
return `${affectedElements.slice(0, 2).join(', ')} and ${affectedElements.length - 2} more`;
|
|
1264
1393
|
}
|
|
1394
|
+
// Fall back to hunk context (function/class names from @@ headers)
|
|
1395
|
+
// This is especially useful for fix/refactor where changes are inside
|
|
1396
|
+
// function bodies and the declaration line itself isn't in the diff
|
|
1397
|
+
if (hunkContext && hunkContext.length > 0) {
|
|
1398
|
+
if (hunkContext.length === 1) {
|
|
1399
|
+
return hunkContext[0];
|
|
1400
|
+
}
|
|
1401
|
+
if (hunkContext.length <= 3) {
|
|
1402
|
+
return hunkContext.join(', ');
|
|
1403
|
+
}
|
|
1404
|
+
return `${hunkContext.slice(0, 2).join(', ')} and ${hunkContext.length - 2} more`;
|
|
1405
|
+
}
|
|
1265
1406
|
// Fall back to role-based description
|
|
1266
1407
|
if (roleChanges.length > 0) {
|
|
1267
1408
|
const primaryRole = roleChanges[0];
|
|
@@ -1361,6 +1502,7 @@ class AnalyzerService {
|
|
|
1361
1502
|
const role = semantic.primaryRole;
|
|
1362
1503
|
const verb = INTENT_VERBS[intent].present;
|
|
1363
1504
|
const roleDesc = ROLE_DESCRIPTIONS[role];
|
|
1505
|
+
const hunkContext = semantic.hunkContext;
|
|
1364
1506
|
// Handle renames specially - use "rename X to Y" format
|
|
1365
1507
|
if (intent === 'rename' && semantic.renames && semantic.renames.length > 0) {
|
|
1366
1508
|
const rename = semantic.renames[0];
|
|
@@ -1382,6 +1524,20 @@ class AnalyzerService {
|
|
|
1382
1524
|
// Multiple elements or descriptive text
|
|
1383
1525
|
return `${verb} ${whatChanged}`;
|
|
1384
1526
|
}
|
|
1527
|
+
// For multiple files with identified elements
|
|
1528
|
+
if (stagedFiles.length > 1 && whatChanged && whatChanged !== 'code') {
|
|
1529
|
+
// whatChanged contains specific element names (from extractAffectedElements or hunkContext)
|
|
1530
|
+
if (/^[a-zA-Z_$][a-zA-Z0-9_$,\s]*$/.test(whatChanged) && !Object.values(ROLE_DESCRIPTIONS).includes(whatChanged)) {
|
|
1531
|
+
return `${verb} ${whatChanged} ${roleDesc}`;
|
|
1532
|
+
}
|
|
1533
|
+
}
|
|
1534
|
+
// When whatChanged is generic but hunk context provides specific function/class names
|
|
1535
|
+
if (hunkContext && hunkContext.length > 0) {
|
|
1536
|
+
const contextNames = hunkContext.length <= 2
|
|
1537
|
+
? hunkContext.join(' and ')
|
|
1538
|
+
: `${hunkContext[0]} and ${hunkContext.length - 1} more`;
|
|
1539
|
+
return `${verb} ${contextNames} ${roleDesc}`;
|
|
1540
|
+
}
|
|
1385
1541
|
// For multiple files or when we only have role info
|
|
1386
1542
|
if (semantic.hasMultipleRoles) {
|
|
1387
1543
|
// Changes span multiple concerns
|
|
@@ -1647,7 +1803,7 @@ class AnalyzerService {
|
|
|
1647
1803
|
});
|
|
1648
1804
|
}
|
|
1649
1805
|
// Suggestion 3: Alternative description style
|
|
1650
|
-
const altDescription = this.generateAlternativeDescription(analysis);
|
|
1806
|
+
const altDescription = this.generateAlternativeDescription(analysis, gitService_1.GitService.getDiff());
|
|
1651
1807
|
if (altDescription && altDescription !== analysis.description) {
|
|
1652
1808
|
const altFull = this.buildFullMessage(analysis.commitType, scope, altDescription, body, includeEmoji, ticketInfo, isBreakingChange, breakingChangeReasons);
|
|
1653
1809
|
suggestions.push({
|
|
@@ -1774,17 +1930,45 @@ class AnalyzerService {
|
|
|
1774
1930
|
/**
|
|
1775
1931
|
* Generate an alternative description style
|
|
1776
1932
|
*/
|
|
1777
|
-
static generateAlternativeDescription(analysis) {
|
|
1933
|
+
static generateAlternativeDescription(analysis, diff) {
|
|
1778
1934
|
const { fileChanges, filesAffected } = analysis;
|
|
1779
1935
|
const totalFiles = fileChanges.added.length + fileChanges.modified.length +
|
|
1780
1936
|
fileChanges.deleted.length + fileChanges.renamed.length;
|
|
1781
|
-
// For single file, provide more detail
|
|
1937
|
+
// For single file, provide more detail using extracted elements when available
|
|
1782
1938
|
if (totalFiles === 1) {
|
|
1939
|
+
const elements = this.extractAffectedElements(diff);
|
|
1940
|
+
const fileName = fileChanges.added[0] || fileChanges.modified[0] || fileChanges.deleted[0] || fileChanges.renamed[0];
|
|
1941
|
+
if (elements.length > 0) {
|
|
1942
|
+
const verb = analysis.commitType === 'feat' ? 'add' :
|
|
1943
|
+
analysis.commitType === 'fix' ? 'fix' :
|
|
1944
|
+
analysis.commitType === 'refactor' ? 'refactor' : 'update';
|
|
1945
|
+
if (elements.length === 1) {
|
|
1946
|
+
return `${verb} ${elements[0]} in ${fileName}`;
|
|
1947
|
+
}
|
|
1948
|
+
if (elements.length === 2) {
|
|
1949
|
+
return `${verb} ${elements[0]} and ${elements[1]} in ${fileName}`;
|
|
1950
|
+
}
|
|
1951
|
+
return `${verb} ${elements[0]}, ${elements[1]} and ${elements.length - 2} more in ${fileName}`;
|
|
1952
|
+
}
|
|
1953
|
+
// Fall back to hunk context for modified files where declarations aren't in the diff
|
|
1954
|
+
const hunkNames = this.extractHunkContext(diff);
|
|
1955
|
+
if (hunkNames.length > 0) {
|
|
1956
|
+
const verb = analysis.commitType === 'feat' ? 'add' :
|
|
1957
|
+
analysis.commitType === 'fix' ? 'fix' :
|
|
1958
|
+
analysis.commitType === 'refactor' ? 'refactor' : 'update';
|
|
1959
|
+
if (hunkNames.length === 1) {
|
|
1960
|
+
return `${verb} ${hunkNames[0]} in ${fileName}`;
|
|
1961
|
+
}
|
|
1962
|
+
if (hunkNames.length === 2) {
|
|
1963
|
+
return `${verb} ${hunkNames[0]} and ${hunkNames[1]} in ${fileName}`;
|
|
1964
|
+
}
|
|
1965
|
+
return `${verb} ${hunkNames[0]}, ${hunkNames[1]} and ${hunkNames.length - 2} more in ${fileName}`;
|
|
1966
|
+
}
|
|
1783
1967
|
if (fileChanges.added.length === 1) {
|
|
1784
1968
|
return `implement ${fileChanges.added[0]}`;
|
|
1785
1969
|
}
|
|
1786
1970
|
if (fileChanges.modified.length === 1) {
|
|
1787
|
-
return `
|
|
1971
|
+
return `update ${fileChanges.modified[0]}`;
|
|
1788
1972
|
}
|
|
1789
1973
|
}
|
|
1790
1974
|
// For multiple files, be more descriptive about categories
|