Skip to content

Commit 1d4adf9

Browse files
committed
fix: resolve Sonar findings and security violations
Signed-off-by: Arnab Nandy <arnab_nandy7@yahoo.com>
1 parent 8c3b003 commit 1d4adf9

7 files changed

Lines changed: 22 additions & 21 deletions

File tree

‎.github/workflows/sonarcloud.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545

4646
steps:
4747
- name: Checkout repository
48-
uses: actions/checkout@v7
48+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
4949
with:
5050
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
5151

@@ -56,7 +56,7 @@ jobs:
5656
cache: npm
5757

5858
- name: Install dependencies
59-
run: npm ci
59+
run: npm ci --ignore-scripts
6060

6161
- name: Run tests with coverage
6262
run: npm run test:coverage

‎src/components/theme-provider.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { ThemeProvider as NextThemesProvider } from "next-themes";
44

5-
export function ThemeProvider({ children }: { children: React.ReactNode }) {
5+
export function ThemeProvider({ children }: Readonly<{ children: React.ReactNode }>) {
66
return (
77
<NextThemesProvider
88
attribute="class"

‎src/features/issues/components/issue-card.tsx‎

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,18 @@ import { Separator } from "@/components/ui/separator";
1111
import { compactNumber, relativeDate } from "@/features/issues/lib/format";
1212
import type { Issue } from "@/features/issues/types/search";
1313

14-
export function IssueCard({ issue }: { issue: Issue }) {
14+
export function IssueCard({ issue }: Readonly<{ issue: Issue }>) {
15+
let qualityBadgeClassName =
16+
"bg-rose-500/10 text-rose-700 dark:text-rose-400 border-rose-500/20";
17+
18+
if (issue.qualityScore >= 70) {
19+
qualityBadgeClassName =
20+
"bg-emerald-500/10 text-emerald-700 dark:text-emerald-400 border-emerald-500/20";
21+
} else if (issue.qualityScore >= 40) {
22+
qualityBadgeClassName =
23+
"bg-amber-500/10 text-amber-700 dark:text-amber-400 border-amber-500/20";
24+
}
25+
1526
return (
1627
<Card>
1728
<CardHeader className="gap-3">
@@ -32,19 +43,9 @@ export function IssueCard({ issue }: { issue: Issue }) {
3243
: "Hacktoberfest label"}
3344
</Badge>
3445
) : null}
35-
{issue.qualityScore >= 70 ? (
36-
<Badge className="bg-emerald-500/10 text-emerald-700 dark:text-emerald-400 border-emerald-500/20">
37-
{issue.qualityScore} quality
38-
</Badge>
39-
) : issue.qualityScore >= 40 ? (
40-
<Badge className="bg-amber-500/10 text-amber-700 dark:text-amber-400 border-amber-500/20">
41-
{issue.qualityScore} quality
42-
</Badge>
43-
) : (
44-
<Badge className="bg-rose-500/10 text-rose-700 dark:text-rose-400 border-rose-500/20">
45-
{issue.qualityScore} quality
46-
</Badge>
47-
)}
46+
<Badge className={qualityBadgeClassName}>
47+
{issue.qualityScore} quality
48+
</Badge>
4849
{issue.helpStatus === "open" && (
4950
<Badge className="bg-emerald-500/10 text-emerald-700 dark:text-emerald-400 border-emerald-500/20">
5051
Needs Help

‎src/features/issues/components/metric.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export function Metric({ label, value }: { label: string; value: string }) {
1+
export function Metric({ label, value }: Readonly<{ label: string; value: string }>) {
22
return (
33
<div className="rounded-md border bg-background p-3">
44
<div className="text-xs text-muted-foreground">{label}</div>

‎src/features/issues/server/github-search.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function normalize(value: string | null) {
2828
}
2929

3030
function quoteSearchValue(value: string) {
31-
return /[\s#+.]/.test(value) ? `"${value.replaceAll('"', '\\"')}"` : value;
31+
return /[\s#+.]/.test(value) ? `"${value.replaceAll('"', String.raw`\"`)}"` : value;
3232
}
3333

3434
function buildTechQualifier(tech: string) {

‎src/features/issues/types/search.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export type GitHubIssue = {
4949
created_at: string;
5050
repository_url: string;
5151
labels: GitHubLabel[];
52-
assignee: unknown | null;
52+
assignee: unknown;
5353
assignees?: unknown[];
5454
};
5555

‎tests/features/issues/components/issue-finder.test.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ describe("IssueFinder", () => {
136136
render(<IssueFinder />);
137137
fireEvent.submit(screen.getByRole("button", { name: "Search" }).closest("form")!);
138138

139-
expect(await screen.findByText("Ranked issues")).toBeTruthy();
139+
expect(await screen.findByRole("heading", { name: "Ranked issues" })).toBeTruthy();
140140
expect(screen.getByText("Issue 24")).toBeTruthy();
141141
fireEvent.click(screen.getByRole("button", { name: "Load More" }));
142142
expect(await screen.findByText("Issue 25")).toBeTruthy();

0 commit comments

Comments
 (0)