Ho il seguente codice nel mio programma e sto eseguendo SonarQube 5 per la verifica della qualità del codice su di esso dopo averlo integrato con Maven.Sonar che si lamenta di registrare e rilanciare l'eccezione
Tuttavia, Sonar si lamenta che io dovrei o registrare o riscrivere questa eccezione.
Cosa mi manca qui? Non sto già registrando l'eccezione?
private boolean authenticate(User user) {
boolean validUser = false;
int validUserCount = 0;
try {
DataSource dataSource = (DataSource) getServletContext().getAttribute("dataSource");
validUserCount = new MasterDao(dataSource).getValidUserCount(user);
} catch (SQLException sqle) {
LOG.error("Exception while validating user credentials for user with username: " + user.getUsername() + " and pwd:" + user.getPwd());
LOG.error(sqle.getMessage());
}
if (validUserCount == 1) {
validUser = true;
}
return validUser;
}
forse è lamentarsi che si sta accedendo un messaggio, ma non l'eccezione stessa, che ti fa perdere la potenzialmente utile traccia dello stack dell'eccezione. Ad ogni modo, dovresti assolutamente lanciare un'eccezione qui e segnalare un problema all'utente, piuttosto che fare come se tutto fosse andato normalmente e restituire la stessa cosa come se le credenziali dell'utente fossero errate. Anche la registrazione di una password non è una buona idea: un grosso problema di sicurezza. –
Non si sta registrando un messaggio e l'eccezione in un'unica istruzione. Pertanto, altre voci di registro potrebbero trovarsi tra entrambi i messaggi nel registro del server, nascondendo la forte connessione di entrambi questi messaggi. E potrebbe esserci un'eccezione generata dalla prima istruzione del registro che nasconde le informazioni contenute nel secondo. – SpaceTrucker