Rumah  >  Artikel  >  Isu sonar: tentukan pemalar dan bukannya menyalin literal ini

Isu sonar: tentukan pemalar dan bukannya menyalin literal ini

WBOY
WBOYke hadapan
2024-02-10 08:15:081008semak imbas

Masalah sonar sentiasa menjadi salah satu masalah yang sering dihadapi oleh pengaturcara dalam pembangunan PHP. Apabila bekerja dengan teks, ramai pembangun digunakan untuk menyalin dan menampal teks, tetapi terdapat beberapa masalah yang mungkin berlaku dengan berbuat demikian. Editor PHP Xiaoxin mencadangkan bahawa untuk mengelakkan masalah ini, adalah lebih baik untuk menentukan teks yang perlu digunakan semula sebagai pemalar. Ini bukan sahaja akan meningkatkan kebolehselenggaraan kod, tetapi juga mengurangkan kemungkinan ralat dan meningkatkan kualiti kod. Dalam artikel ini, kami akan membincangkan isu sonar secara terperinci dan menyediakan beberapa penyelesaian untuk membantu pembangun menangani masalah ini dengan lebih baik.

Kandungan soalan

Fail java dalam projek saya mempunyai baris log berikut 3 kali==

log.info(
                    "Queuing workflow message with ID {} and shardedDatabaseId {}",
                    workflowQueueMessageString,
                    shardedDatabaseId);

Ini menimbulkan masalah serius untuk sonar==

Tentukan pemalar dan bukannya mengulangi teks ini "Mesej aliran kerja baris gilir menggunakan id {} dan shardid {}" sebanyak 3 kali.

Saya dapat memahami sebab kesilapan ini. Tetapi rentetan sebenarnya bukan pemalar dan mempunyai ruang letak seperti {}. Jadi bagaimana untuk menyelesaikan isu pelaporan sonar ini dengan betul.

Penyelesaian

Rentetan ini ialah format mesej log. Walaupun mesej itu sendiri tidak tetap, format adalah tetap.

Hanya mengisytiharkannya (format) sebagai pembolehubah - muktamad, statik, apa sahaja yang sesuai dengan kes penggunaan.

String messageFormat = "Queuing workflow message with ID {} and shardedDatabaseId {}";
log.info(messageFormat, workflowQueueMessageString, shardedDatabaseId);
...
log.info(messageFormat, workflowQueueMessageString, shardedDatabaseId);
...
log.info(messageFormat, workflowQueueMessageString, shardedDatabaseId);

Atas ialah kandungan terperinci Isu sonar: tentukan pemalar dan bukannya menyalin literal ini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam