

####    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] 044/bci/core/MyParser.java:54:	POAvoidCatchingGenericException:	Evitar apanhar excepções demasiado genéricas (RuntimeException and Exception) em blocos try-catch.
[ERROR] 044/bci/core/MyParser.java:74:	POAvoidCatchingGenericException:	Evitar apanhar excepções demasiado genéricas (RuntimeException and Exception) em blocos try-catch.
[ERROR] 044/bci/core/MyParser.java:94:	POAvoidCatchingGenericException:	Evitar apanhar excepções demasiado genéricas (RuntimeException and Exception) em blocos try-catch.
Total de erros:  3


####    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] 044/bci/core/Dvd.java:4:20: Abreviações no nome '_IGAC' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 044/bci/core/Dvd.java:4:20: O atributo com o nome '_IGAC'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
[ERROR] 044/bci/core/Dvd.java:7:116: O parâmetro 'IGAC' deve condizer com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [ParameterName]
[ERROR] 044/bci/core/Book.java:4:20: Abreviações no nome '_ISBN' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 044/bci/core/Book.java:4:20: O atributo com o nome '_ISBN'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
[ERROR] 044/bci/core/Book.java:6:123: O parâmetro 'ISBN' deve condizer com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [ParameterName]
[ERROR] 044/bci/core/MyParser.java:68:21: Abreviações no nome 'creatorDVD' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
Total de erros:  7

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

Iniciando a auditoria...
[INFO] 044/bci/core/LibraryManager.java:50 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 044/bci/core/LibraryManager.java:68 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] 044/bci/core/Library.java:60 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'type' comparada '2' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 044/bci/core/MyParser.java:27 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


Nada a assinalar


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


Nada a assinalar


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

Iniciando a auditoria...
[WARN] 044/bci/core/Library.java:5 import 'bci.app.exception.*' não permitido na classe 'Library'. [POCoreImport]
[ERROR] 044/bci/core/Library.java:103 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] 044/bci/core/Library.java:118 instanciação do tipo 'NoSuchUserException' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 044/bci/core/Library.java:172 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] 044/bci/core/Library.java:185 instanciação do tipo 'NoSuchCreatorException' não permitido em classes da camada de domínio. [POCoreImport]
Auditoria completa.
O Checkstyle terminou com 4 erros.

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

Iniciando a auditoria...
[INFO] 044/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 '12'. [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

Iniciando a auditoria...
[ERROR] Attribute '_type' specified in superclass 'Work' duplicated in subclass 'Dvd'. [WriteClassStructure]
[ERROR] Attribute '_type' specified in superclass 'Work' duplicated in subclass 'Book'. [WriteClassStructure]
Auditoria completa.
O Checkstyle terminou com 2 erros.

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

Iniciando a auditoria...
[INFO] Número total de enumerados definidos no core: 2, dos quais 0 private, 0 package-private, 0 protected e 2 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (2): '[Category, Behaviour]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 12, dos quais 0 private, 1 package-private, 0 protected e 11 public. [WriteClassStructure]
[INFO] Classes abstractas definidas no package core da aplicação (1): '[Work]'. [WriteClassStructure]
[INFO] Classes concretas e não excepções definidas no package core da aplicação (7): '[Dvd, User, Book, MyParser, LibraryManager, Library, Creator]'. [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): 51, dos quais 4 private, 2 package-private, 0 protected e 45 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 32, dos quais 32 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] enum Category ( public )

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

    private final String _name

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

    public String getCategory()

 [WriteClassStructure]
[INFO] enum Behaviour ( public )

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

    private final String _name

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

    public String getBehaviour()

 [WriteClassStructure]
[INFO] class Dvd ( public )
  extends Work

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

    private String _IGAC
    private String _type

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

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

    private int _userId
    private String _userName
    private String _userEmail
    private boolean _active
    private int _fine
    private Behaviour _behavior

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

    public boolean isActive()
    public int getUserId()
    public String getUserName()
    public String getUserEmail()
    public int getFine()
    public Behaviour getBehaviour()

 [WriteClassStructure]
[INFO] class Book ( public )
  extends Work

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

    private String _ISBN
    private String _type

 [WriteClassStructure]
[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]  abstract class Work ( public implements Serializable )

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

    private int _idWork
    private int _total
    private String _title
    private int _price
    private int _stock
    private Category _category
    private List<Creator> _creators
    private String _code
    private String _type

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

    public int getWorkId()
    public int getStock()
    public int getTotalWorks()
    public String getType()
    public void setType(String type)
    public String getTitle()
    public int getPrice()
    public String getCategory()
    public String getCode()
    public String creatorsToString()

  ###### Subclasses  ###### 
    Dvd   Book   

 [WriteClassStructure]
[INFO] class LibraryManager ( public )

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

    private Library _library
    private String _fileName
    private int _date

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

    public void save()
    public void saveAs(String filename)
    public void load(String filename)
    public Library getLibrary()
    public void importFile(String datafile)
    public int getDate()
    public void setDate(int advanceDays)
    public String getFileName()
    public void setFileName(String filename)
    public boolean unsavedChanges()

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

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

    private List<User> _userList
    private List<Work> _workList
    private List<Creator> _creators
    private int _userId
    private int _workId
    private boolean _state

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

    void importFile(String filename)
    public void createCreator(String creatorName)
    public void createUser(String userName, String userEmail)
    public Work createWork(String title, List workCreators, String type, Category category, int price, int total, String code)
    public Creator stringToCreator(String creatorName)
    public String getUser(int idSearch)
    public List<User> getUsers()
    public int compare(User u1, User u2)
    public int getUId()
    public String getWork(int idSearch)
    public String getWorks()
    public String getCreatorWorks(String creatorName)
    public void setState(Boolean state)
    public boolean getState()

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

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

    private String _creatorName
    private int _workNumber
    private List<Work> _criations

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

    public List<Work> getAllWorks()
    public String getCreatorName()
    public void accWorkNumb()
    public void setCriations(Work newWork)
    public List<Work> getOrdCria()
    public int compare(Work w1, Work w2)

 [WriteClassStructure]
Auditoria completa.
