There are lots of automated programming assessment systems but none of them supports both static and dynamic evaluation at the same time. Most of the systems focus on dynamically checking the correctness of the program's outcome or simply checking the syntax error of the program code. On the other hand, code quality is an important index of program measurement and most students only pay attention to the correctness of their programs but neglect to maintain code quality.Current code-quality-related studies were conducted for teaching about such concepts during in-person courses, they are inefficient for the online courses during the COVID-19 pandemic where the teachers are difficult to give face-to-face feedback to students. Further, it is burdensome work to manually grade students' programming quality for the teachers.In order to help students to improve their programming skills and quality efficiently, this dissertation presents a web-based framework for comprehensively assessing students' programming assignments. Once a student's program was submitted to the framework, it firstly will be checked for the correctness of code syntax and output. Then the student can further inspect code quality issues (CQIs) of the program. Both correctness check and code quality detection are automatically conducted and the feedback will be given back to the student immediately. The detailed suggestions of how to fix CQIs generated by the framework can help the student to improve code quality by him/herself.In addition, the proposed framework supports a collaborative sandbox for the teachers to help students to solve programming troubles online. The sandbox allows the participants to share program code, modify or mark changes, and check the program's correctness. Such a feature is helpful during online courses where the teachers are difficult to help students in person.There are three major subsystems in the framework: an online judge named neoESPA, a code quality detector named CQx, and a collaborative programming environment named CodeHelper. NeoESPA is used for dynamically checking the correctness of the submitted program based on several predefined criteria. it has been developed since 2015 and successfully served for evaluating students' programming assignments for 19 courses during the past six years. CQx is developed based on a widely used code quality management tool called SonarQube. The rules used for code quality detection in CQx are summarized from standard coding guidelines and professional manuals to fully cover all aspects of code quality. CodeHelper supports real-time communication between the teachers and students to break the limitations of the teacher-student interaction in online courses. Teachers can use it to whether assist students to conduct code in a form of pair programming or answer the questions related to students' code.The controlled experiment indicates that there were various CQIs in the past. By applying the framework in the online courses during the COVID-19 pandemic, on average, 93\% of the detected CQIs were solved by students. Meanwhile, the teachers have helped the students who faced difficulties during the programming lab sessions 56 times. Based on the students' survey, on average, 95.5\% of students think the framework is helpful for learning programming and 93.2\% of them want to use it in future courses. Further, the classified typical CQIs and most frequent students' programming troubles can be used to optimize the programming curriculum to enhance such knowledge in future programming education.