-
Notifications
You must be signed in to change notification settings - Fork 0
Security dashboard #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces a security dashboard system that aggregates vulnerability data from multiple sources (GitHub Dependabot, Secret Scanning, Code Scanning, and Jira Bug Bounty) into a Google Sheets-based dashboard for centralized vulnerability management and tracking.
Key changes:
- Implements data import functions for four different security vulnerability sources
- Creates a unified data synchronization function that merges all vulnerability data into a normalized format
- Establishes standardized severity ratings and remediation tracking across all sources
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 32 comments.
Show a summary per file
| File | Description |
|---|---|
| security_dashboard/Code.gs | Main orchestration script with Google Sheets integration, repository fetching, and Dependabot import logic |
| security_dashboard/dataSynch.gs | Data synchronization function that merges vulnerabilities from all sources into a unified sheet |
| security_dashboard/SecretScanningImport.gs | GitHub Secret Scanning API integration and data import functionality |
| security_dashboard/CodeScanningImport.gs | GitHub Code Scanning API integration and data import functionality |
| security_dashboard/JiraImport.gs | Jira API integration for bug bounty vulnerability data import |
| security_dashboard/README.MD | Basic documentation describing the dashboard's purpose and planned metrics |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 12 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 11 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ]); | ||
| } //End Bug Bounty Load | ||
|
|
||
| ui.showSidebar(HtmlService.createHtmlOutput('<p>Merging audit results into universal tab...</p>').setTitle('Import Progress')); |
Copilot
AI
Dec 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The loop iterates over 'values.length' but should iterate over 'dataNormalizationValues.length'. The variable 'values' was used in previous date cleanup sections and may not have the correct length for this severity normalization loop, leading to incorrect iteration bounds or runtime errors.
| startRow = 2; | ||
| lastRow = allCodeScanningVulnerabilities.length |
Copilot
AI
Dec 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable 'startRow' is declared without var, let, or const. This creates a global variable. For consistency and proper scoping, it should be explicitly declared.
| startRow = 2; | |
| lastRow = allCodeScanningVulnerabilities.length | |
| let startRow = 2; | |
| let lastRow = allCodeScanningVulnerabilities.length; |
| //Easter Egg | ||
| if(sheet.getRange("'Unmatched Repos'!AA1").getValue()==42) | ||
| { | ||
| ui.showSidebar(HtmlService.createHtmlOutput('<p>Jockeying the chickens</p><br><img length=200 width=200 src="https://ih1.redbubble.net/image.5806802362.6920/bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.jpg"><br>').setTitle('Import Progress')); | ||
| Utilities.sleep(5000); | ||
| } | ||
|
|
Copilot
AI
Dec 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This "Easter Egg" functionality references a specific cell in an unrelated sheet and adds a delay to the import process. This type of non-functional code reduces code maintainability and can confuse future developers. Consider removing this or moving it to a separate, clearly documented function if it serves a specific purpose.
| //Easter Egg | |
| if(sheet.getRange("'Unmatched Repos'!AA1").getValue()==42) | |
| { | |
| ui.showSidebar(HtmlService.createHtmlOutput('<p>Jockeying the chickens</p><br><img length=200 width=200 src="https://ih1.redbubble.net/image.5806802362.6920/bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.jpg"><br>').setTitle('Import Progress')); | |
| Utilities.sleep(5000); | |
| } |
|
|
||
| ui.showSidebar(HtmlService.createHtmlOutput('<p>Normalizing severity ratings...</p>').setTitle('Import Progress')); | ||
|
|
||
| columnNumber = COL_BB_SEVERITY; |
Copilot
AI
Dec 19, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable 'columnNumber' is declared without var, let, or const. This creates a global variable. For consistency and proper scoping, it should be explicitly declared.
Merge security dashboard updates into security-tools