Skip to content

ERROR Unable to parse file #141

@imdmahajankanika

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("[email protected]"),
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

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