

####    Verificação do uso correcto do mecanismo de excepções

	 Uso do mecanismo de excepção como controlo de fluxo, lançar uma excepção demasiado genérica, apanhar uma excepção num bloco catch e lançar uma nova excepção do mesmo tipo ou a mesma excepção 

[ERROR] 067/bci/core/Library.java:62:	AvoidThrowingRawExceptionTypes:	Deve evitar a criação de excepções demasiado genéricas.
[ERROR] 067/bci/core/Parser.java:65:	POAvoidCatchingGenericException:	Evitar apanhar excepções demasiado genéricas (RuntimeException and Exception) em blocos try-catch.

	 Blocos catch's iguais ou vazios (incluindo neste casos blocos try e finaly vazios)

[ERROR] 067/bci/core/Library.java:184:	EmptyCatchBlock:	Evitar blocos catch vazios.
[ERROR] 067/bci/core/Library.java:207:	EmptyCatchBlock:	Evitar blocos catch vazios.
[ERROR] 067/bci/core/Library.java:232:	EmptyCatchBlock:	Evitar blocos catch vazios.
Total de erros:  5


####    Quebra do encapsulamento


Nada a assinalar


####    Verificação de alguns aspectos de qualidade do código


Nada a assinalar


####    Verificação da boa aplicação do mecanismo de herança


Nada a assinalar


####    Verificação de Convenções de Codificação

[ERROR] 067/bci/core/Library.java:34:18: O atributo com o nome 'date'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
[ERROR] 067/bci/app/user/User.java:13:31: A constante com o nome 'SerialVersionUID' deve condizer com o padrão '^[A-Z][A-Z0-9]*(_[A-Z]+)*$'. [ConstantName]
Total de erros:  2

####   Verificação do processo de serialização

Iniciando a auditoria...
[INFO] 067/bci/core/LibraryManager.java:79 ObjectOutputStream criado no método 'public void save()' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 067/bci/core/LibraryManager.java:110 ObjectInputStream criado no método 'public void load(String filename)' da classe 'LibraryManager'. [CheckSerialization]
Auditoria completa.

####  Verificação do princípio de desenho aberto/fechado

