Skip to content

ERROR Unable to parse file #141

Description

@imdmahajankanika

Hello, I am using sonarqube v25.3.0.104237 with 0.2.3 version of this plugin installed and i am getting below errors during the scan.

repository
10:49:26.575 INFO  Load metrics repository (done) | time=61ms
10:49:27.350 INFO  Sensor RustSensor [communityrust]

10:49:27.766 ERROR Unable to parse file: balance-sheet/src/package/library/evaluation.rs
10:49:27.768 ERROR Parse error at line 180 column 32:
170:                 Ok(m_id) => {
171:                     if let AppResponse::Ok(mev) =
172:                         mission_evaluation::database::get_last_evaluation_in_period(
173:                             connections_manager,
174:                             m_id,
175:                             NaiveDateTime::new(evaluation_start, ts),
176:                             NaiveDateTime::new(evaluation_end, te),
177:                         )
178:                         .into()
179: 
180:                         && let AppResponse::Ok(dts) = mission_evaluation_detail::database::get_mission_evaluation_data_by_evaluation_id(
                                    ^
181:                         connections_manager,
182:                         mev.id
183:                         ).into() {
184:                             for dt in dts {
185:                                 if ref_search.contains(&dt.field_id.clone().to_string()) {
186:                                     let field_key: String = format!(
187:                                         "{}_{}",
188:                                         dt.field_id.clone(),
189:                                         period_mission.id
190:                                     );

10:49:28.330 ERROR Unable to parse file: directory/src/package/client/client.scope.rs
10:49:28.331 ERROR Parse error at line 104 column 20:
 94:     connections_manager: &ConnectionsManager,
 95:     claims: &Claims,
 96:     method: ScopeAction,
 97:     scope: &Scope,
 98: ) -> ScopeAuthorization<i64> {
 99:     let mut boss_filters = BossFilter::default().boss_ids(vec![claims.sub]);
100: 
101:     if method == ScopeAction::UPDATE {
102:         boss_filters.types = Some(vec![UserBossType::Manager, UserBossType::CoManager]);
103:         if claims.role.contains(&UserRole::Adv)
104:             && let Some(types) = boss_filters.types.as_mut()
                        ^
105:         {
106:             types.extend(vec![UserBossType::Adv]);
107:         }
108:     }
109: 
110:     if scope == &Scope::Perso {
111:         boss_filters = boss_filters.root(true);
112:     }
113: 
114:     let boss_ids = boss::database::get_user_bosses(connections_manager, boss_filters)

10:49:29.312 ERROR Unable to parse file: lib_util/src/lib/xlsx.rs
10:49:29.313 ERROR Parse error at line 74 column 20:
64:         T: Debug + Serialize + for<'a> Deserialize<'a>,
65:     {
66:         let mut row_writing_count = 0;
67:         // Create a sheet on the workbook
68:         let mut worksheet = match workbook.add_worksheet(Some(self.name.as_str())) {
69:             Ok(worksheet) => worksheet,
70:             Err(err) => return Err(err.to_string()),
71:         };
72:         // Set the col width of the sheet
73:         if let Some(cols_width) = self.cols_width
74:             && let Err(err) = worksheet.set_column(0, 100, cols_width, None)
                       ^
75:         {
76:             return Err(err.to_string());
77:         }
78:         // If no value to export return empty sheet
79:         if elements.is_empty() {
80:             return Ok(());
81:         }
82:         // Get the header of the first element
83:         let header = match get_struct_keys_and_values(&elements[0]) {
84:             Ok(destructured_item) => {
10:49:29.767 ERROR Unable to parse file: directory/src/package/consultant/consultant.scope.rs
10:49:29.767 ERROR Parse error at line 105 column 20:
 95:     claims: &Claims,
 96:     method: ScopeAction,
 97: ) -> ScopeAuthorization<i64> {
 98:     let mut boss_filters = BossFilter::default().boss_ids(vec![claims.sub]);
 99: 
100:     if method == ScopeAction::UPDATE {
101:         boss_filters.types = Some(vec![UserBossType::Manager, UserBossType::CoManager]);
102:         if [UserRole::Gp, UserRole::RgnAssist]
103:             .iter()
104:             .any(|role| claims.role.contains(role))
105:             && let Some(types) = boss_filters.types.as_mut()
                        ^
106:         {
107:             types.extend(vec![UserBossType::Gp]);
108:         }
109:     }
110: 
111:     if scope == &Scope::Perso {
112:         boss_filters = boss_filters.root(true);
113:     }
114: 
115:     let boss_ids = boss::database::get_user_bosses(connections_manager, boss_filters)
10:49:31.163 ERROR Unable to parse file: balance-sheet/src/package/evaluation_module/evaluation_module.controller.rs
10:49:31.163 ERROR Parse error at line 212 column 60:
202:                                             data_value = pm.mission_end.clone();
203:                                         }
204:                                         val if val == AutofillField::ReferenceValue.as_str() => {
205:                                             if m.reference_field_id.is_some() {
206:                                                 let field_key: String = format!(
207:                                                     "{}_{}",
208:                                                     m.reference_field_id.clone().unwrap(),
209:                                                     pm.id.clone()
210:                                                 );
211:                                                 if evaluation_data.contains_key(&field_key)
212:                                                     && let Some(val) =
                                                                ^
213:                                                         evaluation_data.get(&field_key)
214:                                                 {
215:                                                     data_value = val.value.clone();
216:                                                 }
217:                                             }
218:                                         }
219:                                         _ => {}
220:                                     }
221:                                 }
222: 
10:49:32.027 ERROR Unable to parse file: directory/src/package/client/client.controller.rs
10:49:32.028 ERROR Parse error at line 654 column 16:
644:     }
645: 
646:     // Manager might not have a traffic light for this client
647:     if let AppResponse::Ok(traffic) = traffic_light::database::get_traffic_light(
648:         connections_manager,
649:         TrafficLightFilter::new()
650:             .client_ids(vec![client_id])
651:             .user_ids(vec![claims.sub]),
652:     )
653:     .into()
654:         && let Some(err) =
                    ^
655:             traffic_light::database::detach_traffic_light(connections_manager, traffic.id).err()
656:     {
657:         log::error!(
658:             "Failed to detach manager {} for client {client_id}. Err: {err:?}",
659:             claims.sub
660:         );
661:     }
662: 
663:     manager_per_client::database::unlink_manager_to_client(
664:         connections_manager,
10:49:32.400 ERROR Unable to parse file: storage/src/package/storage/storage.view.rs
10:49:32.401 ERROR Parse error at line 46 column 16:
36:     claims: Claims,
37:     file_id: &str,
38:     options: FileResponseOptions,
39: ) -> impl Responder<'r, 'static> {
40:     let file = handle_get_file_by_id(connections_manager, file_id)
41:         .await
42:         .into();
43:     log::info!("Getting file {file_id} with options: {options:?}");
44: 
45:     if let AppResponse::Ok(ref file) = file
46:         && let Some(metadata) = &file.metadata
                   ^
47:         && let Some(privileges) = metadata.privileges
48:         && claims.authorize(vec![privileges]).is_err()
49:     {
50:         return Err(rocket::response::status::Custom(
51:             rocket::http::Status::Unauthorized,
52:             None::<FileAppResponse>,
53:         ));
54:     }
55: 
56:     Ok(FileAppResponse(file, options))
10:49:33.195 ERROR Unable to parse file: timeline/src/package/correspondances/correspondances.controller.rs
10:49:33.196 ERROR Parse error at line 206 column 20:
196:         // format worker_gender
197:         if format_gender {
198:             correspondance.worker_gender = match correspondance.worker_gender.as_str() {
199:                 "m" => "Mr".to_string(),
200:                 "mrs" => "Mme".to_string(),
201:                 other => other.to_string(),
202:             };
203:         }
204:         // Apply manager_branch_id/name in filters.end_date
205:         if let Some(manager_id) = &correspondance.manager_id
206:             && let Some(contract) = manager_contracts.get(manager_id)
                        ^
207:         {
208:             correspondance.manager_branch_id_at_date = Some(contract.branch_id);
209:             if let Some(branch) = branches.get(&contract.branch_id) {
210:                 correspondance.manager_branch_name_at_date = Some(branch.name.clone());
211:             }
212:         }
213:         // Get country_holiday
214:         let country_holiday = correspondance
215:             .worker_branch_id
216:             .and_then(|worker_branch_id| branches.get(&worker_branch_id))
10:49:35.176 ERROR Unable to parse file: balance-sheet/src/package/person_evaluation/person_evaluation.controller.rs
10:49:35.176 ERROR Parse error at line 1017 column 16:
1007: #[tracing::instrument(level = "error")]
1008: pub async fn retrieve_autocomplete_proto_data(person: PersonResponse) -> HashMap<String, String> {
1009:     // RETRIEVE ALL AUTOCOMPLETE DATA
1010:     let mut autocomplete_data: HashMap<String, String> = HashMap::new();
1011: 
1012:     // Retrieve the current manager
1013:     let mut mgr_name = "".to_string();
1014:     let mut exp_years = 0;
1015: 
1016:     if let Some(manager_id) = person.manager_id
1017:         && let Ok(mgr) = proto_get_person_by_id(manager_id).await
                     ^
1018:     {
1019:         mgr_name = format!("{} {}", mgr.first_name, mgr.last_name);
1020:     }
1021: 
1022:     autocomplete_data.insert(AutofillFieldTag::ManagerName.to_string(), mgr_name);
1023: 
1024:     // Retrieve the current contract data
1025:     let mut ctr_sd = "".to_string();
1026: 
1027:     if let Ok(ctrc) = proto_get_current_contract_for_person(person.id).await {
10:49:37.887 ERROR Unable to parse file: api-live/src/package/api_live/api_live.utils.rs
10:49:37.888 ERROR Parse error at line 67 column 20:
57: impl<'r> FromRequest<'r> for SubmitAvatarGuard {
58:     type Error = serde_json::Value;
59: 
60:     /// This Request Guard reproduces the behavior of EOS legacy code, by checking if the provided file format matches with the expected ones
61:     /// It is by no mean the safe way to do so, but here we are simply trying to be ISO with legacy
62:     async fn from_request(req: &'r rocket::Request<'_>) -> Outcome<Self, Self::Error> {
63:         let regex = regex::Regex::new(r#"filename="[^"\n\r]+\.([A-Za-z0-9]+)""#)
64:             .expect("Regex should be valid");
65: 
66:         if let Some(header_content) = req.headers().get_one("Content-Disposition")
67:             && let Some(matches) = regex.captures(header_content)
                       ^
68:             && let Some(extension) = matches.get(1)
69:             // Checks that the avatar file extension is valid
70:             && ValidAvatarFileExtension::from_str(extension.as_str()).is_ok()
71:         {
72:             Outcome::Success(SubmitAvatarGuard)
73:         } else {
74:             Outcome::Error((
75:                 Status::NotFound,
76:                 serde_json::json!("invalid-file-extension"),
77:             ))
10:49:39.481 ERROR Unable to parse file: storage/src/library/pptx_patcher.rs
10:49:39.482 ERROR Parse error at line 226 column 32:
216:                                 writer.write_event(Event::Text(BytesText::from_escaped(new_text)))
217:                             {
218:                                 return AppResponse::InternalError(json!(format!(
219:                                     "Failed to write patched text: {err}"
220:                                 )));
221:                             }
222:                         }
223:                     }
224: 
225:                     if !written
226:                         && let Err(err) =
                                    ^
227:                             writer.write_event(Event::Text(BytesText::from_escaped(text)))
228:                     {
229:                         log::error!("Something happened while writing text to ppt: {err}");
230:                     }
231:                 }
232: 
233:                 Ok(Event::Eof) => break,
234:                 // sink all the others events types
235:                 Ok(event) => {
236:                     if let Err(err) = writer.write_event(event) {
10:49:40.732 ERROR Unable to parse file: directory/src/package/staff/staff.scope.rs
10:49:40.732 ERROR Parse error at line 102 column 20:
 92:     claims: &Claims,
 93:     scope: &Scope,
 94:     method: ScopeAction,
 95: ) -> ScopeAuthorization<i64> {
 96:     let mut boss_filters = BossFilter::default().boss_ids(vec![claims.sub]);
 97:     if method == ScopeAction::UPDATE {
 98:         boss_filters.types = Some(vec![UserBossType::Manager]);
 99:         if [UserRole::Gp, UserRole::RgnAssist]
100:             .iter()
101:             .any(|role| claims.role.contains(role))
102:             && let Some(types) = boss_filters.types.as_mut()
                        ^
103:         {
104:             types.extend(vec![UserBossType::Gp]);
105:         }
106:     }
107: 
108:     if scope == &Scope::Perso {
109:         boss_filters = boss_filters.root(true);
110:     }
111: 
112:     let mut boss_ids = boss::database::get_user_bosses(connections_manager, boss_filters)
10:49:41.823 ERROR Unable to parse file: directory/src/package/prospection/prospection.controller.rs
10:49:41.824 ERROR Parse error at line 597 column 16:
587:             refusal_reason,
588:         };
589:         dispatcher.on_prospection_attribution_refused(connections_manager);
590: 
591:         return AppResponse::Ok(String::from("Successfully denied")).into();
592:     }
593: 
594:     // Si le manager accepte mais demande de ne plus être sur cette prospection,
595:     // on le détache depuis traffic light
596:     if let AssignmentAnswer::YesAndDetach = new_answer.answer
597:         && let AppResponse::Ok(traffic) = traffic_light::database::get_traffic_light(
                    ^
598:             connections_manager,
599:             TrafficLightFilter::new()
600:                 .prospected_client_ids(vec![prospection_id])
601:                 .user_ids(vec![claims.sub]),
602:         )
603:         .into()
604:     {
605:         traffic_light::database::detach_traffic_light(connections_manager, traffic.id)?;
606:     }
607: 
10:49:42.428 ERROR Unable to parse file: datatrack/src/package/manager/manager.database.rs
10:49:42.429 ERROR Parse error at line 224 column 16:
214:     let t = Into::<TracedAppResponse<DatatrackManagerModel>>::into(
215:         connections_manager.pg_pool().run(|conn| {
216:             diesel::insert_into(datatrack_history_manager::table)
217:                 .values(&data.to_manager(dt, dt))
218:                 .get_result(conn)
219:         }),
220:     )?;
221: 
222:     let current_manager = update_datatrack_manager_end_dates(connections_manager, t.person_id)?;
223:     if !current_manager.is_empty()
224:         && let Some(last_manager) = current_manager.last().cloned()
                    ^
225:     {
226:         connections_manager.pg_pool().run(|conn| {
227:             diesel::update(user_person::table.find(t.person_id))
228:                 .set(user_person::manager_id.eq(last_manager.manager_id))
229:                 .execute(conn)
230:                 .unwrap_or(0)
231:         });
232:     }
233:     get_manager_change_by_id(connections_manager, t.id)
234: }
10:49:43.037 ERROR Unable to parse file: storage/src/library/tmp_file.rs
10:49:43.038 ERROR Parse error at line 30 column 20:
20: pub struct TmpFile<'a> {
21:     path: &'a Path,
22: }
23: 
24: impl<'a> TmpFile<'a> {
25:     pub fn new(path: &'a str) -> AppResponse<TmpFile<'a>> {
26:         let file_path = Path::new(path);
27: 
28:         // if the file doesn't exists, create an empty one
29:         if !file_path.exists()
30:             && let Err(err) = fs::File::create(file_path)
                       ^
31:         {
32:             log::debug!("(TmpFile) Error: Failed to create TmpFile: {err}");
33:             return AppResponse::InternalError(json!("Failed to create temporary file"));
34:         }
35:         debug_assert!(file_path.exists(), "File should exist by now");
36: 
37:         AppResponse::Ok(Self { path: file_path })
38:     }
39: 
40:     pub fn content(&self) -> AppResponse<Vec<u8>> {
10:49:43.588 ERROR Unable to parse file: storage/src/package/document_generation/quote/quote.model.rs
10:49:43.589 ERROR Parse error at line 131 column 20:
121:             .with_patches(&prepared)
122:             .compile_template()?
123:             .save_to_bucket_with_permissions(bucket_connection, UserRole::Mgr)
124:             .await
125:     }
126: 
127:     async fn embed_images(&self, bucket_connection: &Client) -> Quote {
128:         let mut prepared = self.clone();
129: 
130:         if let Some(file_id) = &self.client_logo_uri
131:             && let Some(mut image) =
                        ^
132:                 ImageWithDims::load_from_fs_by_id(bucket_connection, file_id).await
133:         {
134:             image.scale_object_fit(100);
135:             prepared.client_logo.replace(image.bundle());
136:             return prepared;
137:         }
138: 
139:         if let Some(mut image) = ImageWithDims::load_from_fs_by_filter(
140:             bucket_connection,
141:             FindFilters {
10:49:44.286 ERROR Unable to parse file: api-live/src/package/api_live/api_live.controller.rs
10:49:44.287 ERROR Parse error at line 385 column 20:
375:     .collect();
376: 
377:     // get branch associate that is the big boss of each manager
378:     let mut branches_partners: HashMap<i64, i64> = HashMap::new();
379:     for manager_id in manager_ids {
380:         let mut currently_tested_manager_id = managers_persons
381:             .get(&manager_id)
382:             .and_then(|person| person.manager_id)
383:             .unwrap_or(manager_id);
384:         if let Some(contract) = managers_contracts.get(&manager_id)
385:             && let Some(associates) = associates_by_branches.get(&contract.branch_id)
                        ^
386:         {
387:             // find the hierarchy manager which id matches an associate of the branch
388:             while !associates.contains(&currently_tested_manager_id) {
389:                 if let AppResponse::Ok(person) = call_proto(
390:                     DirectoryClient::get_person_by_id,
391:                     directory::PersonRequest {
392:                         id: currently_tested_manager_id,
393:                     },
394:                 )
395:                 .await
10:49:44.619 ERROR Unable to parse file: balance-sheet/src/package/mission_evaluation/mission_evaluation.controller.rs
10:49:44.620 ERROR Parse error at line 735 column 16:
725:     // * If evaluation.status = CLIENT_PENDING/PENDING => load data and merge with autofill
726:     // * If evaluation.status = CLIENT_CREATED/CREATED => load autofill only (any saved data will be overwritten)
727:     // * If evaluation.status = CLIENT_FINISHED/PUBLISHED => load data only
728:     let mut evaluation_data: HashMap<String, EvaluationData> = HashMap::new();
729: 
730:     // retrieved saved data
731:     if (mission_eval.status == MissionEvaluationStatus::ClientPending.as_str()
732:         || mission_eval.status == MissionEvaluationStatus::Pending.as_str()
733:         || mission_eval.status == MissionEvaluationStatus::ClientFinished.as_str()
734:         || mission_eval.status == MissionEvaluationStatus::Published.as_str())
735:         && let AppResponse::Ok(fields) =
                    ^
736:             mission_evaluation_detail::database::get_mission_evaluation_data_by_evaluation_id(
737:                 connections_manager,
738:                 mission_eval.id,
739:             )
740:             .into()
741:     {
742:         for m in fields.into_iter() {
743:             if m.value.clone().is_some() {
744:                 let key = format!("{}_{}", m.field_id.clone(), m.moduleorder.clone());
745:                 evaluation_data.insert(
10:49:47.228 ERROR Unable to parse file: directory/src/package/client/client.database.rs
10:49:47.228 ERROR Parse error at line 342 column 20:
332:             let mut names_filter: Box<dyn BoxableExpression<_, Pg, SqlType = Bool>> =
333:                 Box::new(diesel::dsl::sql("FALSE"));
334:             for name in names {
335:                 names_filter =
336:                     Box::new(names_filter.or(user_client::name.ilike(format!("%{name}%"))));
337:             }
338:             query_filters = Box::new(query_filters.and(names_filter));
339:         }
340: 
341:         if let Some(updated_at_from) = self.updated_at_from
342:             && let Some(date) = NaiveDate::parse_from_str(&updated_at_from, NAIVE_DATE_FORMAT)
                        ^
343:                 .ok()
344:                 .and_then(|datetime| datetime.and_hms_opt(0, 0, 0))
345:         {
346:             query_filters = Box::new(query_filters.and(user_client::updated_at.ge(date)));
347:         }
348: 
349:         if let Some(updated_at_to) = self.updated_at_to
350:             && let Some(date) = NaiveDate::parse_from_str(&updated_at_to, NAIVE_DATE_FORMAT)
351:                 .ok()
352:                 .and_then(|datetime| datetime.and_hms_opt(0, 0, 0))
10:49:47.874 ERROR Unable to parse file: directory/src/package/manager_per_client/manager_per_client.controller.rs
10:49:47.875 ERROR Parse error at line 200 column 16:
190:                 .iter()
191:                 .find(|manager| item.staff_id.is_some_and(|staff_id| staff_id == manager.id))
192:                 .cloned();
193: 
194:             Some(ClientWithoutManagerContent { client, manager })
195:         })
196:         .collect();
197: 
198:     // Envoi d'une alerte à twister quand des clients n'ont pas de manager
199:     if !response.is_empty()
200:         && let Some(err) = call_proto(
                    ^
201:             MailingClient::send_email,
202:             mailing::CreateEmail {
203:                 key: format!("directory/clients-without-manager/{:?}", get_current_date()),
204:                 to: String::from("twister@davidson.fr"),
205:                 reply_to: String::new(),
206:                 cc: vec![],
207:                 bcc: vec![],
208:                 language: String::from("Fr"),
209:                 template: String::from("ClientsWithoutManager"),
210:                 planned_at: Some(convert_naive_date_time_into_prost_wkt_types_time_stamp(
10:49:48.021 INFO  Sensor RustSensor [communityrust] (done) | time=20675ms

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions