{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:04.464951Z","repo":{"ref":{"host":"github.com","owner":"ferventdesert","name":"Hawk"},"default_branch":"master","clone_url":"https://github.com/ferventdesert/Hawk.git","html_url":"https://github.com/ferventdesert/Hawk","description":"visualized crawler & ETL IDE written with C#/WPF","stars":3205,"forks":941,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":40981,"primary_language":"C#","license_spdx":"Apache-2.0","created_at":"2016-04-02T07:54:41Z","pushed_at":"2019-12-21T10:26:40Z","security_policy_url":null,"distribution":{"owner_created_at":"2013-08-25T11:47:40Z","owner_type":"User","release_assets":[{"name":"Hawk5.2.zip","size":8829273,"download_count":6526,"release_tag":"v5.2","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.2/Hawk5.2.zip"},{"name":"Hawk5.1.zip","size":7747764,"download_count":1704,"release_tag":"Hawk5.1","url":"https://github.com/ferventdesert/Hawk/releases/download/Hawk5.1/Hawk5.1.zip"},{"name":"Hawk5.1.zip","size":7747764,"download_count":59,"release_tag":"v5.0","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.0/Hawk5.1.zip"},{"name":"Hawk5.zip","size":7744236,"download_count":2391,"release_tag":"v5.0","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.0/Hawk5.zip"},{"name":"Hawk3_Release.zip","size":6932014,"download_count":3005,"release_tag":"Hawk3","url":"https://github.com/ferventdesert/Hawk/releases/download/Hawk3/Hawk3_Release.zip"}]}},"commit_sha":"cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb","profile":{"lines_by_language":{"C#":35891,"Python":259,"Shell":5},"files_by_category":{"source":212,"binary":177,"other":51,"docs":21,"oversized":11,"config":4},"source_lines":36155,"test_lines":0},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.65,"coverage":1.0,"label":"none-detected","breakdown":{"attributed_share":0.0,"suspected_share":0.0,"estimated_share":0.0,"ai_artifacts":0.0,"flagged_work_units":0.0,"flagged_releases":0.0,"style_index":0.0},"summary":"No AI attribution or AI-consistent velocity signals detected."},"quality":{"score":47.1,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":66.9,"duplication":40.4,"lint":96.4,"testing":0.0,"docs":65.0,"type_safety":40.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 13% of function code in complex or long functions; 15% duplicated lines. Weakest area: testing."},"security":{"score":68.4,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":79.2,"sast":89.0,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 5 high-severity SAST findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":238.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":53503.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2016-04":{"loc":23719,"attributed_loc":0},"2016-05":{"loc":2602,"attributed_loc":0},"2016-06":{"loc":212,"attributed_loc":0},"2016-07":{"loc":164,"attributed_loc":0},"2016-09":{"loc":240,"attributed_loc":0},"2016-10":{"loc":3883,"attributed_loc":0},"2016-11":{"loc":967,"attributed_loc":0},"2017-03":{"loc":72,"attributed_loc":0},"2017-05":{"loc":0,"attributed_loc":0},"2017-09":{"loc":4,"attributed_loc":0},"2017-10":{"loc":19,"attributed_loc":0},"2017-11":{"loc":0,"attributed_loc":0},"2017-12":{"loc":1577,"attributed_loc":0},"2018-01":{"loc":4033,"attributed_loc":0},"2018-02":{"loc":795,"attributed_loc":0},"2018-03":{"loc":276,"attributed_loc":0},"2018-04":{"loc":1277,"attributed_loc":0},"2018-05":{"loc":1401,"attributed_loc":0},"2018-07":{"loc":1306,"attributed_loc":0},"2018-08":{"loc":1612,"attributed_loc":0},"2018-09":{"loc":1503,"attributed_loc":0},"2018-10":{"loc":3619,"attributed_loc":0},"2018-11":{"loc":1413,"attributed_loc":0},"2018-12":{"loc":92,"attributed_loc":0},"2019-01":{"loc":2212,"attributed_loc":0},"2019-03":{"loc":26,"attributed_loc":0},"2019-04":{"loc":0,"attributed_loc":0},"2019-05":{"loc":6,"attributed_loc":0},"2019-06":{"loc":86,"attributed_loc":0},"2019-07":{"loc":266,"attributed_loc":0},"2019-08":{"loc":65,"attributed_loc":0},"2019-12":{"loc":56,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":139.0,"flagged_units":0.0,"pre_ai_era_bursts":1.0,"pre_ai_era_measured_loc":30936.0,"pre_ai_era_burst_loc":2784.0,"measured_loc":30936.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":696.0,"median_loc_per_hour":72.46079881656804,"pr_timed_units":0.0,"excluded_import_loc":22567.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":["77f259c41645f61b5d4df76e202b1b8751cdc44e"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":6.0,"flagged_releases":0.0,"max_loc_per_day":50.0},"findings":[],"evidence":[],"data":{"releases":[{"from":"2.0","to":"2.1","loc":360,"days":132.72,"loc_per_day":2.7,"flagged":false},{"from":"2.1","to":"Hawk3","loc":9249,"days":413.04,"loc_per_day":22.4,"flagged":false},{"from":"Hawk3","to":"v5.0-beta","loc":9460,"days":189.23,"loc_per_day":50.0,"flagged":false},{"from":"v5.0-beta","to":"v5.0","loc":2430,"days":54.91,"loc_per_day":44.3,"flagged":false},{"from":"v5.0","to":"Hawk5.1","loc":32,"days":111.97,"loc_per_day":0.3,"flagged":false},{"from":"Hawk5.1","to":"v5.2","loc":473,"days":231.07,"loc_per_day":2.0,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":36155.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":7.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"Hawk.ETL/Plugins/Web/NlpTF.cs","line":28,"fingerprint":"Hawk.ETL/Plugins/Web/NlpTF.cs:generic-api-key:28"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"Hawk.ETL/Plugins/Web/BaiduLocation.cs","line":17,"fingerprint":"Hawk.ETL/Plugins/Web/BaiduLocation.cs:generic-api-key:17"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"Hawk/Lang/en-US.xaml","line":2042,"fingerprint":"Hawk/Lang/en-US.xaml:generic-api-key:2042"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 8954d2cad1); removed from the current tree but still retrievable","path":"Hawk.Base/Plugins/Web/NlpTF.cs","line":24,"fingerprint":"8954d2cad1e976b673e4d0f5f7f0fa035acafae0:Hawk.Base/Plugins/Web/NlpTF.cs:generic-api-key:24"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 8954d2cad1); removed from the current tree but still retrievable","path":"Hawk.Base/Plugins/Web/BaiduLocation.cs","line":12,"fingerprint":"8954d2cad1e976b673e4d0f5f7f0fa035acafae0:Hawk.Base/Plugins/Web/BaiduLocation.cs:generic-api-key:12"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit d00a08fa70); removed from the current tree but still retrievable","path":"Hawk/Lang/DefaultLanguage.xaml","line":1193,"fingerprint":"d00a08fa70b48eed43a675144700c7c2c022a2be:Hawk/Lang/DefaultLanguage.xaml:generic-api-key:1193"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit d00a08fa70); removed from the current tree but still retrievable","path":"Hawk/Lang/zh-CN.xaml","line":1193,"fingerprint":"d00a08fa70b48eed43a675144700c7c2c022a2be:Hawk/Lang/zh-CN.xaml:generic-api-key:1193"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":8.0,"findings_high":5.0,"findings_medium":3.0,"findings_low":0.0,"weighted_findings":12.0,"scanned_lines":36155.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Hawk.Core/Connectors/MySQLConnector.cs","line":46,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Hawk.Core/Connectors/MySQLConnector.cs:46"},{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Hawk.Core/Connectors/SQLServerConnector.cs","line":43,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Hawk.Core/Connectors/SQLServerConnector.cs:43"},{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Hawk.Core/Connectors/SQLiteConnector.cs","line":39,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Hawk.Core/Connectors/SQLiteConnector.cs:39"},{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Hawk.Core/Connectors/SQLiteConnector.cs","line":209,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Hawk.Core/Connectors/SQLiteConnector.cs:209"},{"rule_id":"opengrep/csharp.lang.security.sqli.csharp-sqli","severity":"high","message":"Detected a formatted string in a SQL statement. This could lead to SQL injection if variables in the SQL statement are not properly sanitized. Use a prepared statements instead. You can obtain a PreparedStatement using 'SqlCommand' and 'SqlParameter'. [confidence medium]","path":"Hawk.Core/Connectors/SQLiteConnector.cs","line":383,"fingerprint":"csharp.lang.security.sqli.csharp-sqli:Hawk.Core/Connectors/SQLiteConnector.cs:383"},{"rule_id":"opengrep/csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization","severity":"medium","message":"The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as possible, even if they believe the data they're processing to be trustworthy. BinaryFormatter is insecure and can't be made secure [confidence high]","path":"Hawk.Core/Utils/CustomSerializer.cs","line":31,"fingerprint":"csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization:Hawk.Core/Utils/CustomSerializer.cs:31"},{"rule_id":"opengrep/csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization","severity":"medium","message":"The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as possible, even if they believe the data they're processing to be trustworthy. BinaryFormatter is insecure and can't be made secure [confidence high]","path":"Hawk.Core/Utils/CustomSerializer.cs","line":46,"fingerprint":"csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization:Hawk.Core/Utils/CustomSerializer.cs:46"},{"rule_id":"opengrep/csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization","severity":"medium","message":"The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as possible, even if they believe the data they're processing to be trustworthy. BinaryFormatter is insecure and can't be made secure [confidence high]","path":"Hawk.Core/Utils/CustomSerializer.cs","line":61,"fingerprint":"csharp.lang.security.insecure-deserialization.insecure-binaryformatter-deserialization:Hawk.Core/Utils/CustomSerializer.cs:61"}],"evidence":[],"data":{"rulesets":["csharp","python","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.005,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":5.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v5.2 ships Hawk5.2.zip (6526 downloads)","ref":"Hawk5.2.zip","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.2/Hawk5.2.zip","weight":0.0},{"kind":"binary-release-asset","description":"release Hawk5.1 ships Hawk5.1.zip (1704 downloads)","ref":"Hawk5.1.zip","url":"https://github.com/ferventdesert/Hawk/releases/download/Hawk5.1/Hawk5.1.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v5.0 ships Hawk5.1.zip (59 downloads)","ref":"Hawk5.1.zip","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.0/Hawk5.1.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v5.0 ships Hawk5.zip (2391 downloads)","ref":"Hawk5.zip","url":"https://github.com/ferventdesert/Hawk/releases/download/v5.0/Hawk5.zip","weight":0.0},{"kind":"binary-release-asset","description":"release Hawk3 ships Hawk3_Release.zip (3005 downloads)","ref":"Hawk3_Release.zip","url":"https://github.com/ferventdesert/Hawk/releases/download/Hawk3/Hawk3_Release.zip","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":1399.0,"function_nloc":20213.0,"mean_ccn":2.82,"p90_ccn":6.0,"complex_functions":16.0,"long_functions":13.0,"many_param_functions":1.0,"risky_nloc_share":0.1338},"findings":[],"evidence":[{"kind":"complex-function","description":"SmartETLTool::RefreshSamples in Hawk.ETL/Process/SmartETLTool.cs: complexity 46, 195 lines","ref":"Hawk.ETL/Process/SmartETLTool.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Process/SmartETLTool.cs#L1065","weight":0.7666666666666667},{"kind":"complex-function","description":"DataProcessManager::Init in Hawk.ETL/Managements/DataProcessManager.cs: complexity 37, 470 lines","ref":"Hawk.ETL/Managements/DataProcessManager.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Managements/DataProcessManager.cs#L227","weight":0.6166666666666667},{"kind":"complex-function","description":"DataManager::Init in Hawk.ETL/Managements/DataManager.cs: complexity 33, 350 lines","ref":"Hawk.ETL/Managements/DataManager.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Managements/DataManager.cs#L260","weight":0.55},{"kind":"complex-function","description":"XPathAnalyzer::GetDiff in Hawk.ETL/Crawlers/XPathAnalyzer.cs: complexity 22, 40 lines","ref":"Hawk.ETL/Crawlers/XPathAnalyzer.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Crawlers/XPathAnalyzer.cs#L135","weight":0.36666666666666664},{"kind":"complex-function","description":"XPathAnalyzer::GetDiff in Hawk.ETL/Crawlers/XPathx.cs: complexity 22, 40 lines","ref":"Hawk.ETL/Crawlers/XPathx.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Crawlers/XPathx.cs#L135","weight":0.36666666666666664},{"kind":"complex-function","description":"ETLHelper::FuncAdd in Hawk.ETL/Interfaces/IColumnDataSorter.cs: complexity 22, 111 lines","ref":"Hawk.ETL/Interfaces/IColumnDataSorter.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Interfaces/IColumnDataSorter.cs#L589","weight":0.36666666666666664},{"kind":"complex-function","description":"SmartETLTool::ExecuteDatas in Hawk.ETL/Process/SmartETLTool.cs: complexity 22, 119 lines","ref":"Hawk.ETL/Process/SmartETLTool.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Process/SmartETLTool.cs#L723","weight":0.36666666666666664},{"kind":"complex-function","description":"XPathAnalyzer::GetDiffNodes in Hawk.ETL/Crawlers/XPathAnalyzer.cs: complexity 21, 110 lines","ref":"Hawk.ETL/Crawlers/XPathAnalyzer.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Crawlers/XPathAnalyzer.cs#L361","weight":0.35},{"kind":"complex-function","description":"XPathAnalyzer::GetDiffNodes in Hawk.ETL/Crawlers/XPathx.cs: complexity 21, 110 lines","ref":"Hawk.ETL/Crawlers/XPathx.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Crawlers/XPathx.cs#L361","weight":0.35},{"kind":"complex-function","description":"SmartCrawler::GetXPathAsync in Hawk.ETL/Process/SmartCrawler.cs: complexity 20, 100 lines","ref":"Hawk.ETL/Process/SmartCrawler.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.ETL/Process/SmartCrawler.cs#L431","weight":0.3333333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":20090.0,"duplicated_lines":3032.0,"duplicated_share":0.1509,"files":212.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/DBConnectorBase.cs:409 and Hawk.Core/Connectors/DataCollection.cs:77","ref":"Hawk.Core/Connectors/DBConnectorBase.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/DBConnectorBase.cs#L409","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/FileConnectorXML.cs:73 and Hawk.Core/Connectors/FileConnectorXML.cs:103","ref":"Hawk.Core/Connectors/FileConnectorXML.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/FileConnectorXML.cs#L73","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/MongoDBConnector.cs:530 and Hawk.Core/Connectors/MongoDBConnector.cs:554","ref":"Hawk.Core/Connectors/MongoDBConnector.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/MongoDBConnector.cs#L530","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/Vitural/AsyncVirtualizingCollection.cs:23 and Hawk.Core/Connectors/Vitural/AsyncVirtualizingCollection.cs:34","ref":"Hawk.Core/Connectors/Vitural/AsyncVirtualizingCollection.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/Vitural/AsyncVirtualizingCollection.cs#L23","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/Vitural/DataBaseVirtualCollection.cs:25 and Hawk.Core/Connectors/Vitural/DataBaseVirtualProvider.cs:25","ref":"Hawk.Core/Connectors/Vitural/DataBaseVirtualCollection.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/Vitural/DataBaseVirtualCollection.cs#L25","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/Vitural/EnumableVirtualCollection.cs:17 and Hawk.Core/Connectors/Vitural/EnumableVirtualProvider.cs:17","ref":"Hawk.Core/Connectors/Vitural/EnumableVirtualCollection.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/Vitural/EnumableVirtualCollection.cs#L17","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Connectors/Vitural/VirtualizingCollection.cs:311 and Hawk.Core/Connectors/Vitural/VirtualizingCollection.cs:335","ref":"Hawk.Core/Connectors/Vitural/VirtualizingCollection.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Connectors/Vitural/VirtualizingCollection.cs#L311","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Properties/AssemblyInfo.cs:13 and Hawk.ETL.Controls/Properties/AssemblyInfo.cs:15","ref":"Hawk.Core/Properties/AssemblyInfo.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Properties/AssemblyInfo.cs#L13","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Properties/AssemblyInfo.cs:15 and Hawk.ETL/Properties/AssemblyInfo.cs:15","ref":"Hawk.Core/Properties/AssemblyInfo.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Properties/AssemblyInfo.cs#L15","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Hawk.Core/Utils/ControlsExtended.cs:136 and Hawk.Core/Utils/ControlsExtended.cs:181","ref":"Hawk.Core/Utils/ControlsExtended.cs","url":"https://github.com/ferventdesert/Hawk/blob/cc3560b4ca8f1efbd6323351ce1a67bc41d51ccb/Hawk.Core/Utils/ControlsExtended.cs#L136","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":15.0,"weighted_findings":5.25,"scanned_lines":36155.0,"category:best-practice":15.0},"findings":[{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"Docs/trans_img.py","line":16,"fingerprint":"python.requests.best-practice.use-raise-for-status:Docs/trans_img.py:16"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"Docs/trans_img.py","line":16,"fingerprint":"python.requests.best-practice.use-timeout:Docs/trans_img.py:16"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.Core/Connectors/DBConnectorBase.cs","line":514,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.Core/Connectors/DBConnectorBase.cs:514"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.Core/Connectors/MySQLConnector.cs","line":53,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.Core/Connectors/MySQLConnector.cs:53"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.Core/Connectors/MySQLConnector.cs","line":68,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.Core/Connectors/MySQLConnector.cs:68"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.Core/Connectors/SQLiteConnector.cs","line":214,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.Core/Connectors/SQLiteConnector.cs:214"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.Core/Connectors/SQLiteConnector.cs","line":245,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.Core/Connectors/SQLiteConnector.cs:245"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.ETL/Crawlers/HttpHelper.cs","line":584,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.ETL/Crawlers/HttpHelper.cs:584"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.ETL/Crawlers/HttpHelper.cs","line":588,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.ETL/Crawlers/HttpHelper.cs:588"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.ETL/Crawlers/XPathAnalyzer.cs","line":1059,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.ETL/Crawlers/XPathAnalyzer.cs:1059"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"Hawk.ETL/Crawlers/XPathx.cs","line":1058,"fingerprint":"csharp.lang.best-practice.structured-logging:Hawk.ETL/Crawlers/XPathx.cs:1058"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"HawkScheduler/Program.cs","line":98,"fingerprint":"csharp.lang.best-practice.structured-logging:HawkScheduler/Program.cs:98"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"HawkScheduler/Program.cs","line":147,"fingerprint":"csharp.lang.best-practice.structured-logging:HawkScheduler/Program.cs:147"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"HawkScheduler/Program.cs","line":152,"fingerprint":"csharp.lang.best-practice.structured-logging:HawkScheduler/Program.cs:152"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"HawkScheduler/Program.cs","line":161,"fingerprint":"csharp.lang.best-practice.structured-logging:HawkScheduler/Program.cs:161"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":36155.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":151.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":37.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}