Iniciando a auditoria...
[WARN] 067/bci/app/work/Category.java:8 Possível mau desenho: diferenciação do comportamento com base em comparação de enumerados (expressão 'this' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 067/bci/core/Library.java:146 Possível mau desenho: diferenciação do comportamento com base em comparação de enumerados (expressão 'user.getBehaviour()' comparada '2' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 067/bci/core/Parser.java:31 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'components[ ]' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
Auditoria completa.

####  Verificação de dependência app de core

Iniciando a auditoria...
[ERROR] 067/bci/app/date/Date.java:48 Instanciação de classe do domínio 'UnrecognizedEntryException' não permitido na camada da aplicação. [POCreateCoreEntitiesInApp]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  Verificação do uso desnecessário de super


Nada a assinalar


####  Verificação de dependência de core de app

Iniciando a auditoria...
[WARN] 067/bci/core/Library.java:3 import 'bci.app.work.Work' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:4 import 'bci.app.work.Book' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:5 import 'bci.app.work.Dvd' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:6 import 'bci.app.work.Category' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:7 import 'bci.app.creator.Creator' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:8 import 'bci.app.user.User' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:9 import 'bci.app.user.UserBehaviour' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:10 import 'bci.app.date.Date' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:13 import 'bci.app.exception.NoSuchUserException' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:14 import 'bci.app.exception.NoSuchWorkException' não permitido na classe 'Library'. [POCoreImport]
[WARN] 067/bci/core/Library.java:15 import 'bci.app.exception.NoSuchCreatorException' não permitido na classe 'Library'. [POCoreImport]
[ERROR] 067/bci/core/Library.java:34 O tipo ('Date') da variável 'date' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:34 instanciação do tipo 'Date' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:75 O tipo ('Creator') da variável 'creator' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:77 instanciação do tipo 'Creator' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:94 O tipo ('User') da variável 'user' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:94 instanciação do tipo 'User' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:114 O tipo ('Dvd') da variável 'dvd' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:114 instanciação do tipo 'Dvd' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:132 O tipo ('Book') da variável 'book' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:132 instanciação do tipo 'Book' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:134 O tipo ('Creator') da variável 'creator' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:146 Classe 'NoSuchUserException', definida na camada de aplicação, não pode ser indicada na lista de excepções de um método de uma entidade do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:147 O tipo ('User') da variável 'user' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:169 instanciação do tipo 'NoSuchUserException' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:181 O tipo ('User') da variável 'user' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:198 Classe 'NoSuchWorkException', definida na camada de aplicação, não pode ser indicada na lista de excepções de um método de uma entidade do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:204 O tipo ('Work') da variável 'work' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:221 Classe 'NoSuchCreatorException', definida na camada de aplicação, não pode ser indicada na lista de excepções de um método de uma entidade do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:223 O tipo ('Creator') da variável 'creator' não é permitido em entidades do domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:225 instanciação do tipo 'NoSuchCreatorException' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 067/bci/core/Library.java:229 O tipo ('Work') da variável 'work' não é permitido em entidades do domínio. [POCoreImport]
[WARN] 067/bci/core/Parser.java:3 import 'bci.app.work.Category' não permitido na classe 'Parser'. [POCoreImport]
[WARN] 067/bci/core/Parser.java:4 import 'bci.app.creator.Creator' não permitido na classe 'Parser'. [POCoreImport]
[ERROR] 067/bci/core/Parser.java:80 O tipo ('Creator') da variável 'creator' não é permitido em entidades do domínio. [POCoreImport]
Auditoria completa.
O Checkstyle terminou com 22 erros.

####  Verificação do uso de membros estáticos

Iniciando a auditoria...
[INFO] 067/bci/app/user/User.java:12 Atributo estático final 'long SerialVersionUID' permitido. [POStaticMember]
[INFO] 067/bci/core/exception/ImportFileException.java:7 Atributo estático final 'String ERROR_MESSAGE' permitido. [POStaticMember]
[INFO] O número de serialVersionUID atributos estáticos definidos nas várias classes foi '14'. [POStaticMember]
Auditoria completa.

####  Verificação do nível de acesso dos atributos


Nada a assinalar


####  Verificação da necessidade da concretização de hashCode e equals


Nada a assinalar


####  Verificação de membros com o nível protected desnecessário


Nada a assinalar


####  Verificação do mecanismo de herança II: atributos duplicados e métodos que deviam ser abstractos


Nada a assinalar


####  Sumário das classes do core da aplicação

Iniciando a auditoria...
[INFO] Número total de classes definidos no core: 7, dos quais 0 private, 1 package-private, 0 protected e 6 public. [WriteClassStructure]
[INFO] Classes concretas e não excepções definidas no package core da aplicação (3): '[MyParser, LibraryManager, Library]'. [WriteClassStructure]
[INFO] Excepções definidas no package core da aplicação (4): '[ImportFileException, MissingFileAssociationException, UnrecognizedEntryException, UnavailableFileException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 25, dos quais 4 private, 2 package-private, 0 protected e 19 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 10, dos quais 10 private, 0 package-private, 0 protected e 0 public. [WriteClassStructure]
Auditoria completa.

Descrição das estruturas de dados do core do projecto

Iniciando a auditoria...
[INFO] class MyParser (  )

  ###### Atributos ###### 

    private Library _library

  ###### Métodos ###### 

    void parseFile(String filename)
    private void parseLine(String line)
    private void parseUser(String components, String line)
    private void parseDvd(String components, String line)
    private void parseBook(String components, String line)

 [WriteClassStructure]
[INFO] class LibraryManager ( public implements Serializable )

  ###### Atributos ###### 

    private Library _library
    private String _filename
    private boolean _modified

  ###### Métodos ###### 

    public boolean hasUnsavedChanges()
    public void markAsChanged()
    public void markAsSaved()
    public Library getLibrary()
    public void save()
    public void saveAs(String filename)
    public void load(String filename)
    public void importFile(String datafile)

 [WriteClassStructure]
[INFO] class Library ( public implements Serializable )

  ###### Atributos ###### 

    private int _nextWorkId
    private int _nextUserId
    private Date date
    private Map<String, Creator> _creators
    private Map<Integer, User> _users
    private Map<Integer, Work> _works

  ###### Métodos ###### 

    public int getCurrentDate()
    public void advanceDays(int days)
    public Creator registerCreator(String name)
    public int registerUser(String name, String email)
    public void registerDvd(int price, int nCopies, String title, Category category, String igac, Creator creator)
    public void registerBook(int price, int nCopies, String title, Category category, String isbn, List authors)
    public String getUserDetails(int id)
    public String getAllUserDetails()
    public String getWorkDetails(int id)
    public String getAllWorkDetails()
    public String getWorksByCreator(String creatorName)
    void importFile(String filename)

 [WriteClassStructure]
Auditoria completa.
