Qualcuno può immaginare quando questo codice:dovrebbe il metodo MAIN copiare gli argomenti di input?
public static void main(final String[] args) {
// do something
}
dovrebbe diventare questa:
public static void main(final String[] args) {
String[] argsCopy = doCopy(args);
// do something
}
(Nella nostra società abbiamo una regola Sonar che forze come di coping o argomenti per tutti i metodi.) Posso immaginare perché può essere importante per i metodi standard, ma non trovo alcun vantaggio di averlo fatto all'inizio del metodo principale degli strumenti. Mi sto perdendo qualcosa?
Ovviamente è necessario utilizzare le lingue in cui è impossibile modificare lo stato dei chiamanti. Detto questo, è scarso che lo strumento non riconosca se l'argomento è effettivamente mutato. – Ingo
alcune discussioni sono qui: http://stackoverflow.com/questions/11580948/sonar-violation-security-array-is-stored-directly –
Non sono un appassionato di questa regola del sonar. Inoltre, considero questa regola una cattiva idea. Cosa succede se voglio memorizzare un grande byte di dati binari [] nei miei oggetti? A mio avviso, copiare solo dopo essere stato costruito da un flusso è inutile. –