Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e536e39
Add reporter from @arthurfiorette
EzraBrooks Apr 28, 2025
8a881b4
Cleanup and test
EzraBrooks Apr 28, 2025
7e94c8c
refactor: githubActionsLogger
cylewaitforit Aug 22, 2025
45a1754
fix: clean up types
cylewaitforit Aug 22, 2025
60d8800
Merge branch 'main' into github-actions-reporter
cylewaitforit Aug 22, 2025
89ca55b
fix: types
cylewaitforit Aug 22, 2025
5c0e4af
tests: add tests against additional fixtures
cylewaitforit Aug 26, 2025
f64a0f4
Merge branch 'main' into github-actions-reporter
cylewaitforit Aug 26, 2025
57d1194
fix: kebab-case reporter name
cylewaitforit Sep 4, 2025
4afde72
Merge branch 'main' into github-actions-reporter
cylewaitforit Sep 4, 2025
7af3038
ci: use --reporter github-actions
cylewaitforit Sep 4, 2025
d33ba78
fix: use relative paths
cylewaitforit Sep 4, 2025
de0c959
Merge branch 'main' into github-actions-reporter
cylewaitforit Sep 7, 2025
a586eeb
test: add exact positions to assertions
cylewaitforit Sep 7, 2025
dbd4aa6
fix: get unused files severity and add symbol to message
cylewaitforit Sep 7, 2025
1437b79
fix: try 0 position for issues without position
cylewaitforit Sep 7, 2025
4805b32
Add co-author credit for GitHub Actions reporter
cylewaitforit Sep 7, 2025
0d4e97a
fix: use 1 based positions for items without position info
cylewaitforit Sep 7, 2025
ece51d1
feat: add configuration hints
cylewaitforit Sep 7, 2025
031eed5
feat: add emoji to title
cylewaitforit Sep 8, 2025
cd7b901
feat: add issue type titles
cylewaitforit Sep 8, 2025
494bb5d
feat: move type to title and add in file to message
cylewaitforit Sep 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add reporter from @arthurfiorette
  • Loading branch information
EzraBrooks committed Apr 28, 2025
commit e536e39e8bbd47821f7ff2af03ee01597e6c9eff
66 changes: 66 additions & 0 deletions packages/knip/src/reporters/githubActions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import core from '@actions/core';
import type { ReporterOptions } from '../types/issues.js';

export const ISSUE_TYPES = [
// must be _files
'_files',
'dependencies',
'devDependencies',
'optionalPeerDependencies',
'unlisted',
'binaries',
'unresolved',
'exports',
'nsExports',
'types',
'nsTypes',
'enumMembers',
'classMembers',
'duplicates',
] as const;

const ISSUE_TYPE_TITLE = {
files: 'Unused files',
_files: 'Unused files',
dependencies: 'Unused dependencies',
devDependencies: 'Unused devDependencies',
optionalPeerDependencies: 'Referenced optional peerDependencies',
unlisted: 'Unlisted dependencies',
binaries: 'Unlisted binaries',
unresolved: 'Unresolved imports',
exports: 'Unused exports',
nsExports: 'Exports in used namespace',
types: 'Unused exported types',
nsTypes: 'Exported types in used namespace',
enumMembers: 'Unused exported enum members',
classMembers: 'Unused exported class members',
duplicates: 'Duplicate exports',
};

export default (options: ReporterOptions) => {
for (const issueName of ISSUE_TYPES) {
const issue = options.issues[issueName];

for (const file of Object.keys(issue)) {
const issueSet = issue[file];

for (const issueKey of Object.keys(issueSet)) {
const issueItem = issueSet[issueKey];

if (issueItem.isFixed || issueItem.severity === 'off') {
continue;
}

const log = issueItem.severity === 'error' ? core.error : core.warning;

log(ISSUE_TYPE_TITLE[issueItem.type], {
file: file,
startLine: issueItem.line,
endLine: issueItem.line,
endColumn: issueItem.col,
startColumn: issueItem.col,
});
}
}
}
};
2 changes: 2 additions & 0 deletions packages/knip/src/reporters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import codeclimate from './codeclimate.js';
import codeowners from './codeowners.js';
import compact from './compact.js';
import disclosure from './disclosure.js';
import githubActions from './githubActions.js';
import json from './json.js';
import markdown from './markdown.js';
import symbols from './symbols.js';
Expand All @@ -14,4 +15,5 @@ export default {
codeclimate,
json,
markdown,
githubActions,
